- ブランチ予測器の競合状態により、Intel CPUで新たなセキュリティ脆弱性である Branch Privilege Injection が発見された
- この攻撃は、非同期更新とセキュリティドメイン間の不十分な同期によって成立する
- eIBRS や IBPB など既存のハードウェア緩和策は、競合状態の前では無力化される
- Intel は マイクロコードアップデートでこの脆弱性を緩和しており、性能低下がある
- この脆弱性は 第9世代以降のすべての Intel CPU に影響し、OSに関係なく発生する
Branch Privilege Injection 攻撃の概要
- Branch Privilege Injection は、Spectre-BTI 系のブランチターゲットインジェクション攻撃を新しい形で復活させたセキュリティ脆弱性である
- Intel CPU ではハードウェアレベルの Spectre 防御が6年間有効に機能してきたが、今回の研究により 競合状態 (race condition) による回避が可能であることが証明された
- ブランチ予測器は命令ストリームと 非同期に動作 するため、特定の状況では 10〜100 数十/数百サイクル遅れた更新が発生する
- ブランチ予測器の更新が進行中のときに特権遷移(例: ユーザー-カーネル、ゲスト-ハイパーバイザー)や IBPB が動作すると、その更新が新しい権限モードに誤って関連付けられる問題が発生する
- これを Branch Predictor Race Condition と呼び、これによって機密メモリ情報の漏えいが可能になる
攻撃の実証と影響
- この攻撃手法により、Ubuntu 24.04(最新パッチおよび既定の緩和策を適用)で任意メモリの漏えい速度が 5.6KiB/s に達した
- Intel Raptor Lake(第13世代)CPU で攻撃成功の動画デモがある
影響を受ける緩和策
- eIBRS: 第9世代(Coffee Lake Refresh)以降の Intel CPU に導入されたセキュリティ機構で、間接分岐予測をセキュリティドメインごとに分離する
- IBPB: eIBRS はハードウェアセキュリティドメイン間の攻撃しか防げないため、IBPB は信頼できない仮想マシンなど追加のセキュリティ境界に対して、間接ブランチ予測全体を無効化する機能である
- どちらも、指定された環境でセキュリティのデフォルト設定として推奨される緩和策である
Branch Predictor Race Condition の詳細分析
- ブランチ予測器で 競合状態 が発生すると、eIBRS および IBPB のセキュリティ保証は無効化される
- 命令実行中に特権遷移が行われると、進行中のブランチ予測更新が新しいセキュリティドメインに誤って帰属する
- IBPB を実行しても、進行中だった予測更新はフラッシュされずに予測器に残り、セキュリティ問題を引き起こす
Branch Predictor Race Condition に対する緩和策
- Intel は脆弱なプロセッサ向けに マイクロコードアップデート を開発しており、Alder Lake で実験的に攻撃の遮断を確認した
- この緩和策を適用すると、Alder Lake で最大 2.7% の性能低下が発生した
- ソフトウェアによる代替緩和戦略でも、実験の結果 1.6%(Coffee Lake Refresh)〜8.3%(Rocket Lake)の性能オーバーヘッドが測定された
- 詳細は論文で追加情報が提供されている
追加資料
- Branch Privilege Injection の中核研究論文は USENIX Security 2025 で発表予定である
- Black Hat USA 2025 では、脆弱性の検知とエクスプロイトに焦点を当てた発表が予定されている
- 攻撃および実験のソースコードは github で公開されている
FAQ
1. 自分のコンピュータは影響を受けるか?
- 第9世代(Coffee Lake Refresh)以降のすべての Intel プロセッサが Branch Privilege Injection の影響を受ける
- IBPB の無力化現象は第7世代(Kaby Lake)製品でも確認されている
2. Intel 以外の CPU も影響を受けるか?
- 分析の結果、AMD および ARM システムではこの問題は確認されていない
3. Linux だけが影響を受けるのか?
- PoC は Linux 向けだが、根本的な問題はハードウェアに存在する
- このハードウェア上で動作する すべての OS が脆弱である
4. 対応策は?
- OS および BIOS の 最新アップデート をインストールすることが推奨される
1件のコメント
Hacker Newsのコメント
ハーバードで公開された記事で、ジョンにとって不運なことに、分岐が悪魔と量子力学と取引して将来世代のプロセッサに有害な魔法をかけてしまい、その魔法は「スケーリングによる電圧リーク」や「無駄な発熱増加」といった名前で残った、という気の利いた比喩が使われていた
James Mickensの文章はいつも面白い、という感想とともに、セキュリティを担当するMossadはHTTPSのようなものを気にしない、データが必要ならドローンで携帯電話をウランの偽物にすり替え、最終的にはあなたの持ち物を遺品セールで買ってきて自分たちで写真を見るだろう、という冗談を引用した愉快な想像
数多くの行列に言及した部分がわずかな希望を示している、という意見と、ジョンの弟がその行列に人間のように話させる方法を見つけたと語っている
研究者ブログと論文へのリンク共有
上のリンクを大学のプレスリリースから研究者のブログ記事に差し替えた、というフィードバックを残した
新しい脆弱性の影響について、研究者はCPU全体のメモリ内容を繰り返し読み取ることができ、毎秒5,000バイトの速度も可能だと説明しており、攻撃が成功すれば最終的にCPU内のあらゆる情報が漏洩し得る
タイトルURLをブログへのリンクに変えてくれるとよい、という希望を伝えた
分岐予測器の動作について整理している
Kaveh Razavi教授が自分の大学でハードウェアセキュリティのコースを教えていたことがあり、その講義は本当に素晴らしかった、という懐かしさ
数年前にそのコースとマルウェア関連の別の講義を探そうとしたが公開情報がほとんどなく、公式の講義録画やノートがオンラインにあるのか気になる、という質問を残した
Training Solo攻撃と今回の脆弱性の関係を知っている人がいるか、と質問
チップセットのマイクロコードパッチの説明でWindowsしか触れられていないことに疑問を持ち、Linuxユーザーはどうなるのかと質問
Linuxカーネルもかなり前からマイクロコードのロードをサポートしているが、Intelがマイクロコードファイルを配布しないと各ディストリビューションは更新できず、システムアップデートに含まれる必要がある、という説明
IntelはLinux向けマイクロコード更新をgithubで公開しているので、各ディストリビューションは自動的にそこから取得して配布している、この脆弱性が実際に修正済みかどうかは専門家ではないのでよく分からない、という説明
Intel公式のセキュリティ勧告リンクを共有
AMD CPUにも似た脆弱性があるのか気になる、という意見と、分岐予測のような技術的メカニズムがCPUセキュリティ脆弱性の根本原因であると指摘し、AMDはどうやってこうした脆弱性を回避しているのか知りたい、という話
研究者ブログの要約として、今回のBranch Privilege Injection脆弱性はAMD、ARMシステムには影響しない、という回答を伝えた
AMDがこうした問題を完全に回避してきたわけではない、という趣旨で、SpectreやMeltdownのように脆弱性ごとに影響範囲は異なり、今回はIntel限定だが、AMDも同系統の脆弱性(例: Spectre)にさらされたことはある
やや丁寧な説明として、仕様に基づく推測実行そのものが脆弱性なのではなく、現代CPUで不可欠なメカニズムであることを強調し、内部の欠陥は見つけにくいほど複雑なので、AMDやARMにも類似のバグがある可能性はある、完全な修正方法は現代システムでコードの隔離が不可能だという現実を認めることだが、それは一部の大企業のビジネスモデルには致命的だ、という懸念
この脆弱性への対策として、分岐予測更新時点の権限レベルをスナップショットのように保存してその値を一緒に渡せば、ソフトウェアで経験する問題に似た形で解決できそうだ、という提案
CPU分岐予測器がバッファ境界とコードの権限情報を直接確認できれば防ぎやすかっただろうが、そのためにはポインタに重要な情報を追加する必要がある、と愉快に指摘している
問題の範囲をもっと明確に理解する必要がある、という意見で、推測実行を通じた脆弱性攻撃には実際には膨大な事前準備が必要で、直接コード実行権限がなければ大きな意味はない、ブラウザで任意のJSコードから任意の情報を漏洩させることは不可能で、自分は性能向上のためにすべての緩和策を無効化している
CHERIアーキテクチャを勧めている
ポインタ構造を変えるだけでは済まないと指摘し、本当に必要なのはハードウェアで各メモリアクセスにアドレス境界情報を付与することであり、過去のx86セグメント方式(80286)に言及している。そのようなシステムでもソフトウェアが境界情報を正確に扱う必要があったが、結局は同じ限界を持っていた
現時点で主要なすべてのOSにこの脆弱性へのパッチ(あるいは関連マイクロコード)が適用されるのか確認する質問
イエス、情報公開解禁日は今日(5月13日)だと答えている