[論文レビュー] IskiOS: Intra-kernel Isolation and Security using Memory Protection Keys
この論文では、IskiOSと呼ばれるLinuxの変種を紹介している。IskiOSは、保護キー for ユーザースペース(PKU)を、保護キー for カーネルスペース(PKK)と呼ばれる新規のメカニズムを介してカーネルモードで活用することで、効率的なカーネル内隔離を実現する。この手法は、PKUを再利用してカーネルメモリを保護することで、実行専用メモリ(XOM)とレースフリーなシャドウスタックを実現し、マイクロベンチマークで平均11%のオーバーヘッド、フルアプリケーションワークロードでは5%未満のオーバーヘッドを達成している。
Operating system (OS) kernels such as Windows, Linux, and MacOS are vulnerable to control-flow hijacking. Defenses exist, but many require efficient intra-address space isolation. For example, execute-only memory requires read protection of code segments, and shadow stacks require write protection from buffer overwrites. Intel's Protection Keys for Userspace (PKU) could, in principle, provide the intra-kernel isolation needed to implement such features, but, when used as designed, it applies only to user-mode application code. This paper presents an unconventional approach to memory protection, allowing PKU to be used within the OS kernel on existing Intel hardware, replacing the traditional user/kernel isolation mechanism and, simultaneously, enabling efficient intra-kernel isolation. We call the resulting mechanism Protection Keys for Kernelspace (PKK). To demonstrate its utility and efficiency, we present a system we call IskiOS: a Linux variant featuring execute-only memory (XOM) and the first-ever race-free shadow stacks for x86-64. Experiments with the LMBench kernel microbenchmarks display an average overhead of about 11% for PKK and no additional overhead for XOM. IskiOS's shadow stacks bring the total to 22%. For full applications, experiments with the system benchmarks of the Phoronix test suite display negligible overhead for PKK and XOM, and less than 5% for shadow stacks.
研究の動機と目的
- オペレーティングシステムのカーネルがコントロールフロー乗っ取り攻撃に対して脆弱であるのを是正すること。
- 実行専用メモリやシャドウスタックといったセキュリティメカニズムに適した効率的なカーネル内隔離を可能にすること。
- 既存のx86-64ハードウェア上で、Intelのユーザーモード保護キー(PKU)をカーネル内での使用に適応すること。
- 従来のユーザーカーネル隔離を、統一的でより安全なメモリ保護モデルに置き換えること。
- セキュリティ強化されたカーネル機能に最小限のランタイムオーバーヘッドで実用的なパフォーマンスを実現すること。
提案手法
- Intelの保護キー for ユーザースペース(PKU)を、カーネルモードのメモリ保護に再利用し、保護キー for カーネルスペース(PKK)と呼ばれる新しいメカニズムを構築すること。
- カーネルのメモリ管理を変更して、カーネルのコードおよびデータセグメントに保護キーを割り当て、読み取り、書き込み、実行の権限を強制すること。
- PKKを用いてコードセグメントに読み取り保護を適用することで、実行専用メモリ(XOM)を実装し、書き込み可能なメモリからのコード実行を防止すること。
- スタックメモリに書き込み保護を適用することで、バッファオーバーフロー攻撃に対する整合性を保証するレースフリーなシャドウスタックを構築すること。
- 既存のコードへの最小限の変更でPKKをLinuxカーネルに統合し、既存のハードウェアおよびシステムコールとの互換性を維持すること。
- LMBenchマイクロベンチマークとPhoronixテストスイートのワークロードを用いて、セキュリティ機能に伴うオーバーヘッドを測定する性能評価を実施すること。
実験結果
リサーチクエスチョン
- RQ1Intelの保護キー for ユーザースペース(PKU)を、カーネル内メモリ保護に効果的に再利用できるか?
- RQ2PKKを用いてカーネル内で実行専用メモリ(XOM)とレースフリーなシャドウスタックを有効化した場合のパフォーマンスオーバーヘッドはどの程度か?
- RQ3PKKは従来のユーザーカーネル隔離を置き換え可能であり、セキュリティを維持または向上させられるか?
- RQ4マイクロベンチマークと実際のアプリケーションワークロードの両方において、PKKおよびそのセキュリティ機能のオーバーヘッドはどのように比較されるか?
- RQ5既存のハードウェア保護メカニズムを用いて、x86-64アーキテクチャ上でレースフリーなシャドウスタックを実装するのは可能か?
主な発見
- PKKメカニズムは、PKKと実行専用メモリ(XOM)を併用した場合、LMBenchカーネルマイクロベンチマークで平均11%のオーバーヘッドを達成した。
- 実行専用メモリ(XOM)は、PKKのオーバーヘッドに追加で追加コストを要せず、保護キーによる効率的な強制が可能であることを示した。
- Phoronixテストスイートを用いたフルアプリケーションベンチマークでは、シャドウスタックの追加によるオーバーヘッドは5%未満であり、実用性が高く高い水準であることが示された。
- 本システムは、PKKによる正確な書き込み保護を用いて、x86-64アーキテクチャで初めてのレースフリーなシャドウスタックを実現した。
- PKKは新規ハードウェアを必要とせず、既存のIntel x86-64システムでも展開可能である。
- パフォーマンス結果から、実世界のワークロードにおいてPKKおよびXOMのオーバーヘッドはほとんど無視できるほど低く、生産環境での実用性が裏付けられた。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。