在苹果 Safari 15的 IndexedDB API 实现中放入的一个软件漏洞可能被恶意网站利用,以追踪用户在 *** 浏览器中的在线活动,更糟糕的是,它还可能泄露用户的身份。

2021年11月28日,防欺诈保护软件公司 Fingerprint *** 向 iPhone 制造商报告了这一漏洞。

IndexedDB 是 web 浏览器提供的一个低级 JavaScript 应用程序编程接口(API) ,用于管理结构化数据对象(如文件和 blob)的 NoSQL 数据库。

“像大多数 web 存储解决方案一样,IndexedDB 遵循同源策略,”Mozilla 在其 API 文档中指出。”因此,尽管您可以访问域内存储的数据,但不能访问跨不同域的数据。”

同源是一种基本的安全机制,它确保从不同的来源(即方案(协议)、主机(域)和 URL 的端口号等)检索到的资源彼此隔离。这实际上意味着“ http [ : ]/example [ . ]Com/”和“ https [ : ]//example [ . ]Com/”并不是同一个来源,因为它们使用不同的方案。

通过限制从一个来源加载的脚本与另一个来源的资源进行交互的方式,用于隔离潜在的恶意脚本,通过预防流氓网站运行任意的 JavaScript 代码来读取来自另一个域的数据(比如电子邮件服务),来减少潜在的攻击载体。

但是 Safari 在 iOS、 iPadOS 和 macOS 中处理 IndexedDB API 的情况并非如此。

“在 macOS 上的 Safari 15,以及 iOS 和 iPadOS 15上的所有浏览器中,IndexedDB API 都违反了同源政策,”Martin Bajanik 在一份报告中写道。每当网站与数据库交互时,在同一浏览器会话中的所有其他活动框架、标签和窗口中都会创建一个具有相同名称的新(空)数据库

这种侵犯隐私的后果是,它允许网站知晓了用户在不同的选项卡或窗口中访问的其他网站,更不用说准确识别像 YouTube 和 Google Calendar 这样的谷歌服务上的用户,因为这些网站创建了 IndexedDB 数据库,其中包括经过验证的谷歌用户 id,这是一个识别单个谷歌账户的内部标识符。

“这不仅意味着不受信任或恶意的网站可以知道用户的身份,而且还可以知道同一用户使用的多个独立账户,”Bajanik 说。

更糟糕的是,如果用户在浏览器窗口的同一个标签内访问多个不同的网站,这种泄漏还会影响 Safari 15的隐私浏览模式。我们已经联系了苹果公司,希望得到进一步的评论,如果得到回复,我们将更新相关报道。

“这是一个巨大的漏洞,”谷歌 Chrome 开发者杰克 · 阿奇博尔德在推特上写道。”在 OSX 上,Safari 用户可以(暂时)切换到另一个浏览器,以避免其数据跨源泄漏。iOS 用户没有这样的选择,因为苹果(Apple)禁止其它浏览器引擎。”