[論文レビュー] Learning Inputs in Greybox Fuzzing
本稿では、過去の実行から最適なプログラム入力を学習し、高いカバレッジまたは脆弱性を引き起こすパスへ探索を誘導する、新しいグレーボックスファジング手法を提案する。分岐の反転やオーバーフロー状態への近接度を測るユーザー定義のコスト指標を最小化することで、従来のファジングと比較してパスカバレッジを最大3倍に、バグ検出率を最大38%向上させ、しばしば数個のオーダー早く実行可能である。
Greybox fuzzing is a lightweight testing approach that effectively detects bugs and security vulnerabilities. However, greybox fuzzers randomly mutate program inputs to exercise new paths; this makes it challenging to cover code that is guarded by complex checks. In this paper, we present a technique that extends greybox fuzzing with a method for learning new inputs based on already explored program executions. These inputs can be learned such that they guide exploration toward specific executions, for instance, ones that increase path coverage or reveal vulnerabilities. We have evaluated our technique and compared it to traditional greybox fuzzing on 26 real-world benchmarks. In comparison, our technique significantly increases path coverage (by up to 3X) and detects more bugs (up to 38% more), often orders-of-magnitude faster.
研究の動機と目的
- ランダムな変異によるグレーボックスファジングの非効率性を是正すること。これは、しばしば既知のパスを再走行し、複雑または保護されたコード領域を無視する傾向がある。
- 実行を最適なプログラム行動へ誘導する入力を学習することで、グレーボックスファジングにおけるパスカバレッジと脆弱性検出を向上させること。
- 特定の分岐のトリガーまたはオーバーフローの発生など、望ましいプログラム状態への近接度に基づいて「最適」な実行を定義するパrametricコスト指標フレームワークを導入すること。
- 任意の変異に依存せず、過去の実行から具体的な入力値を学習することで、より速く効果的な探索を可能にすること。
- 実行トレースから入力を学習することで、シンボリック実行や静的解析を必要とせずに、従来のグレーボックスファジングを上回ることを実証すること。
提案手法
- 分岐条件の反転や脆弱性の発生など、ターゲットプロパティを満たすまでの近さを測るコスト指標を、各プログラム実行に対して定義する。
- 複数回のプログラム実行から得たコスト値を収集し、入力-コストペアのデータセットを作成する。ここで入力はプログラムの入力、コストは指標値である。
- 入力-コストペアに対して回帰モデル(例:勾配ブースティング木)を学習させ、新しい入力のコストを予測可能にすることで、コスト指標を最小化する可能性の高い入力を特定する。
- 学習済みモデルを最適化して、最小コストを予測する入力を生成することで、ファジャーが最適な実行へ誘導されるようにする。
- 学習された入力をグレーボックスファージャーのシードプールに統合し、変異と実行の優先順位を高くすることで、新しいパスへの収束を加速する。
- 学習モデルがより良い入力を見つけられなかった場合には、従来のグレーボックスファジングにフォールバックすることで、堅牢性と完全性を保証する。
実験結果
リサーチクエスチョン
- RQ1過去のプログラム実行から学習することで、グレーボックスファジングの新規コードパス探索効果が向上するか?
- RQ2コスト指標に基づく入力学習は、ランダム変異と比較してパスカバレッジと脆弱性検出においてどのように異なるか?
- RQ3提案手法は、シンボリック実行や静的解析を一切使用せず、より高いカバレッジと高速なバグ発見を達成できるか?
- RQ4分岐カバレッジや脆弱性トリガーのような望ましいプログラム行動へ誘導するのに、どの種類のコスト指標が最も効果的か?
- RQ5学習ベースのアプローチの性能は、多様な実世界ベンチマークにおいてどのようにスケーリングするか?
主な発見
- 提案手法の学習ベースグレーボックスファジングは、26の実世界ベンチマークにおいて、従来のグレーボックスファジングと比較してパスカバレッジを最大3倍に向上させた。
- この手法は、標準のグレーボックスファジングと比較して最大38%多くバグを検出しており、多くの脆弱性が数個のオーダー早く発見された。
- 学習された入力により、到達が難しいコードパスを直接標的にすることで、初回クラッシュや脆弱性トリガーまでの時間が顕著に短縮された。
- すべての26のベンチマークでベースライングレーボックスファジングを上回り、カバレッジとバグ検出の両面で一貫した改善が確認された。
- コスト指標の使用により、算術オーバーフローのトリガー、条件分岐の発動といった特定のプログラム行動への正確な誘導が可能になった。
- 学習モデルが最適な入力を見つけられなかった場合でも、ファジングが滑らかに従来手法にフォールバックするため、堅牢で効果的な性能を維持した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。