Google修完漏洞,但网站仍可用文件系统API侦测出Chrome无痕模式

Google为了让网站无法侦测用户是否以无痕进行浏览,在Chrome 76修正文件系统(FileSystem)API的漏洞,但现在有研究人员发现,Chrome 76的文件系统API的写入速度,在无痕模式比一般模式还要快,因此网站还是能用写入的速度差异,来侦测使用无痕模式的访客,完成时序攻击(Timing Attack)。

 

Chrome 75以前的版本,无痕模式会禁用文件系统API,以避免在设备留下任何活动痕迹,而文件系统API的漏洞,会让网站在检查文件系统API的可用性时,回传错误消息,因此网站便能得知用户正在使用无痕模式,Google提到,由于不少媒体网站采用计次付费墙(Paywall)收费模式,当用户浏览超过一定数目的文章,才会要求登录付费帐号,因此为避免用户使用无痕模式规避计次付费墙机制,网站便会使用文件系统API的漏洞,侦测用户是否正使用无痕模式,决定给给相对应的用户体验。

而在7月的时候,Google宣布要落实无痕模式隐私原则,会在Chrome 76中,修正文件系统API的漏洞,但现在研究人员Jesse Li发现,即便是最新的Chrome 76,仍然可以通过测量API写入存储中介的速度,来侦测浏览器的无痕模式,而Jesse Li也在GitHub中发布了概念性验证实例。

Chrome 76为了避免网站根据文件系统API的可用与否侦测无痕模式,因此即便在无痕模式,Chrome仍然会写入API的数据,只是数据写入的目标是内存而非磁盘,如此便不会在磁盘上留下操作痕迹,对网站来说,文件系统API都一致可用,那就不存在之前以API可用与否,判断浏览器无痕模式的问题,不过这却产生另一个问题,由于内存写入速度比磁盘更快,两者仍存在差异。

利用这样的差异,网站就能推测出用户是否使用无痕模式。由于内存比磁盘快上许多,网站只要重复写入大量的字符串,测量文件系统需要时间,创建出基准测试,就能用来判断访客是否使用无痕模式。

Jesse Li进行了一百次的迭代,共花费数分钟做出基准测试。基准测试结果显示,在一般模式下的文件系统,写入磁盘的尖峰时间约落在3,000到4,000毫秒之间,相较于无痕模式写入内存,尖峰落在1,000毫秒,时间只有三分之一到四分之一而已,无痕模式平均耗费792毫秒,而一般模式平均则要2,281毫秒,是前者的2.8倍。

Jesse Li解释这种侦测无痕模式与一般模式的时序攻击有其限制,除了需要花上数分钟或是数十秒的时间,才能获得有用的数据之外。侦测的结果跟用户设备的配置有关,移动设备与桌面计算机的内存和磁盘速度都不一样,也会跟设备同时执行的工作有关,而对统计数据产生噪声。

这种方法并非直接侦测无痕模式,而是侦测文件系统的第二存储中介,进而推断用户浏览器正在执行的模式,但当磁盘即是内存的时候,便会产生误判。不过,Jesse Li提到,这种方法相对难以修补,因为其攻击的手段是漏洞修补的技术基础,因此用户要完全避免被侦测出使用无痕模式,必须要在两种设备使用相同的存储中介,写入速度相同也就没有被侦测的疑虑。