Skip to main content
QUICK REVIEW

[論文レビュー] ERIM: Secure and Efficient In-process Isolation with Memory Protection Keys

Anjo Vahldiek-Oberwagner, Eslam Elnikety|arXiv (Cornell University)|Jan 21, 2018
Security and Verification in Computing参考文献 24被引用数 16
ひとこと要約

ERIM は、Intel のメモリ保護キー (MPK) とバイナリリライトを活用して、信頼できないアプリケーションと信頼できるセキュアライブラリの間で、高パフォーマンスかつハードウェア保護を備えたプロセス内隔離を実現する技術を導入する。強力なハードウェア強制隔離を実現しつつ、ほぼ ASLR 並のパフォーマンスを達成し、CPU コアあたり最大 100 万回のセキュアアクセスを実現するが、オーバーヘッドは最小限に抑えられる。

ABSTRACT

Many applications can benefit from isolating sensitive data in a secure library. Examples include protecting cryptographic keys behind a narrow cryptography API to defend against vulnerabilities like OpenSSL's Heartbleed bug. When such a library is called relatively infrequently, page-based hardware isolation can be used, because the cost of kernel-mediated domain switching is tolerable. However, some applications require very frequent domain switching, such as isolating code pointers to prevent control flow hijack attacks in code-pointer integrity (CPI). These applications have relied on weaker isolation techniques like address-space layout randomization (ASLR), which allow efficient switching but have proved vulnerable to attack. In this paper, we present ERIM, a novel technique that combines the security of hardware-enforced isolation with a switching performance near that of ASRL. ERIM can support sensitive data access up to a million times per CPU core a second with low overhead. The key idea is to combine memory protection keys (MPKs), a feature recently added to Intel CPUs, with binary rewriting to prevent circumvention. ERIM provides three primitives: isolation, call gates, and syscall mediation. We show how to apply ERIM to isolate frequently accessed session keys (not just the long-term keys) in nginx, a high performance web server, and how to isolate sensitive data in CPI. Our measurements indicate a negligible degradation in performance, even with very high rates of switching between the untrusted application and the secure library.

研究の動機と目的

  • 高頻度のセキュアアクセスが求められるシナリオにおける、従来のページベース隔離のパフォーマンスボトルネックを解消すること。
  • 制御フローや暗号鍵保護における制御フローセキュリティ (CPI) や暗号鍵保護におけるアドレス空間レイアウトランダマイゼーション (ASLR) のセキュリティ的限界を克服すること。
  • Web サーバーや CPI システムなどのパフォーマンスが求められるアプリケーションにおける、機微なデータの効率的かつハードウェア保護付きの隔離を可能にすること。
  • 強力な隔離保証と低い切り替えコストを両立させ、頻繁かつ細粒度なセキュアコールに適したシステムを設計すること。
  • 既存の高性能ソフトウェアスタックに実用的かつ導入可能なソリューションを提供すること。

提案手法

  • Intel のメモリ保護キー (MPK) を活用して、信頼できないアプリケーションコードとセキュアライブラリの間でハードウェア強制メモリ隔離を実現する。
  • バイナリリライトを用いてアプリケーションをインターポールし、MPK 指令の正しく使用されるよう保証し、悪意あるコードによる回避を防止する。
  • 3 つのコアプリケーションを導入:隔離(メモリ保護)、コールゲート(制御された遷移)、システムコール中継(セキュアなシステムコール処理)。
  • MPK ベースの隔離をコンパイル時にアプリケーションバイナリに統合し、機微なデータへのすべてのアクセスが、監視された安全な遷移を通じて行われることを保証する。
  • トラップや特権遷移のオーバーヘッドを最小限に抑え、頻繁な切り替えにおいてほぼ ASLR 並のパフォーマンスを達成する。
  • 本技術を実世界のワークロードに適用し、セッション鍵保護のための nginx およびコードポインタ整合性 (CPI) システムを対象とした。

実験結果

リサーチクエスチョン

  • RQ1ハードウェア強制隔離を、CPU コアあたり最大 100 万回のセキュアコールを実現するにあたって、顕著なパフォーマンス劣化なしに十分な効率性を確保できるか。
  • RQ2メモリ保護キー (MPK) をバイナリリライトと効果的に組み合わせることで、悪用を防止し、隔離の正しさを保証できるか。
  • RQ3MPK ベースの隔離は、高頻度のセキュア操作において、セキュリティ面とパフォーマンス面の両面で ASLR をどの程度上回れるか。
  • RQ4ERIM は、パフォーマンスに大きな影響を与えないまま、実世界の高性能システム(例:nginx)に実際に導入可能か。
  • RQ5ERIM の設計は、コードリユースや特権昇格攻撃によって隔離メカニズムを回避されるのをどのように防いでいるか。

主な発見

  • ERIM は、CPU コアあたり最大 100 万回のセキュアアクセスを 1 秒間に達成し、強力なハードウェア隔離を実現しつつ、ほぼ ASLR 並のパフォーマンスを示した。
  • 極めて高い負荷下でも ERIM のパフォーマンスオーバーヘッドは無視できるほど小さく、高頻度のシナリオでは測定可能な劣化が 1% 未満に抑えられた。
  • バイナリリライトは、悪意あるコードによる MPK 保護の回避を効果的に防止し、隔離メカニズムの整合性を保証した。
  • ERIM は nginx におけるセッション鍵の保護に成功し、実世界の高性能ウェブサーバーにおける実用的応用を実証した。
  • システムは強力な隔離保証を維持しながら、信頼できないコード領域と信頼できるコード領域の間で効率的かつ頻繁な遷移を可能にした。
  • ERIM の設計により、暗号鍵管理および制御フローセキュリティ (CPI) の両用途において、安全で低オーバーヘッドの隔離が実現可能となった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。