Remote-Timer-as-a-Service: Efficient Microarchitectural Leakage in the Cloud with Remote Timers
本論文は、Cloudflare Workersが備えるDynamic Process Isolation (DyPrIs) を含む既存のSpectre攻撃への対抗策が、リモートのマイクロアーキテクチャ漏洩に対しては不十分であることを実証しており、著者らはリモートタイマーと増幅技術を悪用してJWTトークンを大幅に高速で流出させることに成功し、これがCloudflareによるハードウェア支援型のメモリ隔離およびV8サンドボックスの実装を促す結果となった。
原著者: Martin Schwarzl, Haocheng Xiao, Albert Pedersen, Sam Ainsworth, Nigel Topham
原著者: Martin Schwarzl, Haocheng Xiao, Albert Pedersen, Sam Ainsworth, Nigel Topham
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 ✨ これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
技術要約:Remote-Timer-as-a-Service
問題提起
Cloudflare Workersのようなエッジコンピューティングプラットフォームは、プロセス隔離の代わりに言語レベルの隔離(V8 isolates)を用いたシングルプロセス・マルチテナントアーキテクチャを採用することで、低レイテンシと高スループットを優先しています。これによりコンテキストスイッチングのオーバーヘッドは減少しますが、数千のテナントが共存する共有仮想アドレス空間が生成されます。このアーキテクチャは本質的にSpectre攻撃に対して脆弱であり、悪意のあるテナントが投機的実行を悪用して、同じプロセス内に存在する被害者のデータを漏洩させる可能性があります。
Cloudflareが導入した以前の対策(高精度タイマーの制限、CPU実行中のperformance.nowの凍結、マルチスレッディングの無効化、およびDynamic Process Isolation (DyPrIs))は、これらのリスクを軽減することを目的としていました。DyPrIsはパフォーマンスカウンタを監視してSpectreのような挙動を検出し、疑わしいスクリプトを別プロセスに隔離します。しかし、Schwarzlらによる先行研究では、ノイズの多いタイミングソースと限定的な増幅に依存した、120 bits/hourの遠隔Spectre攻撃が示されました。本論文の著者らは、これらの防御策は現代のマイクロアーキテクチャ増幅技術に対して不十分であり、DyPrIsのプロダクション実装には、安定した高速な遠隔攻撃を可能にする決定的な欠陥が含まれていると主張しています。
手法
著者らは、Cloudflare Workersのプロダクション環境における、安定したエンドツーエンドの遠隔Spectre攻撃を実証しました。この攻撃は、以下の4つのコアプリミティブに基づいています。
1. 同一配置(Co-Location)と実行時間の延長の実現
30秒間のCPU時間制限を克服し、攻撃者と被害者が同じプロセスを共有することを確実にするために:
- Durable Objects: 著者らは、ステートフルで長寿命なCloudflareのDurable Objectsを利用しました。定期的なWebSocketのキープアライブメッセージを送信することで、標準の30秒制限を回避し、単一のスクリプト実行を20時間を超えて延長させました。
- プロセスの識別:
/cdn-cgi/traceエンドポイントを使用して、物理マシンおよびマシンIDを特定しました。Durable Objectsを生成し、それらのマシン識別子を確認することで、攻撃者と被害者のアイソレートを同一プロセス内に強制的に配置(Co-location)させました。 - 検知回避: WebSocket通信によって維持される生存信号が、多大なiTLB(Instruction Translation Lookaside Buffer)アクティビティを生成することを示しました。これにより、DyPrIsの正規化指標(分岐予測ミス / iTLBヒット数)の分母が増大し、信号が検知閾値を下回るように抑制され、プロセス隔離を回避できます。
2. 遠隔タイマーの構築
CPU実行中にタイマーが凍結されるプロダクション環境において、遠隔タイマーの実現可能性を再評価しました。著者らは、WebSocket接続を介していくつかの遠隔タイマーを構築しました。
- Co-located Sandbox (WS+Sbx): 攻撃者と同じ場所に配置されたCloudflare Sandboxコンテナ内で動作する、ネイティブの
rdtscベースのタイマー。これが最も高い精度を実現します。 - Co-located Durable Object (WS+DO): 同一配置されたDurable Object上の
Date.nowを使用するタイマー。 - Remote AWS Instance (WS+AWS): 約1200km離れたAWSインスタンス上のタイマー。
- 結果: 個々の測定値の標準偏差は数百マイクロ秒からミリ秒単位であるものの、著者らは信号増幅を用いることで、キャッシュヒットとミスを確実に区別できることを示しました。
3. 信号増幅
ナノ秒スケールのキャッシュ効果とミリ秒スケールの遠隔タイマー解像度のギャップを埋めるため、著者らは入れ子状ループ(nested-loop)増幅戦略を採用しました。
- 内側ループ (PLRU): Pseudo-Last-Recently-Used (PLRU) キャッシュ増幅ガジェットを使用します。これはL1Dキャッシュの置換ポリシーを悪用して、単一のビット漏洩から多数のキャッシュミスを生成し、約400 µsのタイミング差を作り出します。
- 外側ループ (Repetition): キャッシュ状態をリセットするシステム割り込みに対処するため、PLRUガジェットを外側の反復ループで包みます。割り込みが発生した場合、イテレーションは失敗しますが、蓄積された信号が破損することはありません。後続のイテレーションが状態を再確立し、タイミング差の蓄積を継続します。これにより、割り込み頻度に依存せず、任意の増幅が可能になります。
4. Spectreガジェット
著者らは、V8のバージョンを横断して機能し、脆弱なアライメント要件を回避する堅牢なガジェットを導入しました。
- Heap-Address ガジェット: 境界外アクセスにおける正確なキャッシュラインのアライメントに依存する代わりに、投機的型混乱(speculative type confusion)(
Uint8ArrayをUint3Arrayとして扱う)を使用します。これにより、厳密なアライメントなしに隣接するヒープメタデータ(圧縮ポインタ)を読み取ることが可能になります。 - Pigeonhole Eviction: 排除セット(eviction sets)の構築コストを避けるため、膨大なオブジェクトプール(50万〜300万個)を割り当てます。このプールからのランダム選択により、マップポインタに対するLLC(Last-Level Cache)ミスを保証しつつ、データフィールドをキャッシュ内に保持することで、明示的な排除セットの構築を不要にします。
- Secret-Leakage ガジェット: 「偽のポインタ」のセットアップ段階を排除します。共配置された
Uint8Arrayのバッキングバッファに作成されたヘッダーを直接書き込むことで、ガジェットは攻撃者が注入した64ビットのターゲットアドレスを一時的にデリファレンスできます。
主な貢献
- 同一配置(Co-Location)技術: Durable Objectsを使用して、Cloudflare Workersのプロダクションシステム内で、攻撃者と被害者のスクリプトを同一プロセス内に強制および維持する方法を実証した。
- 遠隔タイマーの実現可能性: 高精度な遠隔タイマーが、広域ネットワーク越しであっても、共配置されたSandboxを用いてサブミリ秒のメディアン解像度を達成できることを証明した。
- 堅牢な増幅: 割り込みによるノイズとタイマー解像度の限界を克服するために、PLRUと反復を組み合わせた入れ子状ループ増幅技術を開発した。
- バージョンに依存しないガジェット: 脆弱なキャッシュラインのアライメントや明示的な排除セットの構築に依存しない、投機的型混乱とPigeonhole Evictionを用いたSpectreガジェットを設計し、V8のアップデートに対する耐性を持たせた。
結果
著者らはCloudflare Workersのプロダクション環境で攻撃を実行しました。
- 漏洩率: この攻撃は最大12 bits/second(43,200 bits/hour)の漏洩率を達成しました。これは、従来の最先端技術(120 bits/hour)と比較して360倍の向上を意味します。
- 精度: 共配置された被害者ワーカーからJWTトークンを漏洩させる際、平均**99.16%**の精度を達成しました。
- 検知回避: WebSocketのキープアライブ信号による高いiTLBアクティビティを利用して、パフォーマンスカウンタの指標を正規化し、DyPrIsによる検知を回避することに成功しました。
- 範囲: 攻撃は、アイソレートのルート、vDSOデータ、および共配置された被害者ワーカーからのJWTトークンの漏洩に成功しました。
意義と主張
本論文は、Cloudflare Workersにおけるプロセス内Spectre攻撃の脅威が、これまで評価されていたよりもはるかに高いことを主張しています。著者らは、ソフトウェアのみの対策(特に制限されたタイマーやパフォーマンスカウンタに基づく検知であるDyPrIs)は、最新の増幅および回避技術に対して不十分であると述べています。
本研究の意義は、以下のことを示した点にあります。
- 遠隔タイマーは現実である: タイマーを凍結することが、WebSocket接続を介した遠隔タイミング攻撃を防ぐという仮定は、攻撃者が遠隔タイマーを構築できる限り誤りである。
- DyPrIsは欠陥がある: 検知メカニズムは、I/O集約型のコードパス(WebSocketなど)による「ノイズ注入」に対して脆弱であり、これによりSpectre活動を隠蔽できてしまう。
- ハードウェアによる強制が必要である: 著者らは、効果的な緩和策にはハードウェア支援による隔離が必要であると結論付けています。彼らの開示を受け、Cloudflare Workersは以下を実装しました。
- V8 Sandbox: 64ビットポインタへの一時的なアクセスを制限。
- 改良されたDyPrIs: 検知能力の強化。
- MPKベースの隔離: 各テナントのヒープを専用のメモリ保護キーの下に閉じ込めるIntel Memory Protection Keys (MPK) を展開し、ハードウェアレベルでクロスアイソレートアクセスを捕捉。
本論文は、これらの脆弱性が実環境で積極的に悪用されている形跡は見つからなかったものの、実証された能力は顧客データに対する即時的なリスクをもたらすものであり、ソフトウェアのみの緩和策からハードウェアによる隔離への転換が必要であることを強調しています。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。
毎週最高の computer science 論文をお届け。
スタンフォード、ケンブリッジ、フランス科学アカデミーの研究者に信頼されています。
受信トレイを確認して登録を完了してください。
問題が発生しました。もう一度お試しください。
スパムなし、いつでも解除可能。