TEE.Fail攻撃がIntel、AMD、NVIDIAのCPU上の機密コンピューティングを突破

TEE.Fail attack breaks confidential computing on Intel, AMD, NVIDIA CPUs

学術研究者たちはTEE.Failと呼ばれるサイドチャネル攻撃を開発しました。これにより、IntelのSGXやTDX、AMDのSEV-SNPといったCPU内の信頼実行環境(TEE)から秘密情報を抽出することが可能になります。

この手法はDDR5システムに対するメモリバスインターポジション攻撃であり、コンピュータ愛好家でも1,000ドル未満のコストで実行可能です。

信頼実行環境(TEE)は、認証や認可に使用される暗号鍵のような機密データの機密性と完全性を保証する、メインプロセッサ内の「機密コンピューティング」ハードウェアです。

この環境はオペレーティングシステムから隔離されており、コードやデータが安全に実行できる保護されたメモリ領域を作成します。

ジョージア工科大学とパデュー大学の研究者らは、近年のアーキテクチャ上のトレードオフにより、Intel SGX、Intel TDX、AMD SEV-SNPの最新実装はもはや宣伝されているほど安全ではないと指摘しています。

具体的には、TEEがクライアントCPUからDDR5メモリを使用するサーバーグレードのハードウェアに移行し、決定論的なAES-XTSメモリ暗号化を採用し、パフォーマンスとスケーラビリティのためにメモリの完全性やリプレイ保護が削除されました。

彼らの実験により、これらの脆弱性を利用して鍵の抽出や認証の偽造が可能であることが確認されました。TEE.FailはDDR5ベースの暗号文攻撃としては初めてであり、以前のDDR4に関するWireTapBatteringRAMの研究を拡張しています。

攻撃手法とその影響

この攻撃にはターゲットへの物理的アクセスと、カーネルドライバの改変のためのrootレベルの権限が必要ですが、チップレベルの専門知識は不要です。

技術論文の中で、研究者らはシステムのメモリクロックを3200MT/s(1.6GHz)に下げることで信号を確実にキャプチャできたと説明しています。そのために、DDR5 DIMMとマザーボードの間にRDIMMライザーとカスタムプローブ絶縁ネットワークを接続しました。

The snooping rig (right) and the target (left)
盗聴装置(右)とターゲット(左)
出典: tee.fail

インターポーザーをロジックアナライザーに接続することで、攻撃者はDDR5のコマンド/アドレスおよびデータバーストを記録し、物理DRAM上に書き込まれたり読み出されたりする暗号文を観察できます。

DDR5 memory bus traffic during a TEE.fail attack
TEE.fail攻撃中のDDR5メモリバストラフィック
出典: tee.fail

IntelのSGXで目的を達成するために、研究者らは仮想アドレス上のデータをインターポーザーで観察できる単一のメモリチャネルに強制的に配置する必要がありました。

Intelがメモリアドレス変換コンポーネントに公開していた物理アドレス用インターフェースを通じて、研究者らは「このデコードインターフェースをsysfs経由でユーザースペースにさらに公開できる」ことを発見しました。

これにより、物理アドレスのDIMM位置を特定するための情報を見つけることができました。

しかし、SGXは物理メモリの割り当てにOSカーネルを利用しているため、研究者らは「カーネルのSGXドライバを修正し、仮想アドレスと物理アドレスのペアをグローバルカーネルメモリにパラメータとして保存できるようにした」と述べています。

研究者らは、特定のメモリ仮想アドレスに対して読み書き操作を大量に行うSGXエンクレーブを作成したと述べています。これにより、メモリインターポーザーで観察された暗号文が物理メモリアドレスとその内容の決定論的な関数であることを検証できました。

「暗号化が決定論的であることを確認するため、我々のエンクレーブにエンクレーブメモリ内の固定仮想アドレスに対して一連の書き込みと読み出し操作を実行させ、各ステップ後にロジックアナライザーで暗号文の読み出しデータをキャプチャします」と説明しています。

AES-XTS暗号化を使用しているため、同じ情報は毎回同じ出力に暗号化されます。研究チームは既知の値を観察可能な物理アドレスに書き込むことで、暗号文と値のマッピングを構築しました。

Ciphertext from three reads of enclave data
エンクレーブデータを3回読み出した際の暗号文
出典: tee.fail

次に、ターゲットとなる暗号操作をトリガーし記録することで、中間テーブルエントリへの暗号化アクセスを観察し、署名ごとのノンスの数字を復元します。

復元したノンスと公開署名から秘密署名鍵を再構築し、これにより有効なSGX/TDXクォートを偽造し、正規のTEEになりすますことができます。

同じ手法は、AMDのSEV-SNPで保護された仮想マシン上で動作するOpenSSLから署名鍵を抽出するためにも使用されました。

注目すべきは、「Ciphertext Hiding」セキュリティオプションが有効になっていても、AMD SEV-SNPに対する攻撃は依然として有効であるという点です。

研究者らは、以下のような攻撃を実演しました:

  • Ethereum BuilderNet上でTDX認証を偽造し、機密取引データや鍵にアクセスして、検出されないフロントランニングを可能にする。
  • IntelおよびNVIDIAの認証を偽造し、TEE外でワークロードを実行しつつ正規のように見せかける。
  • エンクレーブからECDH秘密鍵を直接抽出し、ネットワークのマスターキーを復元して機密性を完全に突破する。

TEE.Failを通じて、研究者らはTEEの実行を制御し、特定の仮想アドレスを観察できることを実証しました。また、Xeonサーバーをターゲットにし、デバイスの識別に使用されるプロビジョニング証明書鍵(PCK)も取得しました。

TEE.Failは物理的アクセスを必要とする複雑な攻撃です。そのため、現実世界での実用性は低く、一般ユーザーにとって脅威となる可能性は高くありません。

研究者らは4月にIntel、8月にAMD、6月にNVIDIAに調査結果を報告しました。3社とも問題を認識し、機密コンピューティングの脅威モデルに対する緩和策や適応策に取り組んでいるとし、TEE.Fail論文が公開される際に公式声明を発表する予定と述べています。

BleepingComputerは本記事に掲載するため、Intel、AMD、NVIDIAにコメントを求めましたが、公開時点では返答を得られていません。

10/29更新 – AMDは本件に関する通達を公開し、物理アクセス攻撃は範囲外であるため緩和策の開発は予定していないと述べています。

翻訳元: https://www.bleepingcomputer.com/news/security/teefail-attack-breaks-confidential-computing-on-intel-amd-nvidia-cpus/

ソース: bleepingcomputer.com