[論文レビュー] Lockdown: Dynamic Control-Flow Integrity
Lockdownは、信頼できる動的ローダーからのシンボル情報を使って実行時における制御フローダイアグラムを再構築することで、レガシーバイナリオンリーエグスケーションに対して細粒度の、ライブラリ単位のCFIを動的に強制するメカニズムである。動的バイナリ翻訳、シャドウスタック保護、およびモジュールに特化した間接制御転送の強制により、32.49%(SPEC CPU2006平均)の低パフォーマンスオーバーヘッドで強力なセキュリティを実現する。
Applications written in low-level languages without type or memory safety are especially prone to memory corruption. Attackers gain code execution capabilities through such applications despite all currently deployed defenses by exploiting memory corruption vulnerabilities. Control-Flow Integrity (CFI) is a promising defense mechanism that restricts open control-flow transfers to a static set of well-known locations. We present Lockdown, an approach to dynamic CFI that protects legacy, binary-only executables and libraries. Lockdown adaptively learns the control-flow graph of a running process using information from a trusted dynamic loader. The sandbox component of Lockdown restricts interactions between different shared objects to imported and exported functions by enforcing fine-grained CFI checks. Our prototype implementation shows that dynamic CFI results in low performance overhead.
研究の動機と目的
- メモリ破壊や制御フローハイジャック攻撃に対して脆弱な、レガシーなバイナリオンリーアプリケーションにおけるセキュリティギャップを埋めること。
- ソースコードの提供や再コンパイルなしに、細粒度のライブラリ単位の制御フロー整合性(CFI)を実現すること。
- 実行時情報を利用して、間接呼び出し、ジャンプ、リターンに対して厳密な動的CFIポリシーを適用することで、攻撃表面を縮小すること。
- 動的ローディング、スレッド、共有ライブラリをサポートする実世界の環境において、実用的で低オーバーヘッドの保護を提供すること。
- 新規メトリック「動的平均間接ターゲット低減率(DAIR)」を用いて、CFIの強度を実証的に評価すること。
提案手法
- 信頼できる動的ローダーを介して共有ライブラリおよび実行可能ファイルのシンボルテーブルを用いて、実行時における制御フローダイアグラムを動的に再構築する。
- すべての間接制御転送に対して細粒度のCFIチェックを強制するために、動的バイナリ翻訳(DBT)を採用する。
- リターンオリエンテッドプログラミング(ROP)攻撃からリターン命令を保護するため、シャドウスタックを用いる。
- モジュールに特化したCFIポリシーを適用する:呼び出しは、同じモジュール内の有効な関数、または他のライブラリからインポートされた関数に制限される。
- ヒューリスティクスを用いて、エクスポートされていないコールバック関数、例外、およびテイルリカージョンのパターンを検出し、保護する。
- システムコールポリシーのチェックを強制し、すべてのシグナルがDBTによってインターセプトされることを保証することで、シグナルオリエンテッドプログラミング攻撃に対抗する。
実験結果
リサーチクエスチョン
- RQ1再コンパイルや静的解析なしに、レガシーなバイナリオンリーエグスケーションに対して動的CFIを効果的に強制できるか?
- RQ2デバッグシンボルの有無にかかわらず、実世界のバイナリに適用した場合、動的CFIの精度は静的CFIと比べてどの程度か?
- RQ3実用的でプロダクションに近い環境において、細粒度のライブラリ単位のCFIを強制した際のパフォーマンスオーバーヘッドはどの程度か?
- RQ4提案されたDAIRメトリックは、実アプリケーションにおいて時間経過に伴うCFI保護の耐性をどの程度反映しているか?
- RQ5ソースコードや正確なリロケーション情報が存在しない状況下でも、LockdownはROPやその他の制御フローハイジャック攻撃を効果的に防止できるか?
主な発見
- Lockdownは、SPEC CPU2006ベンチマークスイート上で平均32.49%のパフォーマンスオーバーヘッドを達成しており、実用的な妥当性を示している。
- 動的平均間接ターゲット低減率(DAIR)メトリックは、プログラム終了時点で平均99.71%の間接ターゲット位置の低減を示しており、CFIの高精度性を示している。
- シンボル情報が欠落しているストリップドライブラリに対しても、Lockdownは高いCFI強度を維持しており、平均95.39%のDAIRを達成しており、依然として効果的である。
- シャドウスタックにより、リターン命令ポインタが常に保護されるため、すべてのROP攻撃が効果的に防止される。
- モジュールに特化した強制により、明示的にインポートされた関数または内部の有効な関数のみが呼び出されるようになり、攻撃表面が顕著に縮小される。
- シンボルファイル(例:Ubuntu 12.04.4から取得)の使用によりCFIの精度が向上し、デバッグシンボルが利用可能な場合、DAIRは平均99.71%に達する。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。