AliExpressがWebAudioフィンガープリントでBluetoothマルチポイントを妨害している件
AliExpress runs silent WebAudio fingerprinting that breaks Bluetooth multipoint
AliExpress runs silent WebAudio fingerprinting that breaks Bluetooth multipoint
AliExpressのサイト内で密かに実行されている「WebAudioフィンガープリント」が、一部の環境でBluetoothマルチポイント接続を不安定にさせていることが報告されています。Webのブラウザ機能が悪用されることで、デバイスの接続性にまで悪影響を及ぼすという非常に厄介な事象です。エンジニアの皆さんは、Web技術によるユーザー追跡の弊害と、それによる予期せぬサイドエフェクトについて注意が必要です。
最近、Bluetoothヘッドホンで困ったことがあったんだ。マルチポイント接続に対応していて、PCとスマホに同時に繋げるやつなんだけどね。Aliexpressのページを開くと、無音のオーディオストリームが流れてPCとヘッドホンの接続がアクティブな状態を維持しちゃって、スマホ側の音声がブロックされるんだ。調べてみたら、難読化されたコードがデバイスのフィンガープリントを採取してて、その副作用でFirefoxやChrome、Windowsが認識できないような無音オーディオストリームを流して、Bluetooth接続を繋ぎっぱなしにしていたみたいだよ。
かなり深刻な状況だと思う。考えすぎかもしれないけど、もっと懸念すべきなのは、情報の種類によってより機密性が高く価値のあるデータを追跡・収集・漏洩させる技術が存在していることじゃないかな。スマホ、PC、ルーターなんかはどれも、悪意のある攻撃者に価値ある情報を吸い上げられる可能性がある。特にスパイ活動や軍事、ビジネスといった分野では、すでにかなりの規模で実際に起きていることだし、遠い未来の話じゃないはずだ。少なくとも政府や公的機関は、導入する技術すべてを調査するための枠組みを作るべきだよ。コミュニティや市民社会でも、素人でも深いレベルでソフトウェアを解析できるようなツールを作れたらいいんだけどね。
いっそのこと、音声の再生自体もWebカメラやマイクみたいに許可制にするべきじゃないかな。とはいえ、Aliexpressなら動画を見たいユーザーも多いだろうから、みんな喜んで許可しちゃう気もするけど。せめて「1回限りの許可」にするっていうのはどうだろう。もし自分がAliexpressで買い物をする時でも、こういう裏があるって知ってたら、動画を見るたびに許可を求められても構わないと思えるし。
ここ数週間、AliExpressのiOSアプリを少しでも開くと(バックグラウンドに回った状態でも)、車のオーディオが勝手に反応して音声コマンドを受け取ったと勘違いするようになったんだ。AliExpressのアプリを完全に終了させると直るから間違いない。何度か同じことが起きたんで、怪しいと思ってアプリをアンインストールしたよ。
あ、Wolt(欧州版のDoordashみたいなサービス)も同じことをやってるのか。アプリを使っているとVoice Over(iOSのスクリーンリーダー)がバリバリとノイズを立てたり、勝手に音量が変わったりするのは気づいてたんだ。iOS特有の変な挙動か、APIの使い方が悪いんだろうと勝手に思ってたけど、これってフィンガープリント採取の可能性が高いな。
前の補聴器を使っていた時、特定のウェブサイトにアクセスすると環境音の増幅レベルが変わることに気づいたことがあるよ。Bluetoothで何かやってるんだろうなとは思ってたけど、ろくな理由じゃないだろうね。iPhone 13とKirkland/Phonakの補聴器を使ってた時の話だけど。最近は気づかないな。新しいPhonakの補聴器に替えたし、iOSのアップデートもあったからかもしれない。無音Bluetoothのイタズラが新型の補聴器には影響しにくくなったか、処理が変わったのかもね。間違いなく裏では何かが続いているはずだけど。
ブラウザを悪用する独創的な方法を見つける人がいると、内心少し笑ってしまうんだよね。今のウェブが根本的に設計から崩壊しているっていう、これ以上ない証明だから。JavaScriptに新しい機能が公開されるたびに、ウェブブラウザと「リモートで任意のコードを実行できるプログラム」の境界線なんて、ほとんど形骸化してきているよ。まあ、自分もWebUSBやWebRTCなんかを使っているウェブサイトを普通に使っちゃうし、ひどい偽善者なんだけどね。
じゃあAppleはApp Storeから削除するってことだね。閉鎖的なシステムにしている理由として「ユーザーを悪意あるアプリから守るため」ってずっと言ってるわけだし、そうなるよね?
こういう姑息な手口に対しては、最近のブラウザで見かける「タブのスピーカーアイコン」が反応してくれると助かるんだけどな。現状反応してくれない(少なくとも自分の環境では)ってことは、「無音オーディオ再生」っていうのがウェブサイト側にとってかなり一般的な手法になっていて、ブラウザ側が実際にオーディオストリームの中身を解析するような面倒な処理をせざるを得なくなっている、と解釈するしかないね。あと気になるのは、これがモバイルブラウザでバックグラウンド実行を維持する口実になっていないかということ。iOS Safariだとメディア再生中っていうだけでタブがずっと生き残ることが多いしね。
WebAudioを使ったフィンガープリントは(Firefoxなどでは特に)かなり緩和されているよ。現在どういう値が分布しているのか、そして最近の取り組みについて簡単にまとめた記事を書いたから見てみて。https://ritter.vg/blog-webaudio_alibaba.html