safari浏览器中的indexeddb漏洞( 二 )


需要注意的是 , 这些泄漏不需要任何特定的用户操作 。一个在后台运行并持续查询IndexedDBAPI的标签或窗口 , 可以实时了解用户访问了哪些其他网站 。另外 , 网站还可以在一个iframe或弹出窗口中打开任何其他网站 , 以便对该特定网站触发一个基于IndexedDB的泄漏 。
Twitter等30个网站受到影响
FingerprintJS查看了Alexa前1000个访问量最大的网站主页 , 以了解有多少网站使用IndexedDB , 并且可以通过它们数据库的交互进行唯一标识 。
结果显示 , 超过30个网站直接在其主页上与IndexedDB交互 , 无需任何额外的用户交互或认证 , 包括Instagram、Netflix、Twitter、Xbox等 。FingerprintJS怀疑这个数字在现实场景中要高得多 , 因为网站可以在子页面上、在特定的用户操作之后或在页面的认证部分与数据库进行互动 。
FingerprintJS还看到了一种模式 , 在这种模式下 , 广告网络可以创建名为通用唯一标识符(UUIDs)的IndexedDB 。庆幸的是 , 这些资源的加载在某些情况下似乎被Safari的防止跟踪功阻挡了 , 这有效地防止了数据库名称的泄漏 。如果通过其他方式阻止这些资源 , 例如使用adblocker扩展或阻止所有的JavaScript执行 , 这些泄漏也将被阻止 。
Safari隐私模式能防止泄露吗?
首先 , 同源策略是所有窗口模式的有效安全机制 。无论访客是否使用隐私模式 , 拥有相同来源的网站都不应该访问其他来源的资源 , 除非通过跨源资源共享(CORS)的明确允许 。
在这种情况下 , Safari15中的隐私模式也会受到泄漏的影响 。需要注意的是 , 私人Safari窗口中的浏览会话被限制在一个标签上 , 这减少了通过泄露获得信息的程度 。但是 , 如果用户在同一标签页中访问多个不同的网站 , 这些网站与之交互的所有数据库都会泄露给所有后续访问的网站 。不过 , 在其他基于苹果WebKit的浏览器中 , 例如Brave或iOS上的GoogleChrome , 私人标签以与非私人模式相同的方式共享同一浏览器的会话 。
FingerprintJS在11月28日向苹果WebKitBugTracker报告了泄漏 , 但苹果并未对此做出回应 。
官方仍未做出回应
不幸的是 , 如果不采取强制措施 , Safari、iPadOS和iOS用户几乎无法保护自己 。其中一种方法是在默认情况下阻止所有JavaScript , 并且只允许在受信任的站点上使用 。不过这会使现代网络浏览变得不方便 , 而且也不是一个适合所有人的好方法 。此外 , 像跨站点脚本之类的漏洞也使人们有可能被可信站点当做攻击目标 , 尽管这个风险很小 。对于Mac上的Safari用户来说 , 另一种选择是暂时切换到其他浏览器 。然而 , 这在iOS和iPadOS上却行不通 , 因为其上所有浏览器都受到影响 , 所以这些用户只能等待苹果WebKit开发团队在最新版本中修复这个漏洞 。
所以FingerintJS在此强调 , 唯一真正有效的保护措施是一旦苹果解决了这个问题 , 就立刻更新浏览器或操作系统 。同时 , FingerprintJS希望这篇文章能提高人们对这个bug的认识 。但是截止目前 , 苹果官方还未就此事做出回应 。