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

在揭露该漏洞之前,我们先来了解一下IndexedDB API是什么。

何为IndexedDB API?

IndexedDB(索引数据库)是一个用在浏览器客户端存储的API(应用程序编程接口),可以保存大量用户数据,目前被普遍使用在所有主要的浏览器上。由于IndexedDB是一个低级别的API,许多开发者选择使用包装器将大部分技术问题抽象化,并提供一个更易于使用、对开发人员更友好的API。

像大多数现代网络浏览器技术一样,IndexedDB遵循同源政策。这是一种基本的安全机制,它限制了从一个源头加载的文档或脚本与其他源头的资源交互。来源由方案(协议)、主机名(域)和用于访问它的URL端口定义。被索引的数据库与特定的源相关联,本质上,只有生成数据的网站才能访问它。例如,如果在一个标签页中打开电子邮件帐户,然后在另一个标签页中打开恶意网页,同源政策会阻止恶意页面查看和干预电子邮件。

Safari 15中的IndexedDB漏洞

FingerprintJS发现,在基于苹果开源浏览器引擎WebKit的新版浏览器,包括macOS上的Safari 15,以及iOS 15和iPadOS 15上的所有Safari浏览器,IndexedDB API都违反了同源策略。每次网站与Safari中的数据库交互时,在同一浏览器会话中的所有其他活动框架、标签和窗口中都会创建一个同名的新(空)数据库。窗口和标签通常共享同一个会话,除非用户切换到不同的配置文件,例如使用Chrome浏览器,或者打开一个私有窗口。

这意味着其他网站可以看到在其他网站上创建的其他数据库的名称,其中可能包含具体到用户身份的详细信息。FingerprintJS还注意到,由于苹果要求所有iPhone和iPad上的浏览器都使用WebKit,所以该漏洞还会危及第三方浏览器,如 iOS 15和 iPadOS 15上的Chrome浏览器。使用Google帐户的网站,例如YouTube、Google日历和Google Keep,都会生成名称中包含Google用户唯一ID的数据库。Google用户ID允许 Google访问例如个人资料、照片等公开信息,Safari漏洞可能会将这些信息暴露给其他网站。

图源:FingerprintJS

用户身份与浏览记录“裸奔”

数据库ID跨源泄漏是一种明显的隐私侵犯,它可以让任意的网站了解用户在不同的标签或窗口中访问了哪些网站。因为数据库名称通常是唯一的,并且特定于网站。此外,FingerprintJS观察到,在某些情况下,网站在数据库名称中使用唯一的用户特定标识。这意味着经过身份验证的用户可以被唯一且精确地识别。通俗点讲就是,像YouTube、Google日历和Google Keep,这些网站创建的数据库都包含经过身份验证的谷歌用户ID,如果用户登录到了多个帐户,谷歌就会为所有这些帐户创建数据库。

谷歌用户ID是谷歌生成的内部标识符,它能唯一标识一个谷歌账户,还可以与谷歌API一起获取账户所有者的公共个人信息。这些API暴露的信息受多种因素控制,一般来说,至少用户的个人资料照片通常是可用的。这不仅意味着不受信任或恶意的网站可以了解用户的身份,还允许其将同一用户使用的多个独立帐户链接在一起。

需要注意的是,这些泄漏不需要任何特定的用户操作。一个在后台运行并持续查询IndexedDB API的标签或窗口,可以实时了解用户访问了哪些其他网站。另外,网站还可以在一个iframe或弹出窗口中打开任何其他网站,以便对该特定网站触发一个基于IndexedDB的泄漏。

Twitter等30个网站受到影响

FingerprintJS查看了Alexa前1000个访问量最大的网站主页,以了解有多少网站使用IndexedDB,并且可以通过它们数据库的交互进行唯一标识。

结果显示,超过30个网站直接在其主页上与IndexedDB交互,无需任何额外的用户交互或认证,包括Instagram、Netflix、Twitter、Xbox等。FingerprintJS怀疑这个数字在现实场景中要高得多,因为网站可以在子页面上、在特定的用户操作之后或在页面的认证部分与数据库进行互动。

FingerprintJS还看到了一种模式,在这种模式下,广告网络可以创建名为通用唯一标识符(UUIDs)的IndexedDB。庆幸的是,这些资源的加载在某些情况下似乎被Safari的防止跟踪功阻挡了,这有效地防止了数据库名称的泄漏。如果通过其他方式阻止这些资源,例如使用adblocker扩展或阻止所有的JavaScript执行,这些泄漏也将被阻止。

Safari隐私模式能防止泄露吗?

首先,同源策略是所有窗口模式的有效安全机制。无论访客是否使用隐私模式,拥有相同来源的网站都不应该访问其他来源的资源,除非通过跨源资源共享(CORS)的明确允许。

在这种情况下,Safari 15中的隐私模式也会受到泄漏的影响。需要注意的是,私人Safari窗口中的浏览会话被限制在一个标签上,这减少了通过泄露获得信息的程度。但是,如果用户在同一标签页中访问多个不同的网站,这些网站与之交互的所有数据库都会泄露给所有后续访问的网站。不过,在其他基于苹果WebKit的浏览器中,例如Brave或iOS上的Google Chrome,私人标签以与非私人模式相同的方式共享同一浏览器的会话。

FingerprintJS在11月28日向苹果WebKit Bug Tracker报告了泄漏,但苹果并未对此做出回应。

官方仍未做出回应

不幸的是,如果不采取强制措施,Safari、iPadOS和iOS用户几乎无法保护自己。其中一种方法是在默认情况下阻止所有JavaScript,并且只允许在受信任的站点上使用。不过这会使现代网络浏览变得不方便,而且也不是一个适合所有人的好方法。此外,像跨站点脚本之类的漏洞也使人们有可能被可信站点当做攻击目标,尽管这个风险很小。对于Mac上的Safari用户来说,另一种选择是暂时切换到其他浏览器。然而,这在iOS和iPadOS上却行不通,因为其上所有浏览器都受到影响,所以这些用户只能等待苹果WebKit开发团队在最新版本中修复这个漏洞。

所以FingerintJS在此强调,唯一真正有效的保护措施是一旦苹果解决了这个问题,就立刻更新浏览器或操作系统。同时,FingerprintJS希望这篇文章能提高人们对这个bug的认识。但是截止目前,苹果官方还未就此事做出回应。

参考链接:

1.Exploiting IndexedDB API information leaks in Safari 15

2.Safari 15 bug can leak your recent browsing activity and personal identifiers - The Verge

用户身份和浏览记录一览无遗,Safari最新版本被曝高危漏洞相关推荐

  1. vue友盟埋点,用户使用情况浏览记录统计

    vue友盟埋点,浏览记录统计 记录受访分析情况 受访页面.站内入口和站内出口的情况统计 安装vue-uweb之后,需要进行一系列配置,详情请见https://www.ctolib.com/mip/ra ...

  2. Mac Xcode opencv C++环境配置 保姆级教程 填坑记录 19年最新版本

    网上找了很多教程,照着做都失败了,整整弄了两天两夜,终于好了.网上根本没有人遇到我的坑么?都搜不到,国外也没搜到,呜呜- 版本说明: 1.(必备)MacBook系统:macOS Catalina(版本 ...

  3. dedecms最新版本修改任意管理员漏洞

    此漏洞无视gpc转义,过80sec注入防御. 补充下,不用担心后台找不到.这只是一个demo,都能修改任意数据库了,还怕拿不到SHELL? 起因是全局变量$GLOBALS可以被任意修改,随便看了下,漏 ...

  4. 卡巴斯基在线杀毒曝高危漏洞 用户可被攻击

    2007年10月12日 09:41:00 安全研究员Stephen Fewer近日在卡巴斯基的在线杀毒应用中发现了安全漏洞,该漏洞可导致用户计算机运行恶意代码. 据Fewer称,该漏洞主要存在于&qu ...

  5. 使用redis存储用户的浏览记录

    用户历史浏览记录:1).什么时候添加历史浏览记录:访问商品的详情页面的时候,添加历史浏览记录2).什么时候获取历史浏览记录:访问用户中心个人信息页的时候获取历史浏览记录3).历史浏览记录需要存储在哪里 ...

  6. Django中--使用redis存储历史浏览记录

    class UserInfoView(LoginRequiredMixin, View):'''用户中心-信息页'''def get(self, request):'''显示'''# Django会给 ...

  7. Redis添加历史浏览记录

    参考资料 http://redisdoc.com/index.html http://redis-py.readthedocs.io/en/latest/#indices-and-tables 1.什 ...

  8. 英伟达首次开源内核、GitHub 强制用户身份验证、Google 悬赏 150 万美元找安卓漏洞 | 开源月报 Vol. 06...

    「WeOpen Insight」是腾源会推出的「开源趋势与开源洞见」内容专栏,不定期为读者呈现开源圈内的第一手快讯.优质工具盘点等,洞察开源技术发展的风向标,预见未来趋势. 1 开源企业新闻 1.NV ...

  9. 一种基于浏览记录的反反爬虫方法

    最近写专利时看到了一种基于浏览记录的反爬虫方法,该方法基于 "在前端页面中以埋点或者提取页面日志的方式,获取用户的前端浏览记录,计算用户行为指标并进行人机验证" . 用户行为指标 ...

最新文章

  1. ogre3d环境配置与简单程序示例
  2. Fedora 从 15.0 开始将修改以太网卡命名规则
  3. 【STM32】DAC相关函数和类型
  4. phpstorm破解安装
  5. latex word相互转换
  6. Nginx 的 Location 配置指令块
  7. 【建议收藏】找不到免费的角色动画?来试试mixamo
  8. 解决 jQuery 和其他库的冲突
  9. linux bash 删除所有空格,删除字符串中的所有的空白并用空格分割单词.md
  10. linux 贡献内存,Microsoft为Linux 5.12贡献完整性子系统更新
  11. python写斗地主游戏_基于python的简单斗地主实现-Go语言中文社区
  12. 相关性模型 之 皮尔逊相关系数与斯皮尔曼相关系数
  13. Normalize异常报错
  14. FTP 打开文件夹提示该文件没有程序与之关联来执行该操作 请在控制面板的文件夹选项中创建关联
  15. 利用python生成二维码 以及批量生成二维码
  16. 如何查看手机APP的包名,并卸载
  17. OpenCV+Python简单实践之硬币检测以及条形码检测
  18. IDM高速下载器 快来白嫖~
  19. 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
  20. 【C++】约瑟夫环问题:任给正整数n和k,按下述方法可以得到1,2, …n的一个置换:将数字1,2,…,n环形排列,按顺时针方向自1开始报数,报到K时输出该位置上的数字,并使其出列。

热门文章

  1. qiankun微前端:script xxxxxx replaced by qiankun或script xxxxxxxxxx replaced by import-html-entry
  2. 剑指offer面试题13:机器人的运动范围
  3. 阳泉学计算机,阳泉计算机专业多少分可以学?,计算机专业
  4. threadmainjava.lang.NoClassDefFoundError:ServerProgram.java 抛出异常~
  5. Qt版本-塔防游戏实现一
  6. 电脑界的超级巨星—记著名华裔科学家陈世卿
  7. 浅析应用助手省流量升级原理
  8. 预付费系统在商场,高校,出租屋中的应用及解决方案-安科瑞黄安南
  9. ubuntu解决不插显示器采用vnc的时候无法正确显示分辨率的问题
  10. 科技公司薪酬排行榜:思科人均超12万美元居首