セキュリティ

iOSのバグでアプリが「ユーザーとSiriの会話」を傍受可能になっているとの指摘


Bluetoothにアクセス可能なアプリでAirPodsあるいはBeats製のヘッドホンを使用している場合、iOSのキーボードに標準搭載されている音声入力機能を使うことで「Siriとユーザーの会話内容」を録音できてしまうと、ブラジルのアプリ開発者であるギジェルメ・ランボ氏が指摘しています。ランボ氏によると、「アプリからのマイクへのアクセス許可要求」は不要で、「アプリがマイクを使用していた痕跡」を残すことなく、会話の傍受が可能になるとのことです。

SiriSpy - iOS bug allowed apps to eavesdrop on your conversations with Siri | Rambo Codes
https://rambo.codes/posts/2022-10-25-sirispy-ios-bug-allowed-apps-to-eavesdrop

AirPodsでは内蔵マイクを利用して音声アシスタントのSiriを使用することができます。AirPodsでSiriを使用したことがある人なら、Siri利用時はマイクを使用しているにもかからわず音質が低下しないことに気付いている人もいるかもしれません。通常、ワイヤレスイヤホンなどを用いてビデオ会議を行うと、出力される音質が大幅に低下します。これはマイク使用時は音声の出力品質が低下するというBluetooth規格の物理的な制限によるものだそうです。しかし、前述の通り、AirPodsでSiriを使用する際、マイクを利用しているにもかかわらず音声品質が低下することはありません。


AirPodsをMac上で統合するためのアプリである「AirBuddy」を開発しているランボ氏は、開発の一環として常にSiriが利用できるAirPodsやBeats製ヘッドホンの性能テストを実施し、新機能の開発やトラブルシューティングに役立てているとのこと。

この中で自作したツールのひとつが、コマンドラインツールの「bleutil」です。ランボ氏はbleutilを使ってAirPodsが送信するパケットをチェックすることで、何が起こっているのかをデバッグしているそうです。


ランボ氏がbleutilの新機能として、Bluetooth LEデバイスに接続してGATTデータベースを照会する機能を開発していた最中、サービスの特性に対する通知をサブスクライブして、時間の経過とともに16進数表現でターミナルウィンドウにストリーム表示する機能を追加することにしたそうです。

AirBuddyの機能を動かすための情報のほとんどは、Bluetooth LEでデバイスに接続してGATTデータベースとやり取りする必要のない広告やBluetooth Classicから得ているので、AirPodsや同様のデバイスに存在するサービスや特性を調べたことはなかったとランボ氏は語っています。

Bluetooth LE GATTでは、機器間のリアルタイム通信には不可欠な「notification」という機能に対応していると、その特性によって保存されているデータが変化した時に、他のデバイスが現在のデータを常に問い合わせ(ポーリング)しなくても通知を受けることができるように、端末をサブスクライブすることができます。AirPodsはこの「notification」と、UUIDの「9bd708d7-64c7-4e9f-9ded-f6b6c4551967」に対応していることに、ランボ氏は気づきます。ランボ氏がこれについて詳細に調べてみたところ、「9bd708d7-64c7-4e9f-9ded-f6b6c4551967」は、DoAPと呼ばれるSiriやキーボードの音声入力機能で使用されているものであることが明らかになります。

これらを把握したうえで、再びbleutilを起動してAirPodsから送信されるイベントを分析したところ、AirPods経由でSiriを利用すると、16進数のバイト列がbleutilに流れ込んできたそうです。さらに、AirPodsを使ってSiriと会話すると、このバイト列がどんどん変化し、黙るとバイト列の変化も停止したとのこと。この16進数のバイト列は、Siriとユーザーの会話内容そのものだったわけです。


これに気づいた時のランボ氏の最初の感想は「ああ、こんな風に通信することでSiri利用時の音質低下を回避していたのか。なんてクールなんだ」というもの。しかし、macOSではマイクの使用許可を求めずにAirPodsから音声を取得することが可能とわかったため、すぐに「これはまずい」と思ったそうです。

しかし、16進数のバイト列が暗号化された音声データである可能性もあるため、まずはこれを確認することにしたとランボ氏。ランボ氏は16進数のバイト列をHex Fiendに貼りつけ、AudacityやAdobe Auditionなどの「生データを聞く」というオプションを使い、サンプルレートやビットレートを調整しながら音声が再生できないか試してみたそうです。

すると、テスト時に自分が話した内容とほぼ一致した音声を再生することに成功。そもそも、Bluetooth LEで送信される音声が非圧縮では意味がないことに後に気づいたとランボ氏。そこで、これらの機能を担うシステムコンポーネントについて調べてみると、「Opus」という非可逆音声圧縮フォーマットが多く参照されていることがわかります。

ランボ氏はOpusライブラリをコンパイルし、AirPodsに接続してバックグラウンドで接続を維持しながら通知や音声データを傍受することができるアプリを概念実証用に作成。実際に、ユーザーとSiriの会話を傍受することに成功しています。

ランボ氏は考え得る最悪のシナリオとして、「他の理由で既にBluetoothのアクセス許可を取得しているアプリが、このバグを悪用してユーザーとSiriの会話内容を傍受すること」を挙げています。


ランボ氏は今回発見したバグについて、2022年8月26日にAppleのセキュリティチームに報告しており、2022年10月24日に配信されたiOS 16.1およびその他の最新バージョンOSで、バグに対する修正パッチが適用されています。なお、ランボ氏はバグ報告による報酬として7000ドル(約100万円)の報奨金を受け取ることができるそうです。

この記事のタイトルとURLをコピーする

・関連記事
第2世代「AirPods Pro」で音がずれるオーディオドリフト問題が報告される - GIGAZINE

Appleが激震を与えた「AirPods Pro」は何がどのように優れているのか専門家が分析するとこうなる - GIGAZINE

なぜAppleのAirPodsは修理できないのか? - GIGAZINE

Appleのワイヤレスイヤホン「AirPods」をユーザーが自分の手で分解・修理することはできるのか? - GIGAZINE

「AirPods Proから大音量の警報が流れ子どもの鼓膜が破れた」としてAppleが訴えられる - GIGAZINE

歴代AirPodsの中身をCTスキャンでよく見てわかる進化の軌跡 - GIGAZINE

in モバイル,   ソフトウェア,   ハードウェア,   セキュリティ, Posted by logu_ii

You can read the machine translated English article here.