safari浏览器中的indexeddb漏洞

在苹果官网上 , Safari浏览器一直以强大的隐私保护功能作为卖点 。其中 , 智能防跟踪和隐私标签等功能满足用户需求 。但在近日 , 浏览器指纹识别服务商FingerprintJS发布了一篇博客 , 经他们调查发现 , Safari15在实现IndexedDBAPI时存在一个漏洞 , 该API允许任何网站跟踪用户的浏览记录 , 甚至泄露用户Google帐户的部分身份信息 。
【safari浏览器中的indexeddb漏洞】
safari浏览器中的indexeddb漏洞
文章图片

文章图片

在揭露该漏洞之前 , 我们先来了解一下IndexedDBAPI是什么 。
何为IndexedDBAPI?
IndexedDB(索引数据库)是一个用在浏览器客户端存储的API(应用程序编程接口) , 可以保存大量用户数据 , 目前被普遍使用在所有主要的浏览器上 。由于IndexedDB是一个低级别的API , 许多开发者选择使用包装器将大部分技术问题抽象化 , 并提供一个更易于使用、对开发人员更友好的API 。
像大多数现代网络浏览器技术一样 , IndexedDB遵循同源政策 。这是一种基本的安全机制 , 它限制了从一个源头加载的文档或脚本与其他源头的资源交互 。来源由方案(协议)、主机名(域)和用于访问它的URL端口定义 。被索引的数据库与特定的源相关联 , 本质上 , 只有生成数据的网站才能访问它 。例如 , 如果在一个标签页中打开电子邮件帐户 , 然后在另一个标签页中打开恶意网页 , 同源政策会阻止恶意页面查看和干预电子邮件 。
Safari15中的IndexedDB漏洞
FingerprintJS发现 , 在基于苹果开源浏览器引擎WebKit的新版浏览器 , 包括macOS上的Safari15 , 以及iOS15和iPadOS15上的所有Safari浏览器 , IndexedDBAPI都违反了同源策略 。每次网站与Safari中的数据库交互时 , 在同一浏览器会话中的所有其他活动框架、标签和窗口中都会创建一个同名的新(空)数据库 。窗口和标签通常共享同一个会话 , 除非用户切换到不同的配置文件 , 例如使用Chrome浏览器 , 或者打开一个私有窗口 。
这意味着其他网站可以看到在其他网站上创建的其他数据库的名称 , 其中可能包含具体到用户身份的详细信息 。FingerprintJS还注意到 , 由于苹果要求所有iPhone和iPad上的浏览器都使用WebKit , 所以该漏洞还会危及第三方浏览器 , 如iOS15和iPadOS15上的Chrome浏览器 。使用Google帐户的网站 , 例如YouTube、Google日历和GoogleKeep , 都会生成名称中包含Google用户唯一ID的数据库 。Google用户ID允许Google访问例如个人资料、照片等公开信息 , Safari漏洞可能会将这些信息暴露给其他网站 。

safari浏览器中的indexeddb漏洞
文章图片

文章图片

图源:FingerprintJS
用户身份与浏览记录“裸奔”
数据库ID跨源泄漏是一种明显的隐私侵犯 , 它可以让任意的网站了解用户在不同的标签或窗口中访问了哪些网站 。因为数据库名称通常是唯一的 , 并且特定于网站 。此外 , FingerprintJS观察到 , 在某些情况下 , 网站在数据库名称中使用唯一的用户特定标识 。这意味着经过身份验证的用户可以被唯一且精确地识别 。通俗点讲就是 , 像YouTube、Google日历和GoogleKeep , 这些网站创建的数据库都包含经过身份验证的谷歌用户ID , 如果用户登录到了多个帐户 , 谷歌就会为所有这些帐户创建数据库 。
谷歌用户ID是谷歌生成的内部标识符 , 它能唯一标识一个谷歌账户 , 还可以与谷歌API一起获取账户所有者的公共个人信息 。这些API暴露的信息受多种因素控制 , 一般来说 , 至少用户的个人资料照片通常是可用的 。这不仅意味着不受信任或恶意的网站可以了解用户的身份 , 还允许其将同一用户使用的多个独立帐户链接在一起 。