[論文レビュー] Automatic Heap Layout Manipulation for Exploitation
本論文は、ヒープベースのバッファオーバーフローを悪用するための、ヒープレイアウト操作(HLM)の自動化のための最初のアプローチを提示する。擬似ランダムなブラックボックス探索を用いて、脆弱なバッファがターゲットデータ構造に対して相対的に配置される入力を生成する。著者らは、コード断片を組み合わせることで、望ましいヒープレイアウトを達成するように、PHPインタプリタにおけるHLMを自動化するシステム「Shrike」を提案する。これにより、最小限の手動介入で制御フローハイジャック攻撃を実現できる。
Heap layout manipulation is integral to exploiting heap-based memory corruption vulnerabilities. In this paper we present the first automatic approach to the problem, based on pseudo-random black-box search. Our approach searches for the inputs required to place the source of a heap-based buffer overflow or underflow next to heap-allocated objects that an exploit developer, or automatic exploit generation system, wishes to read or corrupt. We present a framework for benchmarking heap layout manipulation algorithms, and use it to evaluate our approach on several real-world allocators, showing that pseudo-random black box search can be highly effective. We then present SHRIKE, a novel system that can perform automatic heap layout manipulation on the PHP interpreter and can be used in the construction of control-flow hijacking exploits. Starting from PHP's regression tests, SHRIKE discovers fragments of PHP code that interact with the interpreter's heap in useful ways, such as making allocations and deallocations of particular sizes, or allocating objects containing sensitive data, such as pointers. SHRIKE then uses our search algorithm to piece together these fragments into programs, searching for one that achieves a desired heap layout. SHRIKE allows an exploit developer to focus on the higher level concepts in an exploit, and to defer the resolution of heap layout constraints to SHRIKE. We demonstrate this by using SHRIKE in the construction of a control-flow hijacking exploit for the PHP interpreter.
研究の動機と目的
- ヒープベースのメモリ破壊脆弱性の悪用におけるヒープレイアウト操作(HLM)の自動化の欠如に対処すること。
- ヒープアロケータがメモリレイアウトを制御するAPIを公開していないため、アプリケーションのAPIを介して間接的に制御しなければならないという課題を克服すること。
- 特定のヒープレイアウトを実現する入力の自動生成を可能にし、境界外のヒープアクセスの成功した悪用に必要な条件を満たすこと。
- HLMを自動化された悪用生成パイプラインに統合し、開発者がレイアウトの解決を後回しにしたまま、高レベルの悪用論理に集中できるようにすること。
- 実世界のソフトウェア、特にPHPインタプリタにおいて、本アプローチの実現可能性と有効性を実証すること。これには、新規のベンチマーキングフレームワークを用いる。
提案手法
- アプリケーション側の割り当てと解放を介してヒープレイアウトを間接的に制御する入力シーケンスを探索するための、擬似ランダムなブラックボックス探索アルゴリズムを提案する。
- 実世界のアロケータ上でHLMアルゴリズムを評価するためのベンチマーキングフレームワークを設計する。合成的および実世界のヒープレイアウトシナリオを用いる。
- レグレッションテストからコード断片を発見・組み合わせ、望ましいヒープレイアウトを達成するプログラムを構成するシステム「Shrike」を実装する。
- ヒープレイアウトを状態遷移問題としてモデル化し、各入力シーケンスがヒープ状態を変更するものとし、ターゲット構成に到達するシーケンスを探索する。
- 記号実行と制約ソルブを用いて、ソースバッファと宛先バッファが望ましい相対的位置に配置される入力を探索する方向に探索を誘導する。
- 既知のアロケータ動作(例:ベストフィット、LIFOのフリー・リスト)を活用してヒープレイアウトの結果をモデル化し、探索空間を削減する。
実験結果
リサーチクエスチョン
- RQ1擬似ランダムなブラックボックス探索は、実世界のアロケータに対してヒープレイアウト操作問題を効果的に解決できるか?
- RQ2自動入力生成は、ヒープベースの脆弱性における制御フローハイジャックに必要な正確なヒープレイアウトをどの程度達成できるか?
- RQ3アロケータ動作が複雑かつ非決定的である実世界のシステム、例えばPHPインタプリタにおいて、本アプローチの有効性はどの程度か?
- RQ4Shrikeのようなシステムは、手動でのレイアウト解析を一切行わずに、複雑なヒープレイアウトをコード断片の組み合わせで自動的に構成できるか?
- RQ5HLMを悪用開発パイプラインに統合することで、自動化された悪用生成の実現可能性と効率性はどの程度向上するか?
主な発見
- 擬似ランダムなブラックボックス探索は、合成ベンチマークにおいて高い成功率を達成し、アロケータ内部構造の事前知識がなくても有効であることが示された。
- Shrikeは、PHPインタプリタにおいて望ましいヒープレイアウトを達成する入力を効果的に生成し、制御フローハイジャック攻撃の構築を可能にした。
- 既存のコード断片から入力シーケンスを自動的に組み合わせることで、手動によるヒープレイアウト解析の必要性を大幅に削減した。
- PHPの10の異なるターゲット構造および3つのサブコンponentに対する評価により、多様なヒープレイアウト課題に対して堅牢性を示した。
- フレームワークは、アロケータの相互作用(例:サイズ別割り当て)を効果的に特定・活用し、正確なレイアウト制御を実現した。
- 本アプローチは自動化された悪用生成パイプラインへの統合が可能であり、開発者が論理に集中できる一方で、Shrikeがレイアウト制約の解決を担うことを可能にした。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。