Spectreに、アプリケーションが実行時にコードをマシン語へ動的コンパイルする場面を突く新たな攻撃手法が加わりました。アムステルダム自由大学とサンタンナ高等研究院の共同チームであるVUSecが、Branch Target Reuse(BTR)攻撃を発表しました。この高度な攻撃は、Linuxカーネルや主要なWebブラウザー、各種言語環境に組み込まれたJIT(Just-In-Time)コンパイラを悪用し、機密性の高い秘密情報をひそかに盗み出します。
JITコンパイラは、実行中に実行可能なマシン語を即座に生成することで、アプリケーションの性能を大幅に高める仕組みです。BTRは、この一時的なコードとプロセッサの分岐予測器との間に生じる同期のずれを巧みに突きます。古くなったJITコード領域を削除した後も、プロセッサは過去のエントリをブランチターゲットバッファ(BTB)に保持したままの場合があります。プロセッサがその古い記録を、同じメモリアドレスに置かれた全く新しいコードに誤って適用する恐れがあります。
投機的なUse-After-Freeの仕組み
攻撃者はまずJITコンパイラを操作して特定の訓練用コード領域を作らせ、指定したターゲットへのジャンプを予測するようプロセッサを入念に学習させます。続いてシステムがこの領域を解放し、別のコード断片がメモリ領域の一部を再び占有します。その後の間接分岐で、プロセッサは古いアドレスへ投機的にジャンプしてしまいます。この時点で、本来の制御フローではそのアドレスに存在しない命令が実行されます。
研究者らは、この仕組みを「投機的なuse-after-free」と呼んでいます。古くなった予測器の記録が、本来対応していた元のコードより長く残ってしまうためです。アーキテクチャ上、プロセッサは誤った分岐をすぐに修正します。しかし、投機的実行の痕跡はマイクロアーキテクチャの状態に残り続けます。攻撃者は高度なサイドチャネルを使うことで、正規のコード実行経路からは決して読み取れない機密データを順次復元できます。
実環境での悪用と標的となる環境
研究者らが最も説得力のある実証結果を得たのは、Linux cBPFを標的にしたケースです。最新のIntelプロセッサ上で動作する2つの完全な攻撃コードにより、有効な通常のSpectre緩和策をすべて回避し、カーネルメモリの任意の領域を読み取ることに成功しました。データの窃取速度は毎秒8バイト程度と控えめですが、標的を絞った読み取りには十分でした。わずか数分で、「su」プロセスが使用する暗号化されたrootパスワードのハッシュを抜き出しています。
調査では、Mozilla FirefoxのSpiderMonkeyとOracleのGraalVMも検証しました。SpiderMonkeyについては、再割り当てされたJITコードバッファを介した投機的実行が可能であることを確認し、毎秒数十バイト規模の漏えいが起こり得ると推定しています。ただし、完全に実用化したブラウザー向けの攻撃コードはまだ作成していません。一方GraalVMでは、積極的に動作するガベージコレクターが、攻撃完了前に必要なBTBの記録を消し去っていました。
広範なプロセッサの脆弱性と対策
VUSecのチームは、評価したIntel、AMD、Armのすべてのプロセッサで、BTRを可能にする基本的な挙動を確認しました。ただし、カーネルデータを盗み出すエンドツーエンドのシナリオを実際に実証したのは、Intelアーキテクチャのみです。この研究は、分岐予測器を狙う攻撃の系譜をさらに広げるものです。
Linuxでこの脅威を緩和するため、開発者は2件のCVEに対応しました。CVE-2026-64507のCVSS 3.1スコアは、Amazon Linuxの評価では5.6です。CVE-2026-64508はRed Hatが7.0という高い評価を付けています。評価が分かれているのは、ディストリビューションやカーネルビルドごとに、アーキテクチャ上の細かな違いがあるためです。
Linuxのメンテナーは、BPF JITメモリを再割り当てする際に、IBPB(Indirect Branch Predictor Barrier)で予測器を必ずフラッシュする対策を導入しました。OracleはJITキャッシュの配置をランダム化して対抗しています。これにより、新しいコードが予測可能な古いアドレスで実行される確率を大きく下げました。MozillaはSpiderMonkeyへのIBPB導入を検討したものの、最終的にはサイト分離(Site Isolation)の強化を優先しました。悪意のあるWebページが隣接タブのデータにアクセスすることを、理論上制限できるためです。
BTRは、IBTやBTIなどのハードウェアベースのバリアが攻撃の難度を上げるだけで、現在のコード状態と分岐予測器が持つ過去の記憶とのずれを根本から解消するものではないことを示しています。BTRの研究者らは、管理者に対し、ベンダーがパッチを公開したらすぐにOSやソフトウェア環境を更新するよう強く勧めています。
翻訳元: https://meterpreter.org/spectre-btr-jit-compiler-attack/