[論文レビュー] Efficient Sealable Protection Keys for RISC-V
この論文は、Sv-39ページ表エントリに未使用の10ビットを活用することで、最大1024の保護ドメインをサポートする、RISC-V向けの効率的なプロセス内メモリ隔離メカニズムであるSealPKを提案する。OSレベルの遅延解放によりpkeyの使用後フリー脆弱性を防止し、ドメイン権限、ページ、鍵の改ざんを防ぐ3つの新規シーリング機能を導入した。FPGAプロトタイプにより、最小限の性能オーバーヘッドでシャドウスタックの隔離に成功した。
With the continuous increase in the number of software-based attacks, there has been a growing effort towards isolating sensitive data and trusted software components from untrusted third-party components. A hardware-assisted intra-process isolation mechanism enables software developers to partition a process into isolated components and in turn secure sensitive data from untrusted components. However, most of the existing hardware-assisted intra-process isolation mechanisms in modern processors, such as ARM and IBM Power, rely on costly kernel operations for switching between trusted and untrusted domains. Recently, Intel introduced a new hardware feature for intra-process memory isolation, called Memory Protection Keys (MPK), which enables a user-space process to switch the domains in an efficient way. While the efficiency of Intel MPK enables developers to leverage it for common use cases such as Code-Pointer Integrity, the limited number of unique domains (16) prohibits its use in cases such as OpenSSL where a large number of domains are required. Moreover, Intel MPK suffers from the protection key use-after-free vulnerability. To address these shortcomings, in this paper, we propose an efficient intra-process isolation technique for the RISC-V open ISA, called SealPK, which supports up to 1024 unique domains. SealPK prevents the protection key use-after-free problem by leveraging a lazy de-allocation approach. To further strengthen SealPK, we devise three novel sealing features to protect the allocated domains, their associated pages, and their permissions from modifications or tampering by an attacker. To demonstrate the feasibility of our design, we implement SealPK on a RISC-V Rocket processor, provide the OS support for it, and prototype our design on an FPGA. We demonstrate the efficiency of SealPK by leveraging it to implement an isolated shadow stack on our FPGA prototype.
研究の動機と目的
- Intel MPKが16の保護キーしかサポートしないというスケーラビリティの制限を解消し、RISC-Vで最大1024ドメインを可能にする。
- Intel MPKに内在するpkeyの使用後フリー脆弱性を、ドメイン参照カウントを追跡するOSレベルの遅延解放メカニズムを導入することで解消する。
- 攻撃者がドメイン、そのページ、および権限ビットを不正に変更することを防ぐために、3つの新規シーリング機能を導入する。
- RISC-V RocketコアのFPGAプロトタイプ上でSealPKを実装し、完全なOSサポートを備えたことで、SealPKの実現可能性と効率性を実証する。
- OpenSSLやシャドウスタック保護といった実世界のワークロードに適した、安全で高性能なプロセス内隔離を実現する。
提案手法
- Sv-39ページ表エントリ(PTE)に未使用の10ビットを活用し、保護キーを符号化することで、2^10 = 1024の固有ドメインを実現する。
- OSレベルで遅延解放メカニズムを実装し、すべての関連ページが解放されるまで保護キーの無効化を延期する。
- ページ表参照と同時にサイクルを消費する専用の2KBプライベート鍵レジスタ(PKR)を導入し、保護キー権限を格納する。
- 3つのシーリング機能を設計する:(1) ドメインシーリング(ドメインの完全性を保護)、(2) ページシーリング(不正なページ変更を防止)、(3) 権限シーリング(WRPKRU命令の実行範囲を1つの信頼できるメモリ範囲に制限)。
- 実行時におけるシーリングポリシーの強制を目的に、カスタムRoCC命令を用いてPKRにインターフェースする。
- SealPKをRISC-V Rocketコアに統合し、ドメイン管理および参照カウントのためのOS拡張を実施し、FPGA上でシステムをプロトタイピングする。
実験結果
リサーチクエスチョン
- RQ1オープンなRISC-V ISA上で、16ドメインを超えるスケーラブルで安全なプロセス内メモリ隔離メカニズムを構築可能か?
- RQ2カーネルレベルの強制や複雑なバイナリインストルメンテーションに依存せずに、pkeyの使用後フリー脆弱性をどのように解消できるか?
- RQ3ハードウェアで強制されるドメイン、ページ、権限のシーリングが、悪意あるコンponentsによる改ざんをどの程度防止できるか?
- RQ4RISC-Vプロセッサコアにこのようなメカニズムを統合した場合の性能および面積オーバーヘッドはどの程度か?
- RQ5SealPKは、シャドウスタックのような重要なセキュリティプリミティブを実際の現場で効果的に保護できるか?
主な発見
- SealPKは、Sv-39 PTEに未使用の10ビットを活用することで、最大1024の固有保護ドメインを実現し、Intel MPKの16ドメイン制限を大幅に上回る。
- OSレベルの遅延解放メカニズムにより、すべてのページが解放されるまでキーの無効化を延期することで、pkeyの使用後フリー脆弱性が効果的に防止された。
- FPGAプロトタイプでは、LUTが5.62%、FFが2.72%の面積オーバーヘッドにとどまり、推定電力オーバーヘッドは5%未満であり、ハードウェアコストが低いことが示された。
- SealPKは、実行時におけるドメイン完全性、ページ内容、権限ビットの改ざんを防ぐ3つの新規シーリング機能を導入した。
- プロトタイプでは、SPEC2000、SPEC2006、MiBenchワークロードに対して、平均で21.00%、14.81%、8.52%の性能オーバーヘッドを達成し、実用的な効率性が裏付けられた。
- SealPKは、FPGAプロトタイプ上で隔離されたシャドウスタックを正常に実装でき、制御フロー整合性を保護する分野での実用的応用性が検証された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。