1ビット反転でAMD CPUがVMの脆弱性にさらされる

仮想マシンを使っているなら、AMDのCPUについて「Zen」どころではない気分になる理由がある。ドイツのCISPAヘルムホルツ情報セキュリティセンターに所属するコンピュータ科学者らが、AMD CPUにおける脆弱性を発見し、同社のセキュア仮想化環境で秘密情報が露出し得ることを明らかにした。

StackWarpと名付けられたこの欠陥は、ホストサーバーを制御する悪意ある内部者が、暗号の秘密鍵を回収するための攻撃、OpenSSHのパスワード認証の回避、権限昇格などを通じて、AMD SEV-SNPゲスト内の機微なデータにアクセスできる可能性がある。

AMDはこの脆弱性(CVE-2025-29943)について通知を受け、2025年7月にパッチを提供し、現在はこの問題を低深刻度として位置づけるセキュリティ情報を公開している。

StackWarpは、共通のハードウェア上で仮想計算資源が互いに隔離されたままであることを保証するのが難しいという点を改めて示している。これは、スタック操作を高速化するために設計されたマイクロアーキテクチャ上の欠陥を悪用する。

「この脆弱性は、ハイパーバイザー側にある、これまで文書化されていなかった制御ビットを介して悪用できます」と、CISPA研究者のRuiyi Zhang氏はThe Registerに提供した声明で述べた。「標的VMと並行してハイパースレッドを実行する攻撃者は、これを使って保護されたVM内部のスタックポインタ位置を操作できます」

この攻撃シナリオは、同時マルチスレッディング(SMT)が有効になっている場合に、AMD Secure Encrypted Virtualization(SEV)およびSEV-ES(Encrypted State)の後継であるAMD SEV-SNP [PDF]に当てはまる。

SEV-SNPは、物理ハードウェア上でVMを管理するソフトウェアであるハイパーバイザーから仮想マシンを隔離するよう設計されている。SMTは、1つのCPUコアで複数スレッドを同時に実行できるようにする。AMDが指摘するように、SMTは2つのスレッド間でコア資源を共有できるようにし、「サイドチャネル攻撃のようなエクスプロイトにとって魅力的な標的になり得る」という。

AMD SEV-SNPはIntel TDXと同様に、クラウド事業者が機密仮想マシン(CVM)を提供するために用いられており、Microsoftの言葉を借りれば「仮想マシン、ハイパーバイザー、ホスト管理コードの間に、堅牢なハードウェアベースの分離」を約束する。

AMD Zen CPUでは、その約束がたった1ビットの反転で崩され得る。

CISPAの研究者であるRuiyi Zhang氏、Tristan Hornetz氏、Daniel Weber氏、Fabian Thomas氏、Michael Schwarz氏は、AMD Zen CPUのスタックエンジンを悪用してCVMを破れる形にできたと報告している。

彼らは「StackWarp: Breaking AMD SEV-SNP Integrity via Deterministic Stack-Pointer Manipulation through the CPU’s Stack Engine(StackWarp:CPUのスタックエンジンを介した決定的なスタックポインタ操作によりAMD SEV-SNPの完全性を破る)」と題する論文 [PDF]でその発見を説明している。この論文はUSENIX Security 2026での公開が予定されている。

スタックとは、関数呼び出し、ローカル変数、リターンアドレスに関わる処理を管理するためにコンピュータが用いるメモリ構造を指す。スタックの先頭は、スタックポインタと呼ばれるCPUレジスタで追跡される。

CPUフロントエンドは命令のフェッチと処理を担い、通常はスタックポインタ更新を得るためにCPUバックエンドへ問い合わせる必要がある。研究者らが指摘するように、AMDおよびIntelのCPUは、フロントエンドとバックエンド間の同期の必要性を減らすため、スタックポインタの変化(デルタ)を追跡するスタックエンジンをCPUフロントエンドに実装している。

「大まかに言えば、スタックエンジンは実行中のスタックポインタ・デルタを追跡し、一般的なスタック操作が効率よく完了するようにします」と研究者らは論文で説明している。「我々の測定では、スタック操作が進行中にエンジンを無効化すると、蓄積されたデルタが『凍結』され、ストアはコミットされる一方で、アーキテクチャ上のスタックポインタ更新は保留されることが示されました」

要するに、文書化されていないコアスコープのモデル固有レジスタ(MSR)0xC0011029のビット19という1ビットを反転させることで、攻撃者は論理的な兄弟コア間の同期を破壊し、同期している兄弟スレッドを破損させられる。

この手法により、研究者らはRSA-2048の秘密鍵を回収し、OpenSSHのパスワード認証を回避し、sudoのパスワード認証を回避し、カーネルスタックを改変してring 0でのコード実行を得られたという。

「これらの発見は、現時点でSMTを有効にしておくことがSEV-SNPの完全性目標を損なうことを示しています。兄弟コアが、共有フロントエンドのスイッチを通じて命令レベルの精度でゲストの制御フローとデータフローを変更できるのです」と研究者らは結論づけている。

したがって、AMDが提供している更新やパッチは必ず適用してほしい。

概念実証(PoC)のエクスプロイトコードはGitHubに公開されている。®

翻訳元: https://go.theregister.com/feed/www.theregister.com/2026/01/15/stackwarp_bug_amd_cpus/

ソース: go.theregister.com