蓝牙耳机总断连?开发者顺藤摸瓜,竟发现阿里全球速卖通在“播放静音”

蓝牙耳机总断连的问题引发了开发者 Matt Callaghan 对阿里巴巴购物网站背后技术的探索。通过调试,他发现该网站在无声播放音频的同时,却能持续追踪用户的设备信息。这一发现揭示了阿里巴巴在其首页执行的一项硬件副作用——音频指纹识别程序。进一步调查后,Matt 揭露了阿里巴巴使用 AWSC 反机器人套件中的跟踪程序,以及相关脚本构建的合成 Web Audio 处理图,用于捕获依赖硬件的执行特征。这些脚本包括 Collina.js 和 Fireyejs.js,它们构建了一个合成的 Web Audio 处理图,用于捕捉依赖硬件的执行特征。音频指纹识别的工作方式是让一个已知波形通过多个数学变换节点,由于数字信号处理程序在不同浮点运算单元、指令集、操作系统混音引擎和厂商驱动上执行,最终得到的频域输出会呈现细微的数值差异,而这些差异是用户特定软硬件环境所独有的。

--91likeyou---

AliExpress 让这条处理管线经过一个音量设置为零的增益级,同时仍将处理图直接绑定到主要硬件输出端:

const ctx = new (window.AudioContext || window.webkitAudioContext)();const osc = ctx.createOscillator();const compressor = ctx.createDynamicsCompressor();const analyser = ctx.createAnalyser();const gain = ctx.createGain();gain.gain.value = 0.0;osc.type = "triangle";osc.frequency.setValueAtTime(10000, ctx.currentTime);osc.connect(compressor);compressor.connect(analyser);compressor.connect(gain);gain.connect(ctx.destination);osc.start(0);const buffer = new Float32Array(analyser.frequencyBinCount);analyser.getFloatFrequencyData(buffer);复制代码

通过将零增益的 GainNode 连接到 ctx.destination,脚本在平台层启动了一条未静音的音频流,使主机操作系统无法进入空闲状态,并锁定了蓝牙多点连接的音频路由。

注重隐私保护的浏览器厂商针对这起事件作出了回应,并对比了各自采用的防御模型。Brave 公开讨论了这种跟踪技术,称“AliExpress 并没有录制用户的声音,而是播放一段静音音频,再测量用户的特定设备如何处理这段音频,从而识别用户的设备指纹”。Brave 通过“扰动(farbling)”缓解这种风险。这种方法会在音频渲染缓冲区中动态注入确定性的伪随机噪声,从而确保提取出的频率数据在不同浏览器会话之间发生无法预测的变化,同时不影响能够发出声音的 Web 应用。相比之下,Firefox 会在其高级反指纹识别配置(privacy.resistFingerprinting)下采用数学分桶和规范化处理,将音频处理结果限制在标准化的精度区间内,以消除浮点运算单元层面的差异。

这起事件凸显了现代 W3C 规范中长期存在的一处结构性权限缺口。不同于 getUserMedia 或地理位置 API 等敏感的浏览器接口,初始化 AudioContext 并渲染音频合成图,无需经过任何明确的权限提示。此外,当活动音频图以零振幅输出采样数据时,浏览器也不会显示地址栏扬声器图标之类的可视化提示。

这一架构盲区给企业安全工程带来了更复杂的问题。电商平台会部署客户端风险评分脚本,以防范账户接管、优惠券滥用和自动化凭据填充攻击。然而,如果反欺诈遥测缺少正式的能力控制或标准化隔离机制,被动式反机器人防御就可能干扰物理设备的状态,并损害用户对基本隐私保护的合理预期。

:

🔥 热词:#Web · #Audio · #js · #蓝牙耳机总断连 · #开发者顺藤摸瓜 · #竟发现阿里全球速卖通在 · #播放静音 · #蓝牙音频多点连接的一项硬件副作用