世界を動かす技術を、日本語で。

AliExpressがBluetoothマルチポイントを妨害するサイレントWebAudioフィンガープリンティングを実行

概要

AliExpressのホームページは、ユーザーに気づかれずにWebAudio APIを利用し、デバイスのフィンガープリントを取得。 この隠れたオーディオ処理がBluetoothマルチポイントヘッドホンの動作に悪影響。 原因はcollina.jsとfireyejs.jsという2つの難読化されたスクリプト。 uBlock Originでこれらのスクリプトをブロックすることで問題を回避可能。 セキュリティとプライバシーの観点からも、ユーザー側での対策が推奨される。

AliExpressで発生したBluetoothヘッドホンの奇妙な問題

  • Bluetoothマルチポイント対応ヘッドホン で、PCとスマホの両方に同時接続
    • 通常はPCの音声が優先、PCが無音時のみスマホ音声が再生
  • AliExpressのページをFirefoxまたはChromeで開く と、スマホの音楽再生が突然停止
    • タブを閉じると即座に復旧
    • タブやブラウザ、Windows側でミュートしても効果なし
  • ページ上に可視のメディア要素や再生中の音声は存在しない
  • 問題発生までに数秒の遅延 がある点が特徴

隠れたWebAudio APIの利用を調査

  • <audio><video>要素、HTMLMediaElement.play()の呼び出しは検出されず
  • Media Sessionやメディアリクエストもなし
  • AudioContextの生成を監視するコードを挿入して調査
    • AudioContextのコンストラクタとAudioNode.prototype.connect()をラップ
  • AliExpressホームページ読み込み時に2つのAudioContextが生成され、destinationに接続
  • 音は出ていないが、システムのオーディオ経路がアクティブ化

スクリプトの正体と動作

  • collina.jsとfireyejs.js がAudioContextを生成
    • どちらもAWSCディレクトリ配下、Alibabaのセキュリティ・アンチアビューズツールの一部
  • WebAudioグラフの構成
    • 鋸歯状オシレーター → AnalyserNode → ScriptProcessorNode → ゼロゲインのGainNode → destination
    • ゼロゲインなので無音だが、オーディオ経路はアクティブ
  • 通常のメディア再生とは異なり、ミュート操作が効かない
  • Bluetoothオーディオ経路が解放されず、スマホ音声に切り替わらない問題を引き起こす

ブラウザフィンガープリントの手法

  • WebAudio以外にも多岐にわたるデバイス情報・挙動を収集
    • canvas描画、WebGL情報、オーディオ解析、画面サイズ、ハードウェア情報、プラグイン、対応フォーマット、WebRTC挙動、パフォーマンス、ユーザー操作など
  • 結果をシリアライズ・暗号化し、Alibabaのテレメトリーサービスへ送信
  • フィンガープリントはCookieより改ざんや回避が困難
    • 不正利用対策やボット検出、ユーザー行動分析が主な目的

uBlock Originによる対策

  • uBlock OriginのMy filtersに以下を追加し、スクリプトをブロック
    ! AliExpress AWSC fingerprinting scripts
    ||assets.aliexpress-media.com/g/AWSC/uab/*/collina.js$script,domain=aliexpress.com
    ||assets.aliexpress-media.com/g/AWSC/fireyejs/*/fireyejs.js$script,domain=aliexpress.com
    
  • 既存のAliExpressタブは閉じてから再度アクセス
  • ブロック後はAudioContextの生成がなくなり、Bluetooth問題も解消
  • スクリプトは将来的にパターンが変わる可能性もある点に注意
  • アンチフラウド用途のため、CAPTCHAやログイン・決済時の不具合発生時は一時的に解除を推奨

なぜブロックするのか

  • 一般的なショッピングページで過剰なデバイス情報収集が行われている
  • 難読化されており、内容の検証や目的の透明性が低い
  • ユーザーに通知なく、オーディオ経路を専有しハードウェア動作に影響
  • サーバー側でのデータ保持期間や利用範囲が不明
  • プライバシーとユーザーコントロールの観点から、自己防衛が妥当

まとめ

  • AliExpressのホームページは、隠れたWebAudioグラフを生成し、ユーザーのデバイスを詳細にフィンガープリント
  • この処理がBluetoothマルチポイントヘッドホンの音声切替に悪影響を及ぼす
  • uBlock Originでcollina.jsとfireyejs.jsをブロックすることで問題を回避可能
  • プライバシーと快適な利用のため、ユーザー側での対策が重要

Hackerたちの意見

最近、Bluetoothヘッドフォンで問題が発生したんだ。マルチポイントBluetoothオーディオに対応してるから、PCとスマホに同時接続できるんだけど、Aliexpressのウェブページを開くと、静かなオーディオストリームが流れ続けて、PCとヘッドフォンのリンクが維持されて、スマホの音声がブロックされちゃうんだ。調査してみたら、デバイスフィンガープリンティングを行う難読化されたコードが動いていて、その副作用としてFirefoxやChrome、Windowsが認識できない静かなオーディオストリームが続いて、Bluetooth接続が維持されてるみたい。

これ、記事のAI要約なの?

これは気になる状況だと思う。技術が情報を追跡したり、キャプチャしたり、漏洩させたりする理由は、もっと心配すべきことがあるんじゃないかと疑ってる(多分間違ってるかもしれないけど)。携帯電話やコンピュータ、ルーターなど、すべてが悪意のある人に貴重な情報を漏らす可能性があるよね。特にスパイ活動や軍事、商業に関してはね。これはすでにかなりの規模で起こってるから、遠い未来の話じゃないよ。少なくとも、政府や機関は、取得した技術を調査するための枠組みを作るべきだと思う。コミュニティや市民社会も、初心者でも分析できるようなソフトウェアを使って、深いレベルで分析できるスクリプトを作ることができるんじゃないかな。

確かに、私も気になるね。特に、Windowsがそのオーディオストリームに気づかなかったり、ハードウェアに影響を与えるのを止められなかったのが嫌だな。他にこんなサイドチャネルってあるのかな?もしかしたら、Windowsを使ってる私が悪いのかも。

オーディオを再生する能力は、ウェブカメラやマイクの使用と同じように、許可制にすべきだと思う。だけど、多くの人はAliexpressがオーディオを再生するのを喜んで許可するだろうね。サイトには再生したい動画があるだろうし。そう考えると、これは一回限りの許可かもしれない。Aliexpressで買い物をしたいと思っても、こういうことをしてると知ったら、音声付きの動画を再生するたびに許可を求められるのが面倒に感じるかも。

オーディオを再生する能力は、タブミュートで許可制にできることが多いけど、Aliexpressが使ってる方法はそのメカニズムを完全にバイパスしてるんだよね。

iOSが特定のアプリにスピーカーの使用を許可するように促してくれたら嬉しいな。アプリ使ってて、急に動画が大音量で自動再生されるのが嫌なんだよね。

最近数週間で気づいたんだけど、AliExpressのiOSアプリを最近開いてた(つまりバックグラウンドにあった)場合、車のオーディオが音声コマンドを受け取ったと思っておかしくなっちゃうんだ。AliExpressのアプリを終了させたらすぐに問題が解決したよ。何度も起こるのを見て、これは怪しいと思ってアプリをアンインストールしたんだ。

AliExpressみたいなアプリをインストールするなんて、全く想像できないな。

一部の中国のモバイルアプリが、このトリックを使ってバックグラウンドでアプリを生かしておくことが知られてるよね。噂によると、こうすることで「アクティブユーザー」のKPIをより良く達成できるらしい。編集:数量の修飾子

これ、他のサイトでもめっちゃ見たことあるよね。特にTwitterとか、最近のキャプチャページでもよく見かける。ほんとイライラする!

ブラウザフィンガープリンティングって、時々すごくクリエイティブだよね。eBayのWebSocketポートスキャナー[1]や、数年前のRedditのDRMやJavaScript JITを悪用した件[2]なんかは、何も特別な許可がなくてもバックグラウンドでできる深い解析の例だよ。 [1] https://blog.nem.ec/2020/05/24/ebay-port-scanning/ [2] https://iter.ca/post/reddit-whiteops/

Hacker Newsで議論の続きを見る