ニュース

rootハッシュ漏洩の脅威。JITを狙うSpectre-v2新手法「BTR」とは

 CPUの投機実行における脆弱性「Spectre-v2」の亜種である「Branch Target Reuse(BTR)」が報告された。アムステルダム自由大学のセキュリティ研究チームであるVUSecが9月29日に発表したもので、JIT(Just-in-Time)コンパイラに対して悪用することで、機密データの窃取などを可能にするとしている。

 BTRは、CPUの分岐予測の特性を利用したJITコンパイラを標的とする攻撃手法。特にJITエンジンでは、コードが変更された際に、アーキテクチャコードの整合性を保つ一方で、古くなった分岐予測エントリが残り続ける性質があり、これを悪用することで、制御フローの乗っ取りなどを可能にする。

 具体的には、まずJITエンジンに新たにトレーニングチャンクを生成する。間接分岐でトレーニングチャンクにジャンプさせることで、CPUが分岐先を記憶しておくBTB(Branch Target Buffer)を学習。次にトレーニングチャンクを解放し、同じアドレスを部分的に再利用するターゲットチャンクを割り当てる。この状態で間接分岐を再度実行すると、CPUは古いBTBエントリで投機的にターゲットチャンクにジャンプしてしまい、制御フローの乗っ取りや機密データの漏洩が発生する。

 VUSecの検証によれば、Linux cBPFではsuプロセスからrootパスワードハッシュの漏洩が可能だったという。また、SpiderMonkey(FirefoxのJavaScriptおよびWebAssemblyエンジン)では任意コード実行や同一プロセス内のほかのタブのデータ漏洩が実現できたという。GraalVM(Oracleのマルチ言語ランタイム)ではガベージコレクションなどの影響でBTBエントリが再利用前に消去され、データ漏洩には至らなかったものの、本脆弱性を妨げる根本的な要因ではないとした。

 説明によれば、BTRは分岐予測機とコードの状態との同期ズレを悪用した手法であり、CPUベンダーを問わず影響を受けるとしている。ソフトウェアによる対策が可能なため、パッチが提供され次第、OSやソフトウェアをアップデートするよう呼びかけている。

 なお、VUSecでは本手法に関する情報をハードウェア・ソフトウェアベンダーに事前に開示済みだ。Linuxカーネルでは共通脆弱性識別子「CVE-2026-64507」および「CVE-2026-64508」の割り当てと緩和策の展開、GraalVMではJITコードキャッシュロケーションのランダム化による対策が行なわれている。また、Firefoxではサイト分離の導入を進めているという。