新たなSpectre攻撃により、現代のプロセッサーを守る防御に別の抜け道が見つかった。研究者らは、メモリーからLinuxのrootパスワードハッシュを抽出することで、この攻撃を実証した。
セキュリティ研究者らは、Branch Target Reuse(BTR)と呼ばれる新たなSpectre v2攻撃を公表した。この攻撃はジャストインタイム(JIT)コンパイラーを標的とし、Intel、AMD、Armのプロセッサーで確認された挙動を悪用する。研究者らは、Linuxカーネルを対象とするエンドツーエンドのエクスプロイトを2種類構築した。最新のIntel CPUで行ったcBPFのデモでは、テスト条件下で任意のメモリーを漏えいさせ、実行中のsuプロセスからrootパスワードハッシュをおよそ3~5分で復元した。
この攻撃によって、脆弱なマシンを訪問するだけでハッカーがLinuxのrootパスワードをリモートから盗めるわけではない。しかし、Spectre対策が何年にもわたって講じられてきた後も、投機実行の弱点が悪用可能であることを示している。特に、JITコンパイルされたコードと、プロセッサーに残った古い予測が衝突する場合に顕著だ。
新たなSpectre攻撃の仕組み
Vrije Universiteit AmsterdamのVUSecグループとScuola Superiore Sant'Annaの研究者らは、ACM Conference on Computer and Communications Security(CCS)2026で採択された論文でBTRの詳細を説明した。
研究者らの Branch Target Reuse分析によると、この攻撃はJITが生成したコードと、プロセッサーの分岐予測器が保持する情報との不一致を悪用する。
現代のプロセッサーは、性能を向上させるため、ソフトウェアが次に実行される場所を予測する。JITコンパイルされたコードが削除され、その基盤となるメモリーが新しいコードに再利用されると、プロセッサーは、以前のコードの場所を指す古い間接分岐予測を保持していることがある。
BTRは、その古い予測を攻撃の基本手段へと変える。
攻撃者はまず、間接分岐がJIT生成コードを指すよう訓練する。次にそのコードを削除し、メモリーを再利用する。分岐が再び実行されると、CPUは古い予測に従って、意図しない場所にある新たに生成されたコードへ投機的に進む可能性がある。この投機実行により、本来はアクセス不能なデータが露出することがある。
この発見は、長年続くセキュリティ問題に新たな側面を加える。Branch Target Injectionとしても知られるSpectre v2は2018年に初めて公表され、投機実行を悪用してセキュリティ境界を越える。eSecurityPlanetの Spectre and Meltdownガイドでは、元の攻撃がプロセッサーの最適化を悪用して保護された情報を露出させた仕組みを解説している。
研究者ら、Linuxのrootハッシュ漏えいを実証
BTRで最も注目を集めた実証は、Linuxカーネルに搭載された従来型のBerkeley Packet Filter(BPF)JITコンパイラーを標的にした。
研究者らは、訓練用プログラムと標的プログラムという2つのcBPFプログラムを作成し、seccompフィルターとしてインストールした。まず訓練用プログラムを実行して間接分岐を訓練し、次にそれを削除して、同じメモリー領域に標的プログラムを置き換えた。
プロセッサーに残った古い分岐予測は、依然として以前のコードの場所を指している可能性がある。再びトリガーされると、投機実行によって新たに生成されたプログラムの意図しないオフセットに入り、攻撃者が制御する命令を一時的に実行できる。
研究者らによると、エンドツーエンドのエクスプロイトにより、テストシステムで有効になっていたすべての対策を回避しながら、最新のIntelプロセッサー上で任意のメモリーを漏えいさせることができた。
概念実証では、データを毎秒およそ8バイトの速度で漏えいさせた。この速度は控えめに聞こえるが、攻撃者が価値のあるものを得るために、大量のメモリーをダンプする必要があるとは限らない。
研究者らは、デフォルトでは無効になっているcBPFのオプションの定数ブラインディング保護を回避するエクスプロイトのバージョンも開発した。これは、即値ではなくジャンプオフセットに攻撃者が制御する命令をエンコードするJITスプレー技術を応用することで実現した。
研究者らの実証では、su rootを実行し、rootパスワードハッシュをプロセスのメモリーに読み込ませた。その後、エクスプロイトはLinuxカーネルの構造をたどり、suプロセスとそのマッピング済みメモリーを特定し、最終的にハッシュを見つけて漏えいさせた。
研究者らの成果に関する報道によると、完全な実証では、Intel Raptor Cove上で平均約3分、Lion Cove上で5分でrootパスワードハッシュを復元した。これらの数値は特定の実験条件を反映したものであり、普遍的な悪用時間とみなすべきではない。
また、この研究は、BTRが現在実世界の攻撃で使われていることを示すものでもない。
Linuxは今年、ほかにも深刻な低レベルセキュリティ問題に直面している。最近公表された Januscape Linux VMエスケープの脆弱性は、IntelおよびAMDプロセッサーを使用するKVMシステムに影響し、ゲスト仮想マシンがホストを侵害する可能性があった。
Intel、AMD、Armのプロセッサーで脆弱な挙動を確認
BTRは単一のCPUベンダーに限定されない。
研究者らによると、Intel、AMD、Armにまたがるテスト対象のすべてのプロセッサーで、根底にある古い分岐予測の挙動を確認した。間接分岐予測は現代のCPUに不可欠なため、ほとんどのシステムが影響を受ける可能性が高いという。
だからといって、すべてのIntel、AMD、Armシステムが同じ手法で悪用できるわけではない。実際の悪用可能性は、ソフトウェア環境、JITエンジン、利用可能なガジェット、導入済みの対策に大きく左右される。
研究者らは、主な攻撃対象領域を3つ調査した。
- Linux cBPF:研究者らは、テストしたIntelハードウェア上で任意のメモリーを漏えいさせられる、動作するエンドツーエンドのエクスプロイトを開発した。
- Mozilla SpiderMonkey:Firefoxが使用するJavaScriptおよびWebAssemblyエンジンでは、BTR攻撃を実行可能にする条件があると研究者らは述べた。概念実証は開発したものの、エンドツーエンドのブラウザーエクスプロイトにはなお追加の作業が必要だ。
- Oracle GraalVM:研究者らは、サンドボックスのメモリー・マスキングを投機的に回避する手法を実証した。ただし、GraalVMのコンパイルおよびガベージコレクションの挙動により、エンドツーエンドのエクスプロイトを完了する前に古い予測器エントリーが妨げられた。
BTRは、JITコンパイラーとプロセッサーの分岐予測の相互作用に、より広範な弱点があることを示している。ただし研究者らは、テストしたすべてのプラットフォームやCPUで同じレベルの悪用を実証したわけではない。
悪意のあるWebページが高度に最適化されたJITエンジンとやり取りできるため、ブラウザーのセキュリティは依然として重要な攻撃対象領域だ。例えばGoogleは最近、 Chrome 154の108件のセキュリティ脆弱性を修正した。これには、ブラウザーコンポーネントに影響する重大なメモリー安全性バグも含まれる。
LinuxとOracleはすでにBTR対策を導入
研究者らは、BTRを公表する前に、影響を受けるハードウェアおよびソフトウェアベンダーへ調査結果を非公開で通知した。その結果、研究内容が公表された時点で、すでに一部の保護策が利用可能になっていた。
Linuxカーネル開発者は、BTRの公表前に、実証されたBPF攻撃への修正を導入した。関連する2つの脆弱性は次のとおりだ。
- CVE-2026-64507:該当するSpectre v2対策が施されたx86システムでBPF JITメモリーが再利用される際に、間接分岐予測バリア(IBPB)のフラッシュを有効にする。
- CVE-2026-64508:JITメモリーを再利用する前に間接分岐予測器をフラッシュするBPFインフラを追加し、新たに書き込まれたプログラムが、以前に実行されたコードから残された予測を引き継ぐことを防ぐ。
両脆弱性に対するLinuxカーネルの修正は7月25日に公開され、その後、パッチ適用済みのカーネルパッケージと安定版ブランチに組み込まれた。管理者は、利用しているLinuxディストリビューションが提供するセキュリティ更新を適用すべきだ。
Oracleも、JITコードキャッシュの場所をランダム化するGraalVM対策を導入し、予測可能な領域の再利用を困難にした。
BTR研究者らによると、MozillaはIBPBベースの対策を検討したものの、サイト分離の完成と導入を優先している。サイト分離はWebコンテンツを異なるプロセスに分け、同じアドレス空間内で利用可能になり得る機密データを減らす。
研究者らによると、ハードウェアベンダーは調査結果を認めたが、防御の適切な基盤となる構成要素としてIBPBなど既存の仕組みを挙げ、必要な箇所へのBTR固有の対策の導入はソフトウェアベンダーに委ねた。
Linuxユーザーとセキュリティチームがすべきこと
BTRは研究上の攻撃であり、進行中の攻撃キャンペーンの証拠ではない。しかし、その影響範囲の広さから、今回の公表は研究室の外にも広く関係する。
実証されたLinux攻撃は、リモートからのゼロクリック侵害と混同すべきでもない。攻撃者は標的システム上で権限のないコードを実行し、cBPF機能にアクセスする必要がある。VUSecの実証では、研究者らはcBPFプログラムをseccompフィルターとしてインストールした。
特権ユーザーに限定される、より強力なeBPF JITとは異なり、cBPFには依然として非特権プログラムからアクセスできる。研究者らによると、cBPFはLinux Socket Filtering、seccompフィルター、DockerやChromeなどのソフトウェアが使用するパケットフィルタリング経路で今も使われている。
Linuxを運用する組織は、利用しているLinuxディストリビューションから入手できる最新のセキュリティ更新を適用すべきだ。特に、信頼できないコードや低権限のコードを実行できるシステムでは重要になる。ベンダーがソフトウェア固有の保護策を導入・改良する中、管理者はJITを多用するランタイム、ブラウザー、開発環境も最新の状態に保つべきだ。
より広い教訓は、2018年の緊急パッチ後もSpectreが消えたわけではないということだ。現代のプロセッサーは性能のために投機実行と分岐予測に依然として大きく依存し、JITコンパイラーは実行可能コードを絶えず生成、削除、再利用している。BTRは、この2つのシステムの接点が、保護されたデータに到達する新たな方法を生み出し得ることを示している。
Linux管理者とセキュリティチームにとって、CPUレベルの脆弱性は抽象的なハードウェア問題にとどまらない。実際の防御は、新しいプロセッサーではなく、Linuxカーネルの更新、ブラウザーのリリース、ランタイムのパッチという形で提供される場合がある。信頼できないコードと機密性の高いワークロードが隣り合わせで動作する共有システムでは特に、これらの層を最新に保つことが重要だ。
次に読む記事:研究者らは最近、別の Cloudflare WorkerからJWTを漏えいさせたSpectre攻撃を実証し、投機実行攻撃が共有クラウド環境の機密データを脅かし得ることを示した。





