1 ポイント 投稿者 GN⁺ 2024-06-30 | 1件のコメント | WhatsAppで共有
  • 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ファームウェアが最新かどうか確認する必要がある
  • AirPodsファームウェアは自動更新されるが、iPhoneやMacBookと一緒に使う場合にのみ自動更新される
  • Android、Windows、LinuxユーザーのようにiOSやmacOSデバイスなしでAirPodsを使う人は、ファームウェアを簡単に更新しにくい
  • こうしたユーザーはApple Storeでファームウェアアップデートを受けられるとみられる

報告とツール

  • Bluetooth関連の質問や公開手続きにはUniversity of Potsdamの Jiska Classen が協力した
  • BlueZのようなLinuxコミュニティツールがこの問題の発見に必要だった

1件のコメント

 
GN⁺ 2024-06-30
Hacker News のコメント
  • 同じ部屋の中の2台の機器が電磁スペクトラムのごく狭い一部しか使わなくても、毎秒数千件のメッセージをやり取りできるはずなのに、Bluetooth ではなぜ1つのメッセージにマイクロ秒ではなく数百ミリ秒もかかるのか気になる
    この過程の時間単位を決める要因が何なのか知りたい
    • ここでは断言できないが、普通はいくつかの要因が重なった結果だと思う: 広告を出す機器が ビーコン をどれくらいの頻度で送るか、広告チャネルが複数あるか、下位互換性のためにビーコンやハンドシェイクがプロトコル上もっとも遅い速度で送信されるか、周囲のノイズのせいで物理層の再送が必要か、などが影響する
      結局のところ、双方がどの機能をサポートしているかを確認し、どの 物理層プロトコル で通信するかを決めるハンドシェイクが時間を食う構造になっている
  • 同じチップを使っている影響を受けた Beats デバイスは、Android の Beats アプリから実際に更新できたと記憶している
    • AirPods Pro 第1世代と第2世代を Android スマートフォンで使ってきたが、Android では ファームウェア更新 も、バージョン確認も、モード選択も、長押し動作の変更も、バッテリー残量確認も、まともに行う方法がない
      一応いくつかサードパーティ製アプリはあるが信頼性が低く、幸い Mac では大半が可能だが、装着テストだけは iPhone が必要だ。ファームウェアのアップグレードはユーザーが制御することもできず、状態や進行状況の情報もまったくないので、できる限り混乱するような作りになっている
      Apple Store のサポート担当者に「AirPods を Mac に接続したままケースを開け、ケースを電源につないで30分ほど置いておいてください」と言われたことがあるが、実際には更新にはかなりランダム性があるように感じる。Apple Store のスタッフも iPhone 以外の Apple 製品同士の連携については時々かなり曖昧な理解しかないようで、AirPods を iPhone なしで Mac と Android だけで使っていると話したら2度も驚かれた
  • 記事にある Apple Support のリンクはインド版のようで、米国版はこちら:
    https://support.apple.com/en-us/106340
    米国版では最新ファームウェアのバージョン番号が異なっており、たとえば AirPods Pro 第2世代 は 6F8 だが、インド版では 6B34 になっている
  • Linux でもこの機能の実装詳細を扱う記事が出たらぜひ読みたい
    Linux 実装 についての続報が待ち遠しい
  • AirPods 2 のファームウェアが古いバージョンのままだが、ユーザー側から iOS に明示的に更新させることはできず、いつ更新が行われるのかも表示されない
    更新の主導権 がもっとほしい
    • 「AirPods が充電中で、Wi‑Fi に接続された iPhone、iPad、Mac の Bluetooth 圏内にあれば、ファームウェア更新が自動的に配信される」と書かれている
      https://support.apple.com/en-us/106340
    • 現在および将来の AirPods に機能がさらに追加されるほど、更新を自分でトリガーするか、少なくとも更新が行われたという通知は受け取りたい
      AirPods ユーザーの95%以上はファームウェア更新を意識しなくてよいのは確かだが、気にする人向けには何が起きているのか確認する方法があるべきだ
      たいていは大きな問題ではないが、AirPods のファームウェアを数日遅れで受け取ったことがあり、今後は 即時更新 が重要になる場面が来るかもしれない
    • もっと多くの制御権が欲しいなら、Apple 製品 は向いていないのかもしれない
    • これを リバースエンジニアリング するのに時間を使ってみたい。面白そうだ
  • 脆弱性が良くないのは当然として、実際にどれほど深刻なのか知りたい。攻撃者ができる「怖い」ことは何なのだろう
    既存の接続を切る方式なら、ユーザーに気づかれずに通話や音声ストリームを盗み聞くのは難しそうに見える。最悪でも近距離で MAC アドレスをスキャンして自動接続し、耳元でノイズを再生する程度なのか、それとももっと大きな問題なのか分からない
    著名な要人や政治家がビデオ通話中に AirPods を奪うようなことはできるかもしれないが、すぐ気づかれそうで、それ以上に悪いことがあるのか気になる
    • 攻撃者は 危険なほど大きな音 を再生できるし、AirPods を装着しているだけで使っていない人の周囲の音を盗み聞くこともできる。また、通話サービスを経由したり通話履歴を残したりせずに、発信者になりすますことも可能だ
      さらに Bluetooth 接続を乗っ取るということはかなり広い攻撃面を得ることでもあり、攻撃者が別の脆弱性を知っていれば、追加のエクスプロイトチェーンにつながる道も開ける
    • 最悪の場合、誰かがバッグに忍ばせておけるような装置を作り、ヘッドホンのすべての音を録音できるかもしれない。USB ドライブのような形にもできる
      「Fast Connect」プロトコルは複数の機器に同時に「接続」することを許しているようなので、ユーザーは気づかない可能性が高い。別の攻撃としては、清掃員を装ってオフィスのあちこちに コースター 型の装置を置き、近くの AirPods の音声をかすめ取るというものもある
      肝心な難所はすでに解決済みといえるので、あとは小さなバッテリーと Bluetooth 送信機、記憶装置を入れた機器を作るだけで、人々が話している場所の近くで 高品質オーディオ を収集できてしまう
    • AirPods を積極的に使っていない時でも耳に挿したままの人は多いので、そういう場合はマイクを使って対面の会話を盗み聞きできる
      ただし Bluetooth の圏内にいる必要があるので、普通に盗聴するほうが簡単かもしれない
    • 現実的に最悪なのは、単に迷惑をかけることだと思う
      もし未修正なら、誰かが Flipper Zero 向けの AirPods 妨害アプリを作って、公共の場でみんなの AirPods オーディオを切断して苛立たせていただろう
  • Settings > Bluetooth > Your AirPods で [i] を押せば、AirPods が現在接続されていなくてもバージョンを確認できる
    6A326 が修正を含むバージョンのようだ
    https://support.apple.com/en-us/HT214111
    • 「AirPods Firmware Update 6A326, AirPods Firmware Update 6F8, and Beats Firmware Update 6F8」と書かれており、自分の機器は 6F8 だ
      おそらく AirPods Pro 第2世代 向けのバージョンだと思う
  • 可能性は低いと分かってはいるが、今回の件が Apple に他の OS、少なくとも Android での AirPods 更新 を何らかの形でサポートさせるきっかけになればいいと思う
  • 手動更新のオプションはない。更新は 自動更新 のみで、その自動更新をどう誘発すればいいのかもはっきりしない
    • 記憶が正しければ、AirPods を削除またはペアリング解除した後、強制的に再ペアリングすると更新が強制的にトリガーされる
  • バッテリーが切れないことに加えて、有線ヘッドホン の利点がまた1つ増えた
    • 安定して接続されるという利点もある。Linux での Bluetooth は惨事だ