Skip to main content
QUICK REVIEW

[論文レビュー] Combining Static and Dynamic Analysis for Vulnerability Detection

Sanjay Rawat, Dumitru Ceara|arXiv (Cornell University)|May 16, 2013
Security and Verification in Computing参考文献 25被引用数 6
ひとこと要約

本稿では、Cプログラムにおけるバッファオーバーフロー脆弱性を検出するためのハイブリッド脆弱性検出手法を提示する。静的トレース分析と動的遺伝的アルゴリズムに基づく入力生成を組み合わせ、taint依存シーケンス(TDS)を用いて入力生成をガイドし、実行時ステートメント頻度スペクトルに基づくフィットネス関数を採用することで、攻撃可能なパスに的を絞った検出を実現した。従来のファズィングや記号実行と比較して、より高速かつ正確にクラッシュを再現できた。

ABSTRACT

In this paper, we present a hybrid approach for buffer overflow detection in C code. The approach makes use of static and dynamic analysis of the application under investigation. The static part consists in calculating taint dependency sequences (TDS) between user controlled inputs and vulnerable statements. This process is akin to program slice of interest to calculate tainted data- and control-flow path which exhibits the dependence between tainted program inputs and vulnerable statements in the code. The dynamic part consists of executing the program along TDSs to trigger the vulnerability by generating suitable inputs. We use genetic algorithm to generate inputs. We propose a fitness function that approximates the program behavior (control flow) based on the frequencies of the statements along TDSs. This runtime aspect makes the approach faster and accurate. We provide experimental results on the Verisec benchmark to validate our approach.

研究の動機と目的

  • 純粋な静的または動的脆弱性検出の限界を解消するため、両方のアプローチを統合すること。
  • taint依存シーケンス(TDS)を用いて静的解析の誤検出を低減し、動的解析のパスカバレッジを向上させること。
  • バッファオーバーフロー脆弱性を引き起こす悪意ある入力を自動生成すること。
  • 成功した攻撃時のクラッシュ動作とスタック内容の分析を通じて、実行可能性に関する洞察を提供すること。

提案手法

  • 静的解析(STAC)はtaintデータフロー解析を実行し、TDS(ユーザー入力から脆弱なステートメントへのパス)を特定する。
  • TDSは動的入力生成をガイドし、関連するプログラムパスに焦点を当てる。
  • 遺伝的アルゴリズム(TAGA)は、実行時ステートメント頻度スペクトルに基づくフィットネス関数を最大化するように入力を進化させる。
  • フィットネス関数は実行トレースをターゲットTDSと比較し、同じ制御フローパattersに従う入力を報酬付ける。
  • 実行時トレース収集のため、プログラム実行をインストルメント化し、頻度スペクトル解析に用いる。
  • クラッシュ検出が発生するとデバッグが起動され、スタック内容の分析と実行可能性の評価が行われる。

実験結果

リサーチクエスチョン

  • RQ1taint依存シーケンス(TDS)は、動的解析における脆弱性を引き起こす入力の探索空間を効果的に縮小できるか?
  • RQ2実行時ステートメント頻度に基づくフィットネス関数は、遺伝的アルゴリズムに基づく入力生成の効率性と正確性をどのように向上させるか?
  • RQ3静的・動的解析を統合することで、記号実行やランダムファズィングと比較して、実行可能なバッファオーバーフローの検出においてどの程度優れているか?
  • RQ4クラッシュ関連の実行時データを分析することで、本手法は実行可能性に関する行動可能な洞察を提供できるか?
  • RQ5本手法は、ネストされたまたは複合的なIF条件を含む複雑な制御構造を入力生成でどのように処理するか?

主な発見

  • ハイブリッドアプローチは、Verisecベンチマークスイートにおいてバッファオーバーフロー脆弱性を正常に検出でき、従来のファズィングと比較して効率が向上した。
  • TDSの使用により、脆弱なステートメントへの実際のtaint伝搬があるパスに焦点を当てることで、探索空間が顕著に縮小された。
  • 周波数スペクトルベースのフィットネス関数により、制御フロー行動の近似が可能になり、遺伝的アルゴリズムの収束が迅速化した。
  • 成功した攻撃実行により発生したクラッシュは、スタック内容の詳細な分析を可能にし、実行可能性に関する直接的な手がかりを提供した。
  • パスガイドと動的フィードバックを組み合わせることで、純粋にカバレッジ駆動または制約解決に基づく手法よりも優れた性能を示した。
  • 本手法は複雑な制御構造の処理において有望な成果を示したが、ソースコードにおける複合IF条件の処理には課題が残っている。

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

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

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

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