随着Chrome 76的发布,谷歌修复了一个漏洞:允许网站检测访问者是否使用了隐身模式。然而,不幸的是他们的修复导致我们仍可利用两种方法检测访问者何时隐身浏览网站。
作者 | Lawrence Abrams
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
有些网站采用隐身模式检测是为了防止用户绕过付费,或为隐私模式浏览的用户提供不同的浏览体验。
我们可以通过检查是否可以访问Chrome的FileSystem API来检测隐身模式,因为在隐身模式下该API会被禁用。如果站点可以访问FileSystem API,则表明访问者处于正常的浏览会话中;如果无法访问该API,则表明用户处于隐身模式。
由于google希望用户能够隐身浏览网页,而且希望是否选择隐身这个选择也是私密的,因此为了修复这个漏洞,他们在两种浏览模式下皆提供了API。作为该修复程序的一部分,当用户处于隐身模式时,Chrome利用临时的内存文件系统取代了FileSystem API的磁盘存储,而这些临时的内存文件会在会话关闭时会被清除。
但是,使用内存文件系统引发了两个新的漏洞,我们可以利用这两个漏洞检测隐身模式,如下所述。
由于谷歌决定隐身模式使用计算机内存作为临时文件系统,因此我们可以根据内部文件系统为浏览器预留的存储量来开辟一种检测隐身模式的新方法。
安全研究员Vikas Mishra在研究中提出,他发现Chrome为隐身模式使用的临时内存文件系统分配的存储空间的最大配额为120MB。
“根据上述观察结果,隐身和非隐身模式之间临时存储配额的主要差异在于,隐身模式有一个硬性限制为120MB,而非隐身模式则没有这种限制。从上表中可以看出,临时存储配额小于120MB,而在非隐身模式下设备存储必须小于2.4GB。然而,在实际情况中,我们可以放心地认为,当前地绝大多数设备的存储空间都超过了2.4GB。”
Mishra利用这些观察结果编写了一个脚本,用于查询分配给浏览器文件系统的配额,如果该配额少于120MB,则表示浏览器处于隐身模式。
BleepingComputer以Mishra的脚本的为基础,提出了一个简单的验证概念来演示这种技术,如下所示:
根据服务系统的配额检测隐身模式
2.通过访问时间检测隐身模式
在读取和写入数据时,内存文件系统的系统比磁盘文件系统更快。当Chrome进入隐身模式,切换到内存文件系统时,我们可以通过测量写入文件系统的速度来检测隐身模式浏览。
这种新的检测方法是由研究员Jesse Li发现的,她测量了浏览器文件系统的一系列写入。理论上各个网站可以根据这些写入的速度,确定浏览器是否使用了隐身模式。
常规模式与隐身模式时的写入速度
与Mishra的研究不同,Li没有提出这种方法完整的验证概念,但她提供了一个可以测量写入速度并显示结果的脚本。我们期待有人利用这种方法检测隐身模式。
此外,Li的方法需要许多写入来确定文件系统的速度,因此这个检测过程需要花费大量时间。
如果你想测量隐身和常规浏览模式下文件系统的写入速度,那么可以尝试Li创建的这个脚本(https://jse.li/chrome-filesystem-timing/),具体看看实际的速度差异。
3.使用了新检测方法的网站
有个坏消息,有些网站已经开始使用Mishra的文件系统配额检测方法,来检测访问者是否处于隐身模式。
微软Edge开发人员Eric Lawrence曾提到,纽约时报就利用了这种方法来检测访问者何时处于隐身模式。
纽约时报网站检测隐身模式
以下代码表明他们使用了Mishra的研究脚本。
检测隐身模式的脚本
我们针对这两种方法征询了谷歌的意见,谷歌表示,他们会坚持不懈地“努力纠正任何当前或未来检测隐身模式的手段。”
原文:https://www.bleepingcomputer.com/news/google/google-chrome-incognito-mode-can-still-be-detected-by-these-methods/
本文为 CSDN 翻译,转载请注明来源出处。
【END】