浏览器的隐私功能将身份视为浏览器状态:隐身模式、VPN 或 Tor 会清除、随机化或阻止 cookie、画布指纹和音频指纹,因此切换浏览器就像重新开始。FingerprintJS 的研究人员攻击了留在背后的信号:安装在一台机器上的应用不会因为用户更换浏览器或使用 VPN 而改变,因此应用集合可以将同一台电脑上的 Chrome、Firefox、Safari 和 Tor 用户关联起来。

深链接是通道。桌面浏览器会将自定义 URL scheme(如 skype://)交给已注册的应用程序,并在启动前询问用户。因此,网页可以测试应用是否存在:导航到应用的 scheme,观察浏览器如何反应。通过探测 32 个热门应用并将是/否答案组合,就能在几秒钟内生成一个 32 位标识符,适用于 Windows、macOS 和 Linux。

每个浏览器通过不同的弱点泄露了同样的答案。Chrome 要求用户手势,但扩展程序(如 PDF 查看器)可以重置保护标志;Firefox 对未知 scheme 显示内部错误页面,使得已安装应用的弹窗可被检测;Safari 没有 scheme 洪泛保护;Tor 完全禁用确认对话框,因此探测在 iframe 中隐形运行。

这是一次披露而非利用。FingerprintJS 发布了这项技术,提供了可用的演示,公开了源代码,并向所有四个浏览器供应商提交了错误报告,声明其产品未使用该漏洞。Mozilla 的 Bugzilla 开启了问题 1711084,Tor 浏览器随后附上了补丁;2021 年 5 月 13 日的 Hacker News 公告获得了 467 分和 200 条评论,读者将演示作为现场测试运行。

通过 URL scheme 对话框探测已安装应用,构建一个隐私模式无法重置的 ID

已安装应用是设备级状态,因此从中构建的标识符能够存续于隐身模式、VPN、浏览器切换和 Tor,这是任何 cookie 或画布指纹都无法做到的。

自定义 URL scheme 无需权限即可暴露应用存在:只有真正的应用注册了 scheme,浏览器才会提供启动选项,而 JavaScript 可以观察该选项是否出现。

该攻击仅使用弹窗、iframe 和同源规则,这些规则早已存在,因此每个主流桌面浏览器都通过某种方式暴露了该信号,无需插件或操作系统访问权限。

Tor 禁用确认对话框的隐私选择适得其反:由于用户看不到任何内容,探测在 iframe 中隐形运行,将最私密的浏览器变成了最安静的泄漏源。

发布演示和错误报告让外界可以复现发现,将供应商的私下声明转化为跟踪的问题、浏览器补丁和公众监督。

已安装应用是设备级状态,能存续于隐身模式、VPN 和浏览器切换;任何可观察的 UI 差异,即使是对话框是否出现,都可能成为追踪信号。

Mozilla 将报告跟踪为 bug 1711084,Tor 浏览器附上了由 Matthew Finkel 开发的补丁;多年后该 bug 仍处于打开状态。文章 2022 年 8 月的更新报告称,Chrome 和 Firefox 的跟踪条目仍未解决。演示和源代码库保持在线,文章保留了免责声明,声明 FingerprintJS 未在自己的产品中使用该漏洞。2021 年 5 月 13 日的 Hacker News 帖子获得了 467 分和 200 条评论;读者将演示作为现场测试运行,一些人确认跨浏览器匹配的标识符,其他人报告了误报。

从这里,追溯依据

参考来源

  1. Scheme flooding technique for reliable cross-browser fingerprinting bugzilla.mozilla.org
  2. Vulnerability allows cross-browser tracking in Chrome, Firefox, Safari, and Tor news.ycombinator.com