Xeonチップを含む最新世代のインテル・プロセッサーと、Linux上のAMDの旧マイクロアーキテクチャーは、既存の「Spectre」緩和策を回避する新たな投機的実行攻撃に対して脆弱である。
この脆弱性は、インテルのコンシューマー向け第12、13、14世代チップ、サーバー向け第5、6世代Xeonプロセッサー、およびAMDのZen 1、Zen 1+、Zen 2プロセッサーに影響を与える。
この攻撃は、投機的実行攻撃に対する防御メカニズムの中核である、x86プロセッサの間接分岐予測バリア(IBPB)を弱体化させるものです。
投機的実行とは、最新のCPUに搭載されている性能最適化機能で、将来のタスクで必要とされるかどうかを知る前に命令を実行することで、予測が正しい場合に処理を高速化する。予測ミスに基づいて実行された命令はトランジェントと呼ばれ、潰される。
このメカニズムは、推測プロセスがCPUキャッシュから取得される可能性のある機密データを呼び出すため、Spectreのようなサイドチャネル・リスクの原因となってきた。
新たなスペクター攻撃
チューリッヒ工科大学の研究者であるヨハネス・ヴィクナー(Johannes Wikner)氏とカヴェ・ラザヴィ(Kaveh Razavi)氏は、Spectreのような攻撃を封じ込めるための数年にわたる緩和努力にもかかわらず、既存の防御を回避する亜種が数多く存在していると説明している。
彼らの貢献は、IBPBが適用された後でも投機的リターンのターゲットをハイジャックできるクロスプロセス攻撃(Intel)とPB-inception攻撃(AMD)である。
最初のケースでは、IBPBがコンテキストスイッチ後のリターン予測を完全に無効化しないというインテルのマイクロコードの欠陥を悪用した攻撃である。
攻撃者はリターン命令の投機的実行を操作し、suidプロセスからrootパスワードのハッシュ値のような機密情報を漏えいさせる。
AMDプロセッサーでは、LinuxカーネルのIBPB-on-entryが不適切に適用され、IBPB後もreturn predictorがstaleな予測を保持できる。
攻撃者は、IBPBがトリガーされる前にリターン・プレディクターをミストレインし、バリア後に特権カーネル・メモリーをリークするように乗っ取る。
対応と対策
研究者は2024年6月、インテルとAMDの両社にこれらの問題を通知した。
インテルは、社内ですでにこの問題を発見し、CVE-2023-38575という識別子を割り当てたと回答した。
同社は3月、ファームウェア・アップデートで利用可能なマイクロコードによる修正プログラムをリリースしたが、研究者らは、このコードがすべてのOS(その中にはUbuntuも含まれる)に到達していないことを指摘している。
AMDもこの脆弱性を確認し、この欠陥はすでに文書化され、CVE-2022-23824として追跡されていると述べた。注目すべきは、AMDの勧告にはZen 3製品も含まれており、ETHチューリッヒの論文には記載されていないことだ。
しかし、AMDはこの問題をハードウェアの欠陥ではなくソフトウェアのバグとして分類している。影響を受けるのが古いアーキテクチャであること、そしてAMDがこのバグについてかなり前に知っていたことが、同社が修正マイクロコードを発行しないという決定を下した理由かもしれない。
2つのCPUベンダーはSpectreバイパスについて知っていたが、両社は潜在的な影響があるとして勧告にマークした。チューリッヒ工科大学の研究者たちは、今回の研究で、Spectreの悪用に対して最強とされるIBPB-on-entry防御を備えたLinux 6.5上でも、この攻撃が機能することを実証することができた。
チューリッヒ工科大学のチームは、Linuxカーネルメンテナーと協力して、AMDプロセッサー用のパッチを開発中である。
Comments