2026年8月29日星期六

WhaleAgent
AliExpress 無聲音訊令藍牙耳機切不走

AliExpress 無聲音訊令藍牙耳機切不走

一名用戶發現藍牙耳機不肯把音訊交還手機,源頭竟是開着的 AliExpress 分頁。頁面兩個反濫用腳本各自建立隱藏的 WebAudio 音訊圖做裝置指紋,音量設為零、聽不見,卻仍接到系統音訊輸出,令瀏覽器持續運算。分頁靜音亦無效,因為頁面根本沒有媒體元素。

事件背景

發現者是技術博客 laserphile 的作者,文章刊於 8 月 20 日。他的症狀很具體:只要在 Firefox 或 Chrome 開啟 AliExpress 頁面,支援多點連接的藍牙耳機就會斷開手機那一邊,即使畫面上沒有任何影片或音樂在播放。

他的做法是包裝瀏覽器的 `AudioContext` 建構函式,記錄所有音訊節點的連接,結果找到兩個隱藏的音訊環境,分別由 `collina.js` 與 `fireyejs.js` 建立。兩個檔案都來自 `assets.aliexpress-media.com` 的 AWSC 路徑,屬於阿里巴巴的瀏覽器安全與反濫用工具。

兩者建立的音訊圖結構相同:鋸齒波振盪器(sawtooth oscillator)→ AnalyserNode → ScriptProcessorNode → 增益節點(gain 設為 0)→ AudioContext.destination。原理是同一段已知波形,經過不同 CPU、作業系統與瀏覽器的音訊處理後,輸出會有極細微差異,這個差異就成為裝置的指紋。

為何靜音沒有用

關鍵在最後一段接線。把音訊圖接到 `AudioContext.destination`,等於告訴瀏覽器「這條線會出聲」,於是瀏覽器會真的持續運算整個音訊圖,即使最終音量是零。對系統而言,這個分頁一直在輸出音訊,藍牙耳機因此判斷它仍然需要保持連接,不會把通道讓回手機。

分頁靜音按鈕之所以無效,是因為那個按鈕針對的是 `<audio>` 或 `<video>` 這類媒體元素,而這裡一個都沒有。

作者提供的緩解方法是用 uBlock Origin 封鎖兩個腳本,但他同時指出一個容易忽略的細節:封鎖腳本不會關掉它已經建立的音訊環境,所以要先關掉現有分頁再封鎖,否則問題會繼續存在。

這算不算在追蹤你

這是整件事最需要小心的一段。原作者本人寫得相當保留:「我無法看見 AliExpress 把這些資料送到伺服器之後做了什麼。」他認為用於偵測欺詐是合理的用途,但對於資料保留多久、有沒有與身分連結,明確表示不確定。AliExpress 這類平台要處理帳戶盜用、假帳戶、爬蟲、自動下單、支付欺詐與評價操縱,指紋技術是這個領域的常規工具,並非某一間公司獨有。

而在指紋的實際效力上,Firefox 的指紋防護負責人 Tom Ritter 給了一個相當潑冷水的數字:99.24% 的 Firefox 用戶只會回傳三個數值中的其中一個,另外 0.76% 回傳零,屬於採集失敗。三個數值之間的差異來自 CPU 層面,音訊處理是大量浮點運算,指令集的分別會滲進結果,其中一個數值同時涵蓋所有 x86 以及不支援 fused multiply-add 的 x64 處理器。Firefox 早在 118 版就把 WebAudio 的輸出壓成接近固定值,作為指紋防護的第一批功能之一。

換言之,把這個腳本說成「偷偷追蹤你」是誇張了:以 WebAudio 這一項而言,它作為識別碼的價值相當有限。但值得注意的是,把指紋壓平並不等於停掉音訊圖。Firefox 用戶回傳的數值雖然幾乎一樣,那條音訊線仍然照樣接着系統輸出,藍牙耳機被佔住的副作用一樣會發生。真正困擾用戶的,不是被辨認出來,而是這個為了辨認而長期運轉的裝置。

來源

No comments yet