谷歌已经改变了Chrome浏览器的一个核心组件的工作方式,以便为其用户增加额外的隐私保护。
此Chrome组件称为“HTTP缓存”或“共享缓存”,其工作方式是保存网页上加载的资源的副本,如图像、CSS文件和JavaScript文件。
其想法是,当用户再次访问同一网站或访问另一个使用相同文件的网站时,Chrome将从其内部缓存中加载这些文件,而不是浪费时间重新下载每个文件。
这个组件不仅出现在Chrome中,而且从互联网早期起就出现在所有的Web浏览器中,在那里它是一种节省带宽的功能。
在所有浏览器中,缓存系统通常以相同的方式工作。缓存中保存的每个图像、CSS或JS文件都会收到一个存储键,该键通常是资源的URL。
例如,图像的存储键将是图像url本身:*https://x.example/doge.png.。
当浏览器加载新页面时,它将在其内部缓存数据库中搜索关键字(URL),并查看是否需要下载图像或从缓存加载。
不幸的是,多年来,网络广告和分析公司意识到,同样的功能也可能被滥用来跟踪用户。
谷歌开发者倡导者北村英治(Eiji Kitamura)表示,从性能角度来看,这种机制长期以来一直运行良好。
但是,网站响应HTTP请求所花费的时间可能会显示浏览器过去曾访问过相同的资源,这会使浏览器面临安全和隐私攻击。";
检测用户是否访问过特定站点:对手可以通过检查缓存中是否有可能特定于特定站点或站点队列的资源来检测用户的浏览历史记录。
跨站点搜索攻击:攻击者可以通过检查浏览器缓存中是否没有特定网站使用的搜索结果图像,来检测用户的搜索结果中是否存在任意字符串。
跨站点跟踪:缓存可用于存储类似cookie的标识符作为跨站点跟踪机制。
但随着本周早些时候发布的Chrome 86,谷歌对这一机制进行了重要的改变。
此功能称为缓存分区,它基于另外两个因素更改资源在HTTP缓存中的保存方式。从现在开始,资源的存储密钥将包含三项,而不是一项:
通过在缓存预加载检查过程中添加额外的密钥,Chrome有效地阻止了过去针对其缓存机制的所有攻击,因为大多数网站组件将只能访问自己的资源,而无法检查不是他们自己创建的资源。
但是,在某些情况下,缓存可能会相交,但攻击面比以前小得多。(有关所有边缘情况,请参阅此处)。
自2019年9月发布Chrome 77以来,谷歌一直在测试缓存分区技术,并表示新系统不会对用户或开发者产生任何影响。
唯一会看到变化的是网站所有者,他们最有可能观察到网络流量增加了约4%。
缓存分区目前仅在Chrome中有效,但也可用于其他基于Chromium开源代码的浏览器,所有这些浏览器都最有可能在接下来的几个月中部署它。这包括“边缘”、“勇敢”、“歌剧”、“维瓦尔第”等。
Mozilla也宣布了类似的计划,以实现Chrome的缓存分区机制,但目前还没有确定该机制何时登陆Firefox的最后期限。
另一家主要浏览器供应商苹果(Apple)自2013年以来一直在使用有限的缓存分区系统。然而,Safari的缓存分区系统只使用两个检查(#1和#3),而不是Chrome更彻底的三个检查。
Shutterstock的应用安全工程师约翰·杰克逊(John Jackson)今天告诉ZDNet记者,缓存分区是一种很好的做法,大多数大公司创建的浏览器都应该利用这一做法。
多年来,侧通道攻击的发生是统一缓存的结果,这一点已被反复证明。侧通道攻击导致攻击者获取令牌、电子邮件地址、信用卡号码、电话号码、浏览历史记录等。
杰克逊补充说,很高兴看到谷歌开始着手实施一项本应已经实施的安全措施。