Skip to main content
QUICK REVIEW

[論文レビュー] Code-based Vulnerability Detection in Node.js Applications: How far are we?

Bodin Chinthanet, Serena Elisa Ponta|arXiv (Cornell University)|Aug 11, 2020
Advanced Malware Detection Techniques参考文献 10被引用数 4
ひとこと要約

本稿では、npm の依存関係における JavaScript の構造を分析できるように拡張した Eclipse-Steady を用いて、Node.js アプリケーション向けのコード中心の脆弱性検出手法を提示する。65 件の SAP 開発アプリケーションのうち 18 件で脆弱なコードを検出でき、静的解析によって 5 件の既知の脆弱性を同定した。これは、動的 JavaScript 環境において静的解析が実用可能であることを示している。

ABSTRACT

With one of the largest available collection of reusable packages, the JavaScript runtime environment Node.js is one of the most popular programming application. With recent work showing evidence that known vulnerabilities are prevalent in both open source and industrial software, we propose and implement a viable code-based vulnerability detection tool for Node.js applications. Our case study lists the challenges encountered while implementing our Node.js vulnerable code detector.

研究の動機と目的

  • 不完全または不正確なメタデータに依存する npm の脆弱性検出におけるメタ検出の限界を解消すること。
  • Node.js アプリケーションにおける実際の脆弱なコード構造を特定するコード中心のアプローチを開発し、誤検出および見逃しを低減すること。
  • JavaScript の動的でイベント駆動型のコードベースに静的解析手法を適用する可能性を検証すること。
  • Node.js アプリケーションの BOM(Bill of Materials)を構築する際の課題と、依存関係の各レベルで脆弱な構造を検出する課題を理解すること。
  • 研究者および実務家が進化を続ける npm エコシステムにおける脆弱性検出を改善するにあたり得られる知見と教訓を提供すること。

提案手法

  • プログラム解析のための階層的構造モデル(パッケージ、モジュール、関数、クラス、メソッド、コンストラクタ、オブジェクト)を定義することで、Eclipse-Steady フレームワークに JavaScript をサポートさせる。
  • パッチで変更されたプログラム構造を抽出・解析し、npm 依存関係内の脆弱なコードパターンを同定する。
  • 直接的依存関係と非直接的依存関係を区別できるように、Node.js アプリケーションの BOM(Bill of Materials)を構築する。
  • 静的解析を用いて、脆弱な構造(例:メソッド、関数)がアプリケーションコード内で存在し、到達可能かどうかを検出する。
  • 65 件の SAP 開発 Node.js アプリケーションを対象とした事例研究を実施し、検出の正確性とパフォーマンスを評価する。
  • 抽象化レベル(例:MODU、FUNC、OBJT)ごとに検出を評価し、細粒度のトレードオフを分析する。

実験結果

リサーチクエスチョン

  • RQ1メタデータに依存せず、実際のコード構造を分析することで、コード中心のアプローチが Node.js アプリケーションにおける既知の脆弱性を効果的に検出できるか?
  • RQ2JavaScript の動的でプロトタイプベースのモデルにおいて、BOM を構築し、脆弱な構造を検出するにあたり、主な課題は何か?
  • RQ3イベント駆動型で非同期的な Node.js アプリケーションにおいて、静的解析が脆弱なコードパターンを同定するのにどの程度有効か?
  • RQ4トランジティブ依存関係が脆弱なコードを導入する主な要因である程度はどの程度か?また、それらをより効果的に追跡する方法は何か?
  • RQ5現代の JavaScript および npm エコシステムに既存の静的解析手法を適用するにあたり、実用的意義と限界は何か?

主な発見

  • コード中心のアプローチは、65 件の SAP 開発 Node.js アプリケーションのうち 18 件で 5 件の既知の脆弱性を検出でき、JavaScript 環境における静的解析の実用性を示した。
  • 脆弱な構造の大多数はトランジティブ依存関係に存在していた(実行時:28、テスト時:27)、開発者が間接的依存関係の可視性に欠けていることが示された。
  • 脆弱な構造の大部分はモジュール(MODU)および関数(FUNC)レベルで検出されたため、初期検出には細粒度のオブジェクト(OBJT)およびコンストラクタ(CONS)解析が必ずしも必要ではないことが示唆された。
  • 2019 年時点で npm エコシステムで報告された脆弱性は 681 件に上り、問題の規模の大きさと、より良い検出メカニズムの必要性を浮き彫りにした。
  • JavaScript の複数の関数宣言スタイルやプロトタイプベースの継承のマッピングに困難を伴い、言語モデリングの強化が求められた。
  • 結果から、静的解析ツールは ECMAScript の年次更新と Node.js の急速な進化に追いつくために進化を続けなければならないことが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。