漏洞允许 Chrome、Firefox、Safari 和 Tor 进行跨浏览器跟踪
在本文中,我们介绍了一种方案泛洪漏洞,解释了该漏洞如何在四种主流桌面浏览器中起作用,并说明了它为何对匿名浏览构成威胁。
免责声明: FingerprintJS 不会在我们的产品中利用此漏洞,也不提供第三方追踪服务。我们致力于阻止欺诈,并支持彻底移除第三方追踪的现代隐私趋势。我们认为,应该公开讨论此类漏洞,以帮助浏览器尽快修复它们。为了帮助修复此漏洞,我们已向所有受影响的浏览器提交了错误报告,创建了一个实时演示,并向所有人开放了一个公共源代码库。
在我们的现场演示网站上测试该漏洞。仅适用于桌面浏览器。
在我们对反欺诈技术的研究中,我们发现了一个漏洞,该漏洞允许网站跨不同的桌面浏览器可靠地识别用户,并将他们的身份关联起来。Tor 浏览器、Safari、Chrome 和 Firefox 的桌面版本均受到影响。
我们将此漏洞称为“方案泛洪”,因为它使用自定义 URL 方案作为攻击向量。该漏洞会利用您计算机上已安装应用的信息,为您分配一个永久的唯一标识符,即使您切换浏览器、使用隐身模式或使用 VPN 也是如此。
这为什么重要?
该方案泛洪漏洞允许第三方跨不同浏览器进行跟踪,因此侵犯了隐私。
没有跨浏览器匿名性
即使是注重隐私的互联网用户,跨浏览器匿名性也可能被视为理所当然。Tor 浏览器以其极致的隐私保护而闻名,但由于其连接速度慢以及某些网站上的性能问题,用户在日常浏览时可能会依赖匿名性较低的浏览器。他们可能会使用 Safari、Firefox 或 Chrome 浏览某些网站,而使用 Tor 浏览那些希望保持匿名的网站。利用方案泛洪漏洞的网站可以创建一个稳定且唯一的标识符,将这些浏览身份关联起来。
即使您不是 Tor 浏览器用户,所有主流浏览器都会受到影响。您的 Safari 访问记录可能会与您的 Chrome 访问记录关联起来,从而唯一地识别您的身份,并在网络上追踪您的行为。
根据已安装的应用程序进行分析
此外,该方案泛洪漏洞允许在未经用户同意的情况下进行定向广告和用户分析。设备上已安装的应用程序列表可以揭示很多关于您的职业、习惯和年龄的信息。例如,如果您的计算机上安装了 Python IDE 或 PostgreSQL 服务器,那么您很可能是一名后端开发人员。
根据设备上安装的应用程序,网站可能会识别个人身份,以达到更险恶的目的。例如,某个网站可能能够根据政府或军事官员安装的应用程序及其本应匿名的浏览历史记录,在互联网上识别出他们。
对网络的未知影响
此漏洞已存在五年多,其实际影响尚不清楚。我们快速搜索了网络,没有发现任何主动利用此漏洞的网站,但我们仍然觉得有必要尽快报告。
它是如何工作的?(技术概述)
注意:如果您对技术实现细节不感兴趣,可以跳过本节。演示应用程序的源代码可在GitHub上获取。
方案泛洪漏洞允许攻击者确定您安装了哪些应用程序。为了生成 32 位跨浏览器设备标识符,网站可以测试 32 个常用应用程序列表,并检查每个应用程序是否已安装。平均而言,识别过程只需几秒钟,并且适用于 Windows、Mac 和 Linux 桌面操作系统。
要检查应用程序是否已安装,浏览器可以使用内置的自定义 URL 方案处理程序。您可以在浏览器地址栏中输入 skype:// 来查看此功能。如果您已安装 Skype,浏览器将打开一个确认对话框,询问您是否要启动它。此功能也称为深度链接,在移动设备上广泛使用,但也可在桌面浏览器中使用。您安装的任何应用程序都可以注册自己的方案,以允许其他应用打开它。
为了检测应用程序是否已安装,我们可以测试应用程序的自定义 URL 方案,然后检查是否已显示弹出窗口。
为了实现此漏洞,需要执行以下步骤:
- 准备一份要测试的应用程序 URL 方案列表。具体列表取决于您的目标,例如,如果您想检查是否安装了某些行业或特定兴趣的应用程序。
- 在网站上添加一个脚本,用于测试列表中的每个应用程序。该脚本将返回一个有序的布尔值数组。如果应用程序已安装,则每个布尔值为 true;如果应用程序未安装,则为 false。
- 使用此数组生成永久的跨浏览器标识符。
- 或者,使用机器学习算法通过已安装的应用程序数据来猜测您网站访问者的职业、兴趣和年龄。
上述步骤听起来可能很简单,但大多数浏览器都设有旨在防止此类漏洞的安全机制。这些安全机制的弱点正是导致此漏洞得以存在的原因。结合使用CORS 策略和浏览器窗口功能可以绕过此漏洞。
该漏洞的实际实现因浏览器而异,但基本概念相同。其工作原理是要求浏览器在弹出窗口中显示确认对话框。然后,JavaScript 代码可以检测弹出窗口是否刚刚打开,并据此检测应用程序是否存在。
让我们了解一下一些浏览器的差异。
铬合金
在受影响的四大主流浏览器中,似乎只有 Chrome 开发者意识到了该方案泛洪漏洞。该问题已在Chromium 漏洞跟踪器上进行了讨论,并计划很快修复。
此外,只有 Chrome 浏览器具备某种形式的方案泛洪保护机制,这给绕过带来了挑战。除非用户通过手势(例如鼠标点击)请求,否则它会阻止启动任何应用程序。Chrome 浏览器有一个全局标志,用于允许(或拒绝)网站打开应用程序,在处理自定义 URL 方案后,该标志会被设置为 false。
但是,您可以使用 Chrome 扩展程序重置此标志并绕过方案洪水保护。根据规范,扩展程序需要能够打开自定义 URL(例如 mailto: 链接),而无需确认对话框。方案洪水保护与扩展程序策略冲突,因此存在一个漏洞,每次触发任何扩展程序时都会重置此标志。
Chrome 内置的 PDF 查看器是一个扩展程序,因此每次浏览器打开 PDF 文件时,它都会重置方案洪水保护标志。在打开自定义 URL 之前打开 PDF 文件会使漏洞得以利用。
火狐
每次导航到未知的 URL 方案时,Firefox 都会显示一个包含错误的内部页面。该内部页面的来源与其他网站不同,因此由于同源策略的限制,无法访问。另一方面,已知的自定义 URL 方案将以 about:blank 的形式打开,其来源可以从当前网站访问。
通过打开具有自定义 URL 方案的弹出窗口并检查其文档是否可从 JavaScript 代码中获得,您可以检测应用程序是否已安装在设备上。
Safari
尽管隐私是 Safari 浏览器的主要开发重点,但它却是四款浏览器中最容易被利用的。Safari 没有方案洪水防护功能,因此可以轻松枚举所有已安装的应用程序。
这里也使用了与 Firefox 浏览器相同的同源策略技巧。
Tor浏览器
Tor 浏览器出于隐私考虑,完全禁用了确认对话框。讽刺的是,这反而暴露了该漏洞更具破坏性的漏洞。漏洞在后台运行时不会显示任何内容,而其他浏览器则会在运行过程中弹出弹窗。这种疏忽使得漏洞得以在用户不知情的情况下检查已安装的应用程序。
Tor 浏览器基于 Firefox 源代码,因此这里也使用了同源策略技巧。但由于 Tor 浏览器不显示弹出窗口,因此我们改用 iframe 元素的同源策略技巧。
通过创建具有自定义 URL 方案的 iframe 元素并检查其文档是否可用,您可以检查应用程序是否已安装。
在四款浏览器中,方案泛洪漏洞在 Tor 中成功运行所需的时间最长。由于 Tor 浏览器的策略,每个应用程序的检查时间最多可能需要 10 秒。尽管如此,该漏洞仍可在后台运行,并在较长的浏览会话中追踪您。即使您仅在 Tor 浏览器窗口停留 4 分钟,也足以暴露您的身份。
通过在用户触发的手势内运行每个应用程序测试,可以消除 10 秒的限制。伪造的验证码是一个理想的选择:用户输入 24 个字符就可以连续 24 次重置 10 秒的限制,并立即枚举 24 个已安装的应用程序。
结论
实现方案泛洪漏洞的具体步骤可能因浏览器而异,但最终结果相同。获取与访问者身份相关联的唯一位数组不仅可行,而且在实际中还可以用于恶意网站。即使是 Tor 浏览器,也可以通过诱骗用户在每个我们要测试的应用程序上输入一个字符来有效利用漏洞。
在修复此漏洞之前,实现与主设备无关的私人浏览会话的唯一方法是使用另一台设备。
通过提交这些错误报告、撰写本文和构建我们的演示应用程序,我们希望尽快在所有浏览器中修复此漏洞。
有用的链接
如果您喜欢阅读这篇文章,请考虑加入我们的完全远程团队,共同开展在线安全领域的激动人心的研究:work@fingerprintjs.com
文章来源:https://dev.to/savannahjs/vulnerability-allows-cross-browser-tracking-in-chrome-firefox-safari-and-tor-39ma