2026-08-29
每日一文 · 长文精读
Audio Fingerprinting Discovered on Alibaba Websites While Debugging BLE Multipoint Disconnects
调试蓝牙多点断开时发现阿里巴巴网站上的音频指纹识别
作者:Olimpiu Pop · InfoQ 原文
摘要:多点蓝牙音频的硬件副作用暴露了速卖通首页上运行的无声设备指纹识别程序。开发者Matt Callaghan在调试耳机音频焦点切换问题时发现,阿里巴巴的店铺页面通过零增益音频流锁定硬件状态,利用Web Audio API捕获硬件相关的执行痕迹。Brave浏览器通过farbling(注入伪随机噪声)防御,Firefox采用数学分桶归一化。该事件突显了Web Audio API初始化无需权限提示的结构性漏洞,可能影响企业安全工程。
A hardware side effect in multipoint Bluetooth audio has exposed silent device fingerprinting routines executing on the AliExpress homepage.
多点蓝牙音频的一个硬件副作用暴露了在速卖通首页上运行的无声设备指纹识别程序。
While debugging why multipoint headphones consistently failed to relinquish audio focus from a desktop browser to a smartphone, developer Matt Callaghan discovered that Alibaba's storefront maintained an active audio stream without playing perceptible sound.
在调试为什么多点耳机始终无法将音频焦点从桌面浏览器切换到智能手机时,开发者Matt Callaghan发现阿里巴巴的店铺页面维持着一个活跃的音频流,却没有播放可感知的声音。
Deobfuscation of the page assets revealed tracking routines embedded inside Alibaba’s AWSC anti-bot suite, reviving architectural concerns surrounding the Web Audio API's security model.
对页面资源的反混淆揭示了嵌入在阿里巴巴AWSC反机器人套件中的跟踪程序,重新引发了围绕Web Audio API安全模型的架构担忧。
The culprit scripts, including collina.js and fireyejs.js, construct a synthetic Web Audio processing graph designed to capture hardware-dependent execution artifacts.
罪魁祸首的脚本(包括collina.js和fireyejs.js)构建了一个合成Web Audio处理图,旨在捕获硬件相关的执行痕迹。
Audio fingerprinting operates by feeding a known waveform through mathematical transformation nodes.
音频指纹识别通过将已知波形输入数学变换节点来运作。
Because digital signal processing routines evaluate across diverse floating-point units (FPUs), instruction sets (such as AVX or ARM NEON), operating system mixing engines, and vendor drivers, the resulting frequency domain output exhibits minute numerical variations unique to a user's specific hardware and software stack.
由于数字信号处理例程在不同的浮点单元(FPU)、指令集(如AVX或ARM NEON)、操作系统混音引擎和供应商驱动上执行,产生的频域输出会展现出用户特定硬件和软件栈独有的微小数值变化。
AliExpress routed this pipeline through a gain stage set to zero volume while still binding the graph directly to the primary hardware sink:
速卖通将这个管道通过一个音量设置为零的增益级,同时仍然将处理图直接绑定到主硬件接收器:
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);
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);
By connecting the zero-gain GainNode to ctx.destination, the script initialized an unmuted platform-level audio stream, preventing host operating systems from transitioning into an idle state and locking Bluetooth multipoint routing.
通过将零增益的GainNode连接到ctx.destination,脚本初始化了一个未静音的平台级音频流,阻止主机操作系统进入空闲状态并锁定蓝牙多点路由。
Privacy-centric browser vendors responded to the incident by contrasting their respective defensive models.
注重隐私的浏览器厂商通过对比各自的防御模型来回应这一事件。
Brave publicly addressed the tracking technique, stating that 'AliExpress wasn't recording users but instead playing a silent sound and measuring how users' specific devices processed it in order to fingerprint them'.
Brave公开回应了这种跟踪技术,称“速卖通并没有录制用户,而是播放无声声音并测量用户特定设备如何处理它,以便对用户进行指纹识别”。
Brave mitigates this vector through 'farbling,' an approach that dynamically injects deterministic pseudo-random noise into audio rendering buffers, thereby ensuring that extracted frequency data varies unpredictably across browser sessions without breaking audible web applications.
Brave通过“farbling”来缓解这一向量,该方法动态地向音频渲染缓冲区注入确定性的伪随机噪声,从而确保提取的频率数据在不同浏览器会话间不可预测地变化,同时不破坏可听的Web应用。
In contrast, Firefox employs mathematical bucketing and canonical normalization under its advanced anti-fingerprinting configurations (privacy.resistFingerprinting), forcing audio processing routines into standardized precision bins to eliminate FPU-level variance.
相比之下,Firefox在其高级反指纹识别配置(privacy.resistFingerprinting)下采用数学分桶和规范归一化,强制音频处理例程进入标准化精度区间,以消除FPU级别的差异。
The incident highlights a persistent structural permission gap within modern W3C specifications.
这一事件突显了现代W3C规范中一个持续存在的结构性权限缺口。
Unlike sensitive browser interfaces such as getUserMedia or the Geolocation API, initializing an AudioContext and rendering synthesis graphs requires no explicit permission prompt.
与getUserMedia或Geolocation API等敏感浏览器接口不同,初始化AudioContext和渲染合成图不需要明确的权限提示。
Furthermore, browsers lack visual indicators—such as address bar speaker icons—when an active audio graph outputs samples at zero amplitude.
此外,当活跃的音频图以零振幅输出样本时,浏览器缺乏视觉指示器——例如地址栏扬声器图标。
This architectural blind spot complicates enterprise security engineering.
这一架构盲点使企业安全工程复杂化。
E-commerce platforms deploy client-side risk-scoring scripts to mitigate account takeovers, coupon abuse, and automated credential stuffing.
电子商务平台部署客户端风险评分脚本以减轻账户接管、优惠券滥用和自动凭证填充。
However, without formal capability controls or standardized isolation mechanisms for anti-fraud telemetry, passive anti-bot defenses risk colliding with physical device state and compromising baseline user privacy expectations.
然而,如果没有针对反欺诈遥测的正式能力控制或标准化隔离机制,被动的反机器人防御有可能与物理设备状态冲突,并损害用户的基本隐私期望。
阅读理解
1. What did Alibaba's AliExpress use to fingerprint users' devices?
2. How does Brave browser defend against audio fingerprinting?
3. What is the main security concern raised by this incident regarding the Web Audio API?