AirPodsの高速接続におけるセキュリティ脆弱性
(blogs.gnome.org)- AirPodsファームウェアの CVE-2024-27867 により、Bluetooth MACアドレスを知っている人がデバイスに接続し、マイクを聞いたり音楽を再生したりできる可能性がある
- この脆弱性は、Apple独自プロトコルの Fast Connect 経路で認証と暗号化の状態を明示的に確認していないために発生する
- 攻撃に必要な Bluetooth MACアドレス は完全な非公開情報ではなく、ペアリングモード時やAirPodsがアクティブな状態で電波から取得できる
- AirPodsが閉じた充電ケース内、またはAirPods MaxがSmart Case内にある場合は無線機能がオフになり、接続自体が不可能
- AppleはAirPodsおよび一部Beats向けのファームウェアアップデートを配布したが、iOS・macOSなしで使うAndroid・Windows・Linuxユーザーは更新手順がより煩雑になる可能性がある
AirPodsファームウェアの脆弱性と影響範囲
- Apple AirPodsファームウェアに CVE-2024-27867 のセキュリティ脆弱性がある
- Bluetooth MACアドレスを知っている人はAirPodsに接続して次の動作を行える
- マイク の音を聞く
- 音楽を再生する
- 別の接続済みデバイスで再生中の音楽を確認して一時停止する
- AAPプロトコルで可能な一部操作を実行する
- 不正な形式のメッセージを送ってAirPodsをクラッシュさせる
- AirPodsがすでにスマートフォンに接続されていても、攻撃者は追加で接続できる
- ただし攻撃者がマイクを有効にすると音楽再生は停止する
- AirPodsが閉じた充電ケースの中、またはAirPods MaxがSmart Caseの中にある場合は無線機能がオフになり、いかなる接続も不可能
脆弱性の発見経路
- AirPods 3はmacOSとAppleデバイスの組み合わせでは複数の機能が自然に動作したが、同じノートPCをLinuxで起動するとスマートフォンとノートPCに同時接続されなかった
- この違いから、一般的なBluetoothヘッドホンにはない Apple専用プロトコル が使われていると見て、一部機能をLinuxで再実装するための分析を始めた
- 分析の過程で、Bluetooth周辺機器を接続するAppleの Fast Connect 機能に脆弱性が見つかった
Fast Connectの動作方式
- Fast ConnectはApple独自のプロトコルであり、Bluetooth仕様の ping機能 を創造的に利用している
- 目的は、2台のAppleデバイス間の接続設定時間を約1秒から約0.5秒に短縮することにある
- 接続先デバイスと認証する前に、両デバイスは L2CAP pingメッセージ をやり取りする
- Appleはpingペイロード内にプロトコルメッセージを入れる
- この方式により、Bluetooth仕様に違反せずに双方がFast Connectをサポートしているか確認する
- その後、追加で3往復のメッセージにより接続に必要なネゴシエーションを進める
- 全体で往復メッセージは4回にとどまり、通常のBluetooth接続でSDPディスクリプタをやり取りしてチャネルを構成する手順より高速
認証確認の欠落
- 問題は、Fast Connectを実装する別のコード経路で重要な検査が抜けていた点にある
- AirPodsは接続相手が実際に認証を行い、暗号化を有効にしたか確認しない
- 正常なiOSとmacOSは初期のFast Connectメッセージの後に認証と暗号化有効化の段階を実行する
- 攻撃者がこの段階を飛ばしても、AirPodsは Fast Connect 手順を継続する
- Fast Connectなしで通常のBluetooth方式でAirPodsに接続する場合は認証段階が暗黙的に含まれるため、このことがFast Connectコード経路で明示的な確認が欠けた理由である可能性がある
Bluetooth MACアドレスの条件
- 攻撃者はAirPodsの 固定Bluetooth MACアドレス を知っている必要がある
- このアドレスは完全な非公開情報ではない
- Bluetoothデバイスがペアリングモードのときは電波上で広告される
- AirPodsがアクティブな状態なら Ubertooth One のようなハードウェアで電波から容易に取得できる
アップデートと非Appleユーザーの問題
- Appleはここ数日のうちに、この脆弱性を修正した複数のファームウェアアップデートを配布した
- 対象はAirPods 2、AirPods 3、AirPods Pro、AirPods Pro 2、AirPods Max、および一部のBeatsヘッドホン
- ユーザーはAirPodsファームウェアが最新かどうか確認する必要がある
- セキュリティアップデート情報: Appleセキュリティページ
- 更新方法: AirPodsファームウェアアップデート案内
- AirPodsファームウェアは自動更新されるが、iPhoneやMacBookと一緒に使う場合にのみ自動更新される
- Android、Windows、LinuxユーザーのようにiOSやmacOSデバイスなしでAirPodsを使う人は、ファームウェアを簡単に更新しにくい
- こうしたユーザーはApple Storeでファームウェアアップデートを受けられるとみられる
報告とツール
- Bluetooth関連の質問や公開手続きにはUniversity of Potsdamの Jiska Classen が協力した
- BlueZのようなLinuxコミュニティツールがこの問題の発見に必要だった
1件のコメント
Hacker News のコメント
この過程の時間単位を決める要因が何なのか知りたい
結局のところ、双方がどの機能をサポートしているかを確認し、どの 物理層プロトコル で通信するかを決めるハンドシェイクが時間を食う構造になっている
一応いくつかサードパーティ製アプリはあるが信頼性が低く、幸い Mac では大半が可能だが、装着テストだけは iPhone が必要だ。ファームウェアのアップグレードはユーザーが制御することもできず、状態や進行状況の情報もまったくないので、できる限り混乱するような作りになっている
Apple Store のサポート担当者に「AirPods を Mac に接続したままケースを開け、ケースを電源につないで30分ほど置いておいてください」と言われたことがあるが、実際には更新にはかなりランダム性があるように感じる。Apple Store のスタッフも iPhone 以外の Apple 製品同士の連携については時々かなり曖昧な理解しかないようで、AirPods を iPhone なしで Mac と Android だけで使っていると話したら2度も驚かれた
https://support.apple.com/en-us/106340
米国版では最新ファームウェアのバージョン番号が異なっており、たとえば AirPods Pro 第2世代 は 6F8 だが、インド版では 6B34 になっている
Linux 実装 についての続報が待ち遠しい
更新の主導権 がもっとほしい
https://support.apple.com/en-us/106340
AirPods ユーザーの95%以上はファームウェア更新を意識しなくてよいのは確かだが、気にする人向けには何が起きているのか確認する方法があるべきだ
たいていは大きな問題ではないが、AirPods のファームウェアを数日遅れで受け取ったことがあり、今後は 即時更新 が重要になる場面が来るかもしれない
既存の接続を切る方式なら、ユーザーに気づかれずに通話や音声ストリームを盗み聞くのは難しそうに見える。最悪でも近距離で MAC アドレスをスキャンして自動接続し、耳元でノイズを再生する程度なのか、それとももっと大きな問題なのか分からない
著名な要人や政治家がビデオ通話中に AirPods を奪うようなことはできるかもしれないが、すぐ気づかれそうで、それ以上に悪いことがあるのか気になる
さらに Bluetooth 接続を乗っ取るということはかなり広い攻撃面を得ることでもあり、攻撃者が別の脆弱性を知っていれば、追加のエクスプロイトチェーンにつながる道も開ける
「Fast Connect」プロトコルは複数の機器に同時に「接続」することを許しているようなので、ユーザーは気づかない可能性が高い。別の攻撃としては、清掃員を装ってオフィスのあちこちに コースター 型の装置を置き、近くの AirPods の音声をかすめ取るというものもある
肝心な難所はすでに解決済みといえるので、あとは小さなバッテリーと Bluetooth 送信機、記憶装置を入れた機器を作るだけで、人々が話している場所の近くで 高品質オーディオ を収集できてしまう
ただし Bluetooth の圏内にいる必要があるので、普通に盗聴するほうが簡単かもしれない
もし未修正なら、誰かが Flipper Zero 向けの AirPods 妨害アプリを作って、公共の場でみんなの AirPods オーディオを切断して苛立たせていただろう
6A326 が修正を含むバージョンのようだ
https://support.apple.com/en-us/HT214111
おそらく AirPods Pro 第2世代 向けのバージョンだと思う