AMDは、自社製プロセッサに対する新たな種類のマイクロアーキテクチャ攻撃「TSA(Transient Scheduler Attack)」を公開しました。この攻撃により、攻撃者はCPU分離メカニズムを回避し、他のコンテキストで処理されたデータを特定することが可能になります。例えば、ユーザー空間からカーネルレベルで処理された情報を特定したり、ゲストから別のゲストで使用されているデータを取得したりすることが可能になります。
これらの脆弱性は、カーネル、仮想マシン、プロセスなどの異なるセキュリティゾーン間のマイクロアーキテクチャの分離をストレステストするために Microsoft と ETH Zurich の研究者によって作成されたツールキットの開発中に発見されました。
この攻撃手法は、一部の命令の実行時間がマイクロアーキテクチャ構造の状態に依存するという性質に基づいています。プロセッサがメモリからデータを読み出す命令がすぐに完了すると予想していたにもかかわらず(例えば、データがL1キャッシュにあると仮定して)、データを正しく取得できなかった場合、命令の「偽完了」状態が発生します。この場合、プロセッサはこの状態を判断する前に、メモリからロードする命令の実行結果に依存する他の操作の投機的実行をスケジュールすることができます。
ロードが完了しなかったため、それに関連するデータはプロセッサによって無効化され、ロード操作は後で繰り返されます。正しいデータが準備されると、依存する操作も再実行されます。ただし、「偽完了」条件が修正された命令の実行後にはパイプラインフラッシュは実行されず、誤ったデータが依存する操作にリダイレクトされる可能性があります。
このような操作の実行は、キャッシュとTLB(Translation Lookaside Buffer)の状態を変更しません。つまり、キャッシュの状態を判断する従来の方法ではデータを復元できません。しかし、このデータは他の命令の実行時間に影響を与えます。実行時間の分析は、他の操作の投機的実行後に残るマイクロアーキテクチャ構造からの情報漏洩のソースとして利用できます。
残留データ抽出のソースに応じて、次の 2 つの脆弱性が特定されます。
- CVE-2024-36350 (TSA-SQ — TSA ストア キュー) — 書き込み操作の一時ストレージ バッファ (ストア キュー) からのリークにより、メモリへの命令の書き込み結果を判定できる可能性があります。
- CVE-2024-36357 (TSA-L1 — TSA L1 データ キャッシュ) — L1D キャッシュを介したリーク。
これらの脆弱性は、Zen 19およびZen 3マイクロアーキテクチャをベースにしたAMDプロセッサファミリー(Fam4h)に存在します。例えば、AMD Ryzen 5000/6000/7000/8000、AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena、AMD Instinct MI300A、AMD Ryzen Threadripper PRO 7000 WX、AMD EPYC Embedded 7003/8004/9004/97X4、AMD Ryzen Embedded 5000/7000/V3000 CPUシリーズに存在します。
この脆弱性を阻止するために必要な変更は、OEM向けにリリースされた12月のマイクロコードアップデートとPI(プラットフォーム初期化)ファームウェアに含まれています。脆弱性対策のためのパッチは、カーネルへの組み込みに向けて提出済みです。 Linux (パフォーマンスに悪影響を与える保護機能を無効にするには、カーネルコマンドラインオプション「tsa=off」を使用できます。)Xenハイパーバイザにも修正プログラムが追加されました。この脆弱性をブロックするには、マイクロコードのアップデートと、カーネルまたはハイパーバイザレベルでの保護モードの有効化の両方が必要です。
出所: オープンネット.ru
