

VUSecとScuola Superiore Sant’Annaの研究者が、Spectre v2の新たな攻撃手法「Branch Target Reuse(BTR)」を公開しました。JITエンジンとCPUの分岐予測処理の組み合わせを悪用するもので、研究者は完全に更新されたIntel搭載Linux環境からrootパスワードハッシュを数分で取得する実証にも成功したと報告しています。
The Hacker News:New Spectre-v2 BTR Attack Leaks Linux Memory Despite Existing Defenses
この記事のポイント
影響のあるシステム
- JIT(Just-In-Time)コンパイル機能を利用するソフトウェアや実行環境が影響対象となる可能性があります。
- 研究ではMozilla FirefoxのSpiderMonkey、GraalVM、LinuxカーネルのcBPF JITが影響を受けることが確認されています。
- 複数のCPUベンダーにまたがる問題として評価されています。
- 研究者は、完全に更新されたIntelシステムで標準の防御機能を有効にした状態でも、Linuxカーネルからrootパスワードハッシュを取得するPoCを実証しています。
- Linuxカーネル向けの対策はCVE-2026-64507およびCVE-2026-64508として公開・統合されています。
推奨される対策
- Linux環境では、CVE-2026-64507およびCVE-2026-64508への対策を含む最新のカーネル更新を適用してください。
- JIT機能を利用する実行環境やブラウザについて、各ベンダーが提供する最新のセキュリティ更新情報を確認してください。
- GraalVMではJITコードキャッシュの配置をランダム化する対策が採用されているため、対応済みバージョンの利用を確認してください。
- Firefoxについては、Mozillaがサイト分離の展開を優先していると報告されているため、最新バージョンへの更新を継続してください。
- JITエンジン上で信頼できないコードを実行できる環境では、BTRの前提条件が成立し得るため、実行権限や分離機構を見直してください。
上記の対策は、元記事の事実に基づき日本の読者向けに整理したものです。
この記事に出てくる専門用語
- Spectre v2:CPUの投機的実行と間接分岐予測を悪用し、本来アクセスできないデータをキャッシュの変化などから推測する攻撃手法の一種です。
- BTR(Branch Target Reuse):JITによって書き換えられたコードと、CPU内部に残った古い分岐予測情報を組み合わせることで、投機的な制御フローを乗っ取る新たなSpectre v2攻撃です。
- JIT(Just-In-Time):プログラムの実行中にコードを生成・コンパイルして性能を高める仕組みです。ブラウザや言語ランタイム、Linuxカーネルの一部でも利用されています。
- BTB(Branch Target Buffer):CPUが間接分岐の行き先を予測するために保持する内部情報です。BTRでは古いBTBエントリが攻撃に利用されます。
- 投機的実行:CPUが処理速度を上げるため、実際に必要か確定する前に命令を先回りして実行する仕組みです。
- cBPF JIT:Linuxカーネル内でBPFコードを実行時にネイティブコードへ変換するJIT機構です。
- IBPB:「Indirect Branch Predictor Barrier」の略で、間接分岐予測の状態を制御し、Spectre系攻撃の影響を抑えるために使用されるCPU機構です。
- CVE-2026-64507 / CVE-2026-64508:BTRへの対策としてLinuxカーネル側で公開された脆弱性識別番号です。
JITコードの「再利用」が新たなSpectre攻撃につながる

BTRの特徴は、JITエンジンがコードを書き換えた後でも、CPU内部に古い分岐予測情報が残り続ける場合がある点を利用することです。現代のCPUは、プログラムが自分自身のコードを書き換えるSelf-Modifying Codeに対応するため、命令キャッシュやデータキャッシュなどの整合性を再確立します。しかし研究者によると、間接分岐の予測情報まで必ずしも無効化されるわけではなく、BTBに古い分岐先が残ることがあります。
JIT環境では、過去に使用していたコード領域が解放された後、同じ、または一部が重なるアドレスへ別のコードが再配置されることがあります。BTRではこの性質を利用し、CPUが以前記憶した分岐先へ投機的にジャンプさせます。アドレス自体は同じでも、そこに存在するコードの意味が変化しているため、攻撃者が制御する新しいコードや、通常は実行されない位置へCPUを投機的に誘導できる可能性があります。
研究者はこの現象を「transient execute-after-free」に相当する状況として説明しています。従来のSpectre v2では、ある分岐を別の不正な分岐先へ向ける「空間的」な制御が中心でしたが、BTRでは同じ分岐、同じアドレスを維持しながら、そのアドレス上のコード内容が時間とともに変わる「時間的」な変化を悪用します。この違いにより、既存のSpectre対策が想定していなかった新しい攻撃経路が成立すると報告されています。
完全更新済みLinuxからrootパスワードハッシュを取得
研究者はBTRの実用性を確認するため、Linuxカーネルを対象とした2種類のエンドツーエンド攻撃を作成しました。その結果、標準のセキュリティ対策を有効にし、最新の修正を適用したIntel搭載システムから、rootアカウントのパスワードハッシュを数分以内に取得できたと報告しています。これは、BTRが理論上の問題だけではなく、実際の情報漏えいへつながる可能性を持つことを示しています。
攻撃の前提として、攻撃者はJITエンジン内で権限の低いコードを実行できる必要があります。まず攻撃者は、JITエンジンに特定のコード領域を生成させ、対象となる間接分岐がその領域へジャンプするよう学習させます。これによって、CPUのBTBに分岐先が記録されます。その後、そのコード領域を解放し、同じアドレスの一部を再利用する別のコードを生成します。
ここで再び同じ間接分岐を実行すると、CPUが古いBTB情報を利用し、すでに意味が変化した以前の分岐先へ投機的に実行を進める場合があります。その結果、本来のプログラム上では無効な位置からコードを実行したり、Spectre対策によって守られている処理を回避したりすることが可能になると研究者は説明しています。投機的実行の結果そのものは破棄されますが、キャッシュに残る痕跡を測定することで、攻撃者は機密情報を推測できます。
SpiderMonkey、GraalVM、Linux cBPF JITで影響を確認

研究チームはBTRをMozilla Firefoxで使用されるSpiderMonkey、GraalVM、LinuxカーネルのcBPF JITに対して評価しました。その結果、いずれの環境でも影響を受けることが確認されたものの、実際の悪用しやすさや情報漏えいの速度には大きな違いがあったとしています。このことから、BTRは特定のアプリケーションだけに存在する実装ミスではなく、JITとCPUの分岐予測機構が組み合わさることで生じる、より広い設計上の問題として捉えられています。
研究者によると、BTRはJITがコードを生成・削除・再配置する動作と、CPU内部に残る古い分岐予測情報との相互作用から生じます。従来は、コードが書き換えられた際に命令キャッシュなどが適切に同期されれば安全性が保たれると考えられていました。しかしBTRでは、コードそのものが正しく更新されても、CPUの分岐予測状態が古いまま残ることで問題が発生します。
特に重要なのは、この問題がWebブラウザだけに限定されない点です。JITはJavaScriptエンジンだけでなく、言語ランタイムやOSカーネル内部でも利用されています。LinuxではcBPFのようなJIT機構がカーネル内部で動作しているため、ユーザー空間のブラウザ攻撃とは異なる深刻な影響につながる可能性があります。研究者は、BTRによってJIT環境全体の安全性を見直す必要があると指摘しています。
既存のSpectre v2対策でも十分ではない可能性
BTRは、既存のSpectre v2対策の一部を回避できる可能性がある点でも注目されています。元記事では、Training Soloとして知られるCVE-2024-28956およびCVE-2025-24495に対する緩和策についても、BTRによって十分な防御にならない可能性が示されています。ただし研究者は、BTRの適用範囲はJITエンジンに限定されるという条件も説明しています。
従来のSpectre v2攻撃では、ある間接分岐を、本来とは異なる分岐先へ投機的に向ける方法が一般的でした。これに対してBTRでは、分岐も分岐先アドレスも同じままで構いません。必要なのは、そのアドレスに存在するコードの内容が攻撃者の制御下で変化することです。JITでは同じコードキャッシュ領域が繰り返し利用されるため、この条件が現実的に成立すると研究者は説明しています。
研究者はまた、現代のCPUがコード書き換え時に必要なマイクロアーキテクチャ上の状態をすべて再同期していないことが、BTRの根本的な原因だと指摘しています。CPU内部のすべての予測情報やキャッシュ状態を毎回完全にリセットすれば性能への影響が大きくなるため、単純な解決策は難しいとされています。このため、BTRと同様に、JITコードと残留するCPU内部状態の組み合わせを悪用する新たな攻撃が今後見つかる可能性も示唆されています。
Linuxでは対策済み、JITごとに異なる防御が必要
研究者からの責任ある開示を受け、LinuxカーネルではBTRへの対策がCVE-2026-64507およびCVE-2026-64508として公開され、修正が統合されています。元記事によると、LinuxのcBPFではIBPBを利用した対策が導入されています。IBPBは間接分岐予測に関係する状態を制御するための機構で、BTRに利用される古い分岐予測情報の影響を抑えるために使用されます。
一方、GraalVMでは異なるアプローチが採用されており、JITコードキャッシュの配置をランダム化することで、以前使用したアドレスがそのまま再利用されにくくしています。Mozillaについては、IBPBを利用した対策も検討されたものの、元記事によると現在はサイト分離機能の完成と展開を優先しています。つまりBTRへの対策は、CPU側の共通修正だけで完結するものではなく、JITエンジンごとに異なる設計上の対応が必要になります。
企業や組織では、Linuxカーネル、Webブラウザ、Java系ランタイムなどを個別に管理する必要があります。特にサーバー用途でLinuxを利用している場合は、BTR対応を含むカーネル更新を適用しているか確認することが重要です。また、JITを利用するソフトウェアについても、通常のアプリケーション脆弱性だけでなく、CPUの投機的実行に関連する防御策が更新されていないか、ベンダーのセキュリティ情報を継続的に確認することが求められます。
参考文献・記事一覧
投稿者プロフィール

- CyberCrew(サイバークルー)
-
CyberCrew(サイバークルー)は、企業の情報セキュリティをトータルで支援する専門チームです。高度なスキルを持つホワイトハッカーが在籍し、サイバー攻撃の監視・検知から初動対応、リスク診断や従業員向けのセキュリティ教育まで、幅広いサービスを提供。企業のニーズに応じた柔軟な対応で、安心・安全なIT環境の実現をサポートします。
■ 情報セキュリティサービス台帳登録事業者
■ セキュリティコンテスト受賞歴
CTF国際大会 世界No.1
CEH Master Leaderboard 世界No.1
Hack The Box Rank TOP10
■ 保有セキュリティ資格
GIAC GXPN、Cisco Cybersecurity Specialist、CEH Master、CEH Practical、
Cyber Security Professional Certificate、OSCP、OSCP+、CPENT、OSWP、
eCPPT、eMAPT、CRTS、SOC-100、PEN-100、
HTB Offshore Penetration Tester(Level 3)






