Zenbleed、AMD Zen 2 プロセッサに影響を与える脆弱性

脆弱性

これらの欠陥が悪用されると、攻撃者は機密情報に不正にアクセスしたり、一般的に問題を引き起こしたりする可能性があります

数日前、 Googleセキュリティチームの研究者が釈放される 私が発見したニュース 脆弱性 (すでにCVE-2023-20593にリストされています) AMDプロセッサの場合 Zen2 マイクロアーキテクチャに基づいており、他のプロセスが同じ CPU コアで実行されているときにレジスタを検出するために使用できます。

この脆弱性は重要であると考えられています。 攻撃は仮想マシンや隔離された環境から実行される可能性があります。 本質的に、この問題は、メモリが解放された後にアクセスすることによって引き起こされる古典的な解放後使用の脆弱性に似ています。

問題が発生するのは、 AMD Ryzen 3000、Ryzen PRO 3000、Ryzen Threadripper 3000、Ryzen 4000 (Radeon グラフィックス搭載)、Ryzen PRO 4000、Ryzen 5000 (Radeon グラフィックス搭載)、Ryzen 7020 (Radeon グラフィックス搭載) および一連のプロセッサ EPYC7002。

この脆弱性については、プロセッサでは、レジスタの内容を格納するために、同じコア内のすべてのタスクで共有される仕組みであるレジスタ ファイル (RF、Register File) が使用されているために言及されています。 CPU。 レコード アロケーション テーブル (RAT) は、特定の名前を持つレコードをログ ファイル リソースに添付する役割を果たします。 この場合、ゼロ値は、レジスタ ファイルに空の値を格納するのではなく、RAT テーブルに z ビット フラグを設定することによってレジスタに格納されます。

この脆弱性は、投機実行中に z ビットが設定されると、 命令の数が多いため、ログ ファイル内のスペースが投機的実行から再割り当てされる可能性があるため、間違った分岐予測が発生した場合に単にリセットするだけでは十分ではありません。

明らかになった効果は、レコードの名前が同時に変更されたときに発生します。、結合最適化が適用される命令が使用され、VZEROUPPER ベクトル命令が投機的に実行されます。 z ビットを設定し、ログ ファイルからリソースを解放します。 分岐予測が失敗し、投機的な VZEROUPPER 操作がロールバックされた場合、z ビットがロールされるため、ベクトル レジスタの内容が破損する可能性がありますが、解放されたリソースは破棄されないままになります。

VZEROUPPER 命令の操作により、AVX (Advanced Vector Extensions) および SSE (Streaming SIMD Extensions) モードで使用される YMM ベクトル レジスタ内の処理済みデータの制御されたリークを実現できます。 これらのレジスタは、メモリ コピーおよび文字列処理関数で積極的に使用されます。たとえば、Glibc ライブラリでは、memcpy、strcmp、および strlen 関数で使用されます。

脆弱性を実証するために、Zenbleed というコード名が付けられました、プロトタイプエクスプロイトが準備されました これにより、特権のないユーザーは、AES-NI または REP-MOVS 命令 (通常は memcpy 関数で使用される) で処理されるデータを決定できます。これを使用して、特権プロセスを含む他のプロセスで処理される暗号化キーとユーザー パスワードを再構築できます。 このエクスプロイトによるデータ漏洩のパフォーマンスは 30 秒あたり約 XNUMX KB です。

脆弱性 マイクロコード更新レベルで修正されました。 Linux の場合は、修正されたマイクロコードをダウンロードするためのパッチが用意されています。。 マイクロコードを更新できない場合でも、パフォーマンスの低下につながる脆弱性をブロックする回避策があります。

これを行うには、CPU で制御ビット DE_CFG[9] を設定する必要があります。そのためには、端末で次のコマンドを入力する必要があります。

SMT モードを無効にしても脆弱性はブロックされず、脆弱性をブロックする修正はカーネル アップデート 6.4.6、6.1.41、5.15.122、5.10.187、5.4.250、および 4.19.289 に実装されたことに注意してください。

のために 脆弱性情報の追跡に興味がある さまざまなディストリビューションでは、次のページでそれを行うことができます。 DebianのUbuntuGentooのRHELSUSEフェドーラアーチOpenBSDのFreeBSDのNetBSDの.

最後に、あなたがそれについてもっと知ることができることに興味があるなら、あなたはの詳細を調べることができます 次のリンク。