Skip to main content
QUICK REVIEW

[論文レビュー] Swivel: Hardening WebAssembly against Spectre

Shravan Narayan, Craig Disselkoen|arXiv (Cornell University)|Feb 25, 2021
Security and Verification in Computing参考文献 57被引用数 15
ひとこと要約

Swivel は、線形ブロックとメモリマスキングを用いて、スペキュラティブな制御フローやデータフローの分離を強制することで、WebAssembly (Wasm) を Spectre 攻撃から硬直化するコンパイラベースのフレームワークである。パイプラインフェンスやプロセス隔離に依存せずに、サンドボックス脱出、汚染、ホスト汚染攻撃を排除する一方で、SPEC 2006 ベンチマークで 10.3% 未満の性能オーバーヘッドを達成している。

ABSTRACT

We describe Swivel, a new compiler framework for hardening WebAssembly (Wasm) against Spectre attacks. Outside the browser, Wasm has become a popular lightweight, in-process sandbox and is, for example, used in production to isolate different clients on edge clouds and function-as-a-service platforms. Unfortunately, Spectre attacks can bypass Wasm's isolation guarantees. Swivel hardens Wasm against this class of attacks by ensuring that potentially malicious code can neither use Spectre attacks to break out of the Wasm sandbox nor coerce victim code-another Wasm client or the embedding process-to leak secret data. We describe two Swivel designs, a software-only approach that can be used on existing CPUs, and a hardware-assisted approach that uses extension available in Intel 11th generation CPUs. For both, we evaluate a randomized approach that mitigates Spectre and a deterministic approach that eliminates Spectre altogether. Our randomized implementations impose under 10.3% overhead on the Wasm-compatible subset of SPEC 2006, while our deterministic implementations impose overheads between 3.3% and 240.2%. Though high on some benchmarks, Swivel's overhead is still between 9x and 36.3x smaller than existing defenses that rely on pipeline fences.

研究の動機と目的

  • 現代のスーパスカラ CPU における、Spectre 攻撃がサンドボックス隔離を回避できるという WebAssembly の深刻なセキュリティ的欠陥を是正すること。
  • プロセス内 Wasm デプロイメントにおけるサンドボックス脱出、サンドボックス汚染、ホスト汚染攻撃を含む、Spectre を基盤とする攻撃を緩和すること。
  • サーバess computing やエッジクラウドなどのパフォーマンスに敏感な環境において、スケーラビリティを犠牲にすることなく、強力なメモリ内隔離を実現すること。
  • 高価なパイプラインフェンスやプロセス隔離に依存せず、既存のハードウェアやコンパイラと互換性がある実用的でデプロイ可能なソリューションを提供すること。
  • 知的な静的コンパイルとハードウェア支援機能を組み合わせることで、最小限のパフォーマンスコストで効果的な Spectre 硬直化が可能であることを実証すること。

提案手法

  • Wasm コードを線形ブロック(LBs)にコンパイルする——制御転送がブロック境界でのみ許可される直線的 x86 コードのシーケンスであり、不正な領域へのスペキュラティブな分岐を防ぐ。
  • 各線形ブロック内でメモリアクセスマスキングを強制することで、スペキュラティブなデータアクセスをサンドボックスのメモリ領域に限定する。
  • リターンスタックバッファ(RSB)に依存しないように、ret 指令を省略し、リターン追跡用に別個のスタックポインタを用いることで、RSB アンダーフロー攻撃を防止する。
  • Intel® CET と MPK を活用することで、Swivel-CET においてハードウェア支援による隔離を実現し、最小限のパフォーマンス影響で細粒度の制御フロー整合性とメモリ保護を実現する。
  • 間接呼び出しおよびスイッチテーブルに対する Spectre-PHT および Spectre-BTB 攻撃を防ぐために、スペキュラティブロード硬直化(SLH)を適用する。
  • ソフトウェアのみのバージョン(Swivel-SFI)でアドレス空間レイアウトランダム化(ASLR)を用いることで、信頼性の高い Spectre ギミックの作成を困難にする。

実験結果

リサーチクエスチョン

  • RQ1パイプラインフェンスやプロセス隔離に依存せず、コンパイラベースのアプローチが WebAssembly における Spectre 攻撃を効果的に防止できるか。
  • RQ2線形ブロックやメモリマスキングといったソフトウェアオンリーコンパイル技術が、Wasm におけるスペキュラティブ実行攻撃をどの程度防止できるか。
  • RQ3Swivel のパフォーマンスオーバーヘッドは、フェンス挿入やプロセスベースの隔離といった既存の防御と比較して、実世界のワークロードでどの程度か。
  • RQ4Intel® CET や MPK といったハードウェア拡張機能が、Wasm コンパイラスタックに効果的に統合可能で、より強力で決定論的な Spectre 減軽化を実現できるか。
  • RQ5FaaS やエッジコンピューティングのようなマルチテナント環境における高スルーレート要件を満たすために、単一のコンパイルフレームワークで強固なセキュリティ保証と受け入れ可能なパフォーマンスを両立できるか。

主な発見

  • ソフトウェアオンリーバージョンである Swivel-SFI は、SPEC 2006 の Wasm 向けサブセットで 10.3% 未満のオーバーヘッドを負担し、本番環境での実用的パフォーマンスを示している。
  • 決定論的な Swivel-CET バージョンは、Intel® CET と MPK を用いて Spectre 攻撃を完全に排除しており、SPEC 2006 ベンチマークで 3.3% から 240.2% のオーバーヘッドを示している。
  • Swivel のオーバーヘッドは、既存のフェンスベースの防御と比較して 9× から 36.3× 低い。フェンスベースの防御は 1.8× から 19.6× のパフォーマンス劣化を引き起こす。
  • ret 指令を回避し、別個のスタックポインタを用いることで、Swivel-SFI は、Spectre 攻撃で悪用可能な RSB アンダーフロー脆弱性を完全に排除している。
  • 線形ブロックとメモリマスキングの使用により、スペキュラティブな制御フローとデータフローがすべてサンドボックス境界内に封じ込められ、脱出および汚染攻撃の両方を防止している。
  • Swivel は、サンドボックス脱出、サンドボックス汚染、ホスト汚染の3つの攻撃表面を効果的に防御しており、FaaS やエッジコンピューティングのようなマルチテナント環境に適している。

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

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

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

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