[論文レビュー] Compositional Fuzzing Aided by Targeted Symbolic Execution
Wildfireは、自動的なシード生成、孤立関数におけるカバレッジガイドド・ファジング、および標的付きシンボリック実行を組み合わせることで、利用可能な脆弱性を特定・検証する新しい構成的ファジングフレームワークである。深く到達が難しい関数における深いコードカバレッジと構成的妥当性分析を可能にすることで、10%の時間で最先端のツールよりも高い脆弱性検出率を達成し、正確なコールチェーン検証により誤検出を低減する。
Guided fuzzing has, in recent years, been able to uncover many new vulnerabilities in real-world software due to its fast input mutation strategies guided by path-coverage. However, most fuzzers are unable to achieve high coverage in deeper parts of programs. Moreover, fuzzers heavily rely on the diversity of the seed inputs, often manually provided, to be able to produce meaningful results. In this paper, we present Wildfire, a novel open-source compositional fuzzing framework. Wildfire finds vulnerabilities by fuzzing isolated functions in a C-program and, then, using targeted symbolic execution it determines the feasibility of exploitation for these vulnerabilities. Based on our evaluation of 23 open-source programs (nearly 1 million LOC), we show that Wildfire, as a result of the increased coverage, finds more true-positives than baseline symbolic execution and fuzzing tools, as well as state-of-the-art coverage-guided tools, in only 10% of the analysis time taken by them. Additionally, Wildfire finds many other potential vulnerabilities whose feasibility can be determined compositionally to confirm if they are false-positives. Wildfire could also reproduce all of the known vulnerabilities and found several previously-unknown vulnerabilities in three open-source libraries.
研究の動機と目的
- 大規模なCプログラムの深く到達が難しい関数における最先端ファイザーの限られたコードカバレッジを改善すること。
- 孤立関数に構成的分析を適用することで、シンボリック実行におけるパス爆発問題を克服すること。
- コールコンテキスト分析による実行可能性検証により、脆弱性検出における誤検出を低減すること。
- 複数コアにおける並列実行を活用することで、スケーラビリティと効率性を向上させること。
- 知りえないプログラムの自動的かつシードフリーなファジングを可能にする、インテリジェントなドライバ生成を通じて実現すること。
提案手法
- 入力フォーマットの事前知識がなくても、Cプログラム内の任意の孤立関数に対して自動的にシード入力を生成する。
- 孤立関数におけるカバレッジガイドド・ファジングを採用し、深いつながりの長いコールグラフパスを含むコードカバレッジを最大化する。
- 発見された脆弱性を関数の要約に置き換えることで要約し、構成的分析を可能にする。
- ファジングで発見された孤立関数内の脆弱性が、親(呼び出し元)関数によってトリガー可能かどうかを確認するために、標的付きシンボリック実行を適用する。
- インライン関数やリターンアドレスを含む、LLVMビットコードにおける命令レベルの距離メトリクスを用いて、シンボリック実行の精度を向上させる。
- コールグラフを下位から上位へ再帰的に解析し、main関数までに達する実行可能性チェーンを検証する。
実験結果
リサーチクエスチョン
- RQ1従来のファジングと比較して、構成的ファジングは深く到達が難しい関数におけるコードカバレッジを顕著に向上させるか?
- RQ2標的付きシンボリック実行は、孤立関数で発見された脆弱性の実行可能性を効果的に検証できるか?
- RQ3ファジングと構成的シンボリック実行を組み合わせることで、誤検出を低減しつつ、脆弱性検出率を維持または向上できるか?
- RQ4並列化と自動シード生成を活用することで、フレームワークはより高いパフォーマンスとスケーラビリティを達成できるか?
- RQ5本手法は、最先端のシンボリック実行およびファジングツールと比較して、効率性と有効性において優れているか?
主な発見
- Wildfireはベースラインのシンボリック実行およびファジングツールよりも真陽性の脆弱性を多く発見し、10%の分析時間で最先端のカバレッジガイドドツールを上回った。
- 23のオープンソースプログラム(約100万行のコード)を対象とした評価で、Wildfireは既存のツールよりも高いコードカバレッジを達成し、より多くの実行可能な脆弱性を発見した。
- 3つのオープンソースライブラリにおける16の既知脆弱性のうち15つを再現し、高い再現性と実用的応用性を示した。
- 実世界のライブラリにおいて、以前に未知であった脆弱性を複数発見し、実世界環境における有効性を検証した。
- 構成的分析により、コールコンテキストによる妥当性確認を通じて、実行可能性チェーンの正確なレポートが可能となり、誤検出が顕著に低減された。
- LLVMビットコードにおける距離メトリクスの改善を伴う、ファジングと標的付きシンボリック実行の統合により、より正確かつスケーラブルな脆弱性検証が実現した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。