Skip to main content
QUICK REVIEW

[論文レビュー] The use of machine learning with signal- and NLP processing of source code to fingerprint, detect, and classify vulnerabilities and weaknesses with MARFCAT

Serguei A. Mokhov|arXiv (Cornell University)|Oct 12, 2010
Advanced Malware Detection Techniques参考文献 16被引用数 14
ひとこと要約

本論文では、信号処理および自然言語処理(NLP)技術を用いて、C、C++、Javaのコードにおけるソフトウェア脆弱性および弱みをフィンガープリントし、検出・分類する機械学習ベースの静的コード解析ツール、MARFCATを提示する。ソースコードを信号として扱い、MARFフレームワークを活用することで、複数のソフトウェアプロジェクトにおいてCVEおよびCWE脆弱性を高精度に検出することができ、SATE 2010ワークショップの実際の事例で検証された結果が得られた。

ABSTRACT

We present a machine learning approach to static code analysis and fingerprinting for weaknesses related to security, software engineering, and others using the open-source MARF framework and the MARFCAT application based on it for the NIST's SATE2010 static analysis tool exposition workshop found at http://samate.nist.gov/SATE2010Workshop.html

研究の動機と目的

  • パース不要の、言語に依存しない機械学習駆動のアプローチを用いて、ソースコード内のソフトウェア脆弱性を検出・分類すること。
  • 信号処理の過程で失われる可能性がある行番号情報を保持する課題に対処すること。これは、実行可能な脆弱性レポート作成に不可欠である。
  • SATE 2010ワークショップの実際の脆弱なソフトウェア例(Wireshark、Chrome、Tomcatなど)を用いて、手法を検証すること。
  • パッチ適用済みバージョンにおける修正の有効性を評価しながら、既知の脆弱性(CVE/CWE)を自動検出すること。
  • 信号処理およびNLP処理をソースコードに適用することで、スケーラブルで高速かつ拡張性のある静的解析の実現可能性を示すこと。

提案手法

  • コードをn-gram(n=2)を用いて1次元の信号として扱い、コードを数値波形に変換することで信号処理を可能にする。
  • スペクトル解析およびNLP技術を用いて、構文的・意味的パースを避けて、コード信号からパターンを抽出する。
  • MARFフレームワークを用いて、信号処理および機械学習アルゴリズムのパイプラインを実装し、分類を実現する。
  • 信号変換の過程で失われた行番号情報を補完するために、機械学習的手法を用いて脆弱性の行番号を推定する。
  • 既知の脆弱性(CVE/CWE)を含む完全なファイルを学習データとして用い、新しいコードが脆弱であるか否かを分類する。
  • 既存のCVEおよびCWEデータベースを知識ベースとして活用し、検出されたパターンを既知の脆弱性にマッピングする。

実験結果

リサーチクエスチョン

  • RQ1機械学習を用いて、信号としてのソースコードを効果的にモデル化し、セキュリティ脆弱性を検出できるか?
  • RQ2機械学習は、Wireshark、Chrome、Tomcatなどの実世界のソフトウェアプロジェクトにおいて、既知の脆弱性(CVEおよびCWE)をどれほど正確に同定できるか?
  • RQ3信号処理によってそのような詳細が失われるにもかかわらず、脆弱性の行番号情報を回復できるか?
  • RQ4この手法は、異なるプログラミング言語およびバイナリ形式にわたって、どれほど言語に依存せずスケーラブルに適用できるか?
  • RQ5このアプローチを用いてコードベースを事前スキャンし、より深い分析のための潜在的脆弱性を特定できるか?

主な発見

  • MARFCATは、Wireshark 1.2.0、Chrome 5.0.375.54、Tomcat 5.5.13において、高精度に既知のCVEおよびCWE脆弱性を検出できた。
  • システムは、脆弱性が修正されたバージョン(例:Wireshark 1.2.9、Tomcat 5.5.29)を正しく同定し、修正の有効性を確認した。
  • 行番号の回復は、専用の機械学習および数学的推定手法を用いて達成され、レポートの有用性が向上した。
  • 同定されたコンsumerデスクトップ上で、Wiresharkの約2,400ファイルを3分未満で処理し、高速性を実証した。
  • 言語に依存しないパース不要のアプローチにより、C、C++、Javaの間で優れた一般化性能を示した。
  • バイナリおよびバイトコード解析への応用可能性も示され、展開済みソフトウェアにおけるセキュリティ弱みをウイルススキャンと同様に検出可能である可能性を示した。

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

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

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

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