Skip to main content
QUICK REVIEW

[論文レビュー] Stack-based Buffer Overflow Detection using Recurrent Neural Networks

William Arild Dahl, László Erdődi|arXiv (Cornell University)|Dec 30, 2020
Anomaly Detection Techniques and Applications参考文献 19被引用数 8
ひとこと要約

この論文では、アセンブリコードを自然言語として扱うことで、長短期記憶(LSTM)再帰ニューラルネットワークを用いてスタックベースのバッファオーバーフロー脆弱性を検出する手法を提案する。モデルは合成データセット上で99.00%の正しく分類された率を達成し、RNNが低レベルのコードにおける文脈的パターンを効果的に学習し、微細なバッファオーバーフローの欠陥を特定できることを示している。

ABSTRACT

Detecting vulnerabilities in software is a critical challenge in the development and deployment of applications. One of the most known and dangerous vulnerabilities is stack-based buffer overflows, which may allow potential attackers to execute malicious code. In this paper we consider the use of modern machine learning models, specifically recurrent neural networks, to detect stack-based buffer overflow vulnerabilities in the assembly code of a program. Since assembly code is a generic and common representation, focusing on this language allows us to potentially consider programs written in several different programming languages. Moreover, we subscribe to the hypothesis that code may be treated as natural language, and thus we process assembly code using standard architectures commonly employed in natural language processing. We perform a set of experiments aimed at confirming the validity of the natural language hypothesis and the feasibility of using recurrent neural networks for detecting vulnerabilities. Our results show that our architecture is able to capture subtle stack-based buffer overflow vulnerabilities that strongly depend on the context, thus suggesting that this approach may be extended to real-world setting, as well as to other forms of vulnerability detection.

研究の動機と目的

  • アセンブリコードが機械学習を用いた脆弱性検出のために自然言語として扱えるかどうかを調査すること。
  • 再帰ニューラルネットワーク(RNN)を用いてバイナリコードにおけるスタックベースのバッファオーバーフロー脆弱性を検出する可能性を評価すること。
  • RNNが、微細なバッファオーバーフローの欠陥を特定するために重要な文脈依存パターンを捉えられるかどうかを評価すること。
  • 自然言語処理(NLP)にインspiredされたモデルを低レベルのソフトウェアセキュリティ分析に適用するための概念実証を確立すること。

提案手法

  • 著者は、再帰的ニューラルネットワークの一種である長短期記憶(LSTM)ネットワークを用い、アセンブリ命令のシーケンスを処理する。
  • アセンブリコードはトークン化され、その後、密なベクトル表現に埋め込まれ、LSTMアーキテクチャに供給される。
  • バッチサイズ80、学習率$5 \cdot 10^{-5}$の2層LSTMモデルを用い、二値交差エントロピー損失を用いて分類のための学習を行う。
  • モデルは、脆弱な関数と非脆弱な関数を含む、自作のアセンブリコードサンプルデータセット上で学習される。
  • ハイパーパramータチューニングが行われ、特に学習率とバッチサイズに注力してモデル性能を最適化する。
  • 分類指標(正しく分類された率(CCR)と損失)を用いて、テストセット上でモデルを評価する。

実験結果

リサーチクエスチョン

  • RQ1アセンブリコードは、自然言語と同様にトークンのシーケンスとして効果的にモデル化可能であり、NLP技術の適用が可能か?
  • RQ2LSTMベースのモデルは、アセンブリコードにおける文脈に依存するスタックベースのバッファオーバーフロー脆弱性を検出可能か?
  • RQ3このタスクにおけるモデルの深さ(例:1層対2層LSTM)は、検出性能にどのように影響するか?
  • RQ4この脆弱性検出タスクにおける最適なパラメータ設定(学習率、バッチサイズ)は何か?

主な発見

  • 2層LSTMモデルは、テストセットで99.00%の正しく分類された率(CCR)を達成し、優れた一般化能力を示した。
  • 約17,500ステップのトレーニングを経て、モデルの性能が著しく向上し、トレーニングの停滞状態を打破した。
  • 同じトレーニング制約下で、2層LSTM構成が、より浅い1層アーキテクチャを上回る性能を示した。
  • モデルは、複雑なコードサンプルにおいても、文脈依存のバッファオーバーフローパターンを効果的に検出する強靭性を示した。
  • 低い学習率($5 \cdot 10^{-5}$)が、安定した収束と高い性能を達成するために不可欠であった。
  • 結果は、コードを言語として扱えるという仮説を支持しており、シーケンスモデリングを用いた効果的な脆弱性検出が可能であることを示している。

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

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

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

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