[レポート]PerfektBlue:自動車業界を制圧する汎用ワンクリック・エクスプロイト - Mercedes-Benz、Volkswagen、Skoda - CODE BLUE 2025 #codeblue_jp #codeblue2025

[レポート]PerfektBlue:自動車業界を制圧する汎用ワンクリック・エクスプロイト - Mercedes-Benz、Volkswagen、Skoda - CODE BLUE 2025 #codeblue_jp #codeblue2025

CODE BLUE 2025で行われた「PerfektBlue:自動車業界を制圧する汎用ワンクリック・エクスプロイト - Mercedes-Benz、Volkswagen、Skoda」というセッションのレポートです。
2025.11.18

こんにちは、臼田です。

みなさん、セキュリティ対策してますか?(挨拶

今回はCODE BLUE 2025で行われた以下のセッションのレポートです。

PerfektBlue:自動車業界を制圧する汎用ワンクリック・エクスプロイト - Mercedes-Benz、Volkswagen、Skoda

この講演では、PerfektBlue攻撃について説明します。これは、Mikhail EvdokimovがBlueSDK Bluetoothスタックで発見した一連の重大なメモリ破損およびロジックの脆弱性であり、これらを連鎖させることで、異なるベンダーが製造した数百万台の車両で無線経由のリモートコード実行(RCE)を実現できます。セッションでは、最初の発見から、複数のターゲットでRCEを取得するための洗練されたエクスプロイトチェーンの構築まで、脆弱性調査プロセス全体を案内します。フォルクスワーゲン、メルセデス・ベンツ、シュコダのIVIシステム概要とBluetoothアーキテクチャの紹介から始まります。さらに、発見と悪用の段階を掘り下げ、UAFの脆弱性を任意のメモリアドレスへの書き込み(AAW)プリミティブに変換する方法、およびロジックバグの連鎖によるメモリリークについて説明します。その後、これらすべてを組み合わせて、IVIシステム上で任意の関数の実行を実現し、RCEに至ります。

Speakers
Mikhail Evdokimov ミハイル・エフドキモフ

レポート

  • PerfektBlue
  • 1年前に発見した
  • 複数の脆弱性を使って何百万台のデバイスに攻撃できる
  • ミカエル
    • PCA
    • Pwn2Ownにも参加している
  • USB/WLAN/Bluetoothなど色々なものを扱っている
  • BlueSDK
    • 標準的なBluetoothで使われてる
    • PerfektBlueでは4つの脆弱性を活用している
  • メインターゲットは2022年のVW
    • ARM64bit
    • non-privilege userが有効
  • どう実装されているか
    • 今回は実装のコードではないので注意
    • Stack
      • Lower LayerとL2CAPがHICでつながる
    • ベンダごとペアリングの動きが違う
    • 攻撃者が何度も許可のポップアップを出し続けることもできる
  • AVRCPプロトコル
    • プロトコルは本日の話のスコープ外
    • 音量調整などに使う
    • 重要なのはOpcode/Pkt Type
    • ほぼ全て独自
  • AVRCP::Rx Frames
    • os_mallocで最終的に大きくなる
    • heapにコピー
    • Endで初期化
    • PWN frame type
  • AVRCPのUAF
    • ParseRspPdu関数
    • freeしたあと0にならないでポイントが残る
  • Heap Spraying Primitive
    • overrideする
  • AAW Primitive
    • UAFをコンバートする
    • UAFコンディションを得て置き換える
  • アプローチには課題がある
    • libcバージョンの違い
    • 解放されたチャンクが結合される
    • 最近のバージョンではTcacheが有効になっている
    • マージされない
    • 両方のケースを想定した一般的なケースを想定する必要がある
    • 2.26いぜんはQueueのよう
    • それ以上はStackのよう
    • どちらでも動くように
    • スプレーして参照される
    • fake rspPduを参照させて書き込み
    • しかしPIE/ASLRがある
    • 別の脆弱性が必要
  • Bluetooth::RFCOMM
    • RS-232
    • 典型的な通信が確認できる
    • Multiplexer Channel
      • パラメータの長さが大きいとチェックをパスしないが処理が継続される
      • サニタイズされていないparamLenが使われる
    • 検証してみる
      • Dynamic Channelを検証
  • Bluetooth::L2CAP
    • チャネルを確立
    • チャネルIDがどのようにアサインされるか
    • リモートIDは検証されていない
    • Zero CIDにして設定
  • つなげてみる
    • CIDを零に
    • L2_State_OPENに
    • アドレスリーク
    • systemが欲しい
  • Arbitrary Function Call
    • RXPDU
    • アプローチは3つ
  • AAR Primitive
    • Clean AAR primitive
    • 上書き
    • 最終的にsystem関数アドレスをリーク
  • 他のターゲット
    • SKoda
    • Mercedes-Benz
    • BMW
      • memory reak
    • Audi
      • 1ヶ月前にやったばかりで詳しく分析していない
  • RCEのインパクト
    • 1クリックでRCE
    • 他のエクスプロイトでもできる
  • まとめ
    • この攻撃が注目されている
    • 発見までの間隔が短くなっている
    • 影響を受ける可能性があるリストもある

感想

1回間違って押してしまうだけで通るのは危険ですね。気をつけたい

この記事をシェアする

FacebookHatena blogX

関連記事