[論文レビュー] Beyond Good and Evil: Formalizing the Security Guarantees of Compartmentalizing Compilation
本稿では、完全抽象化をコンpartimentalizedシステムに拡張する安全なコンパートメント化コンパイル(SCC)という形式的なセキュリティ特性を導入し、攻撃者が個々のコンポonentを侵害してもコンポonentの隔離が破られないことを保証する。著者らは、安全でない命令型言語からコンパートメント化された抽象マシンへのコンパイラについてSCCを証明し、現実的な攻撃者モデル下での安全なコンポonent相互作用に対する形式的保証を確立した。
Compartmentalization is good security-engineering practice. By breaking a large software system into mutually distrustful components that run with minimal privileges, restricting their interactions to conform to well-defined interfaces, we can limit the damage caused by low-level attacks such as control-flow hijacking. When used to defend against such attacks, compartmentalization is often implemented cooperatively by a compiler and a low-level compartmentalization mechanism. However, the formal guarantees provided by such compartmentalizing compilation have seen surprisingly little investigation. We propose a new security property, secure compartmentalizing compilation (SCC), that formally characterizes the guarantees provided by compartmentalizing compilation and clarifies its attacker model. We reconstruct our property by starting from the well-established notion of fully abstract compilation, then identifying and lifting three important limitations that make standard full abstraction unsuitable for compartmentalization. The connection to full abstraction allows us to prove SCC by adapting established proof techniques; we illustrate this with a compiler from a simple unsafe imperative language with procedures to a compartmentalized abstract machine.
研究の動機と目的
- コンパイラ変換と低レベルの隔離メカニズムを組み合わせたコンパートメント化コンパイルが提供するセキュリティ保証を形式化すること。
- 標準的な完全抽象化がコンパートメント化をモデル化する際の限界を特定し、それらを解決するための新しいセキュリティ特性を提案すること。
- メモリ安全でない言語における安全なコンポonent相互作用を形式的に扱うためのフレームワークを提供すること。
- 安全でない命令型言語からコンパートメント化された抽象マシンへのコンパイラの具体例を通じて、SCCの実現可能性を示すこと。
- Cコンパイラや実際のハードウェアによる強制メカニズムを含む実用的システムへのSCCの拡張の基盤を築くこと。
提案手法
- 著者らは、相互に信頼できないコンポonentを有するコンパートメント化システムに特化した、完全抽象化の強化版として、安全なコンパートメント化コンパイル(SCC)を定義した。
- 標準的な完全抽象化がコンパートメント化の文脈で示す三つの主要な限界を同定した:コンポonent隔離の欠如、権限モデルの不在、およびソース言語における未定義動作の扱いの不備。
- SCCは、標準的な完全抽象化の性質を拡張し、コンポonent境界、権限分離、およびソース言語内での攻撃者能力を考慮することで形式化された。
- 証明技法は、論理的関係や段階インデックスモデルといった、既存の完全抽象化の手法を、コンポonentの挙動が侵害された場合にも適用可能になるように適応した。
- 手続きを備えた単純な安全でない命令型言語からコンパートメント化された抽象マシンへのプロトタイプコンパイラを実装し、Coqを用いてSCCを満たすことを証明した。
- 本アプローチは、タグベースのリファレンスマネージャーやプロセスレベルのサンドボックス化をターゲットとするCコンパイラなど、実世界のシステムへも拡張可能であるように設計された。
実験結果
リサーチクエスチョン
- RQ1メモリ安全でないコードが存在する状況下で、完全抽象化をどのように変更すれば、コンパートメント化コンパイルのセキュリティ保証を形式的に捉えることができるか?
- RQ2相互に信頼できないコンポonentを有するコンパートメント化システムに標準的な完全抽象化を適用する際の主な限界は何か?
- RQ3攻撃者が個々のコンポonentを侵害しても、コンポonent境界を越えて脱出できないことを保証する形式的セキュリティ特性を定義できるか?
- RQ4ソース言語における未定義動作を、コンパートメント化コンパイルの形式的セキュリティモデル内でどのように扱えるか?
- RQ5プロセスサンドボックス、SFI、能力機械といった実用的強制メカニズムへのSCCの拡張には、どのような意味合いがあるか?
主な発見
- 本稿では、相互に信頼しないコンポonentを有するコンパートメント化システムに完全抽象化を拡張する安全なコンパートメント化コンパイル(SCC)を形式的セキュリティ特性として成功裏に定義した。
- SCCは、侵害されたコンポonentがソース言語で表現可能な挙動に制限されることを形式的に捉え、コンポonent境界を越えた特権昇格を防ぐ攻撃者モデルを明確にした。
- 手続きを備えた安全でない命令型言語からコンパートメント化された抽象マシンへのコンパイラがSCCを満たすことを証明し、本アプローチの実現可能性を示した。
- 証明は、論理的関係や段階インデックス化といった既存の技法を、コンポonent隔離と未定義動作の取り扱いに適応することで行われた。
- このフレームワークは拡張可能であり、タグベースのリファレンスマネージャーやハードウェアによる強制メカニズムをターゲットとするCコンパイラなど、実世界のシステムへも適用可能である。
- 本研究は、ウェブブラウザーやオペレーティングシステムのコンponentsにおける安全なコンパイルの形式的検証への道を開いた。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。