什么是 XS-Leaks
XS-Leaks 即跨站泄漏。 XS-Leaks 利用了浏览器对 HTTP 缓存进行查询的机制,通过对资源缓存的判断进而推断出当前用户的相关信息。
Chrome 浏览器团队在他们的开发者网站中发表了一篇文章,表示在 86 版本之后的浏览器将开始对请求缓存资源机制进行分区(分域名)管理,原因就是因为之前的缓存机制可能会造成隐私泄漏。
在这之前Chrome浏览器的请求缓存策略很简单:
- 用户访问 A 页面,请求一张图片资源,浏览器拿到这张图片之后,会将这张图片进行缓存,并把这张图片的 URL 作为缓存查询的键值
key: URL, value: img
- 用户接着访问 B 页面,假如这个页面也用到了上述的那张图片,此时浏览器会先查询是否已经缓存了此资源,由于缓存过这张图片,因此浏览器直接使用了缓存资源
由于缓存资源没有域名限制,所有网站都共享了缓存资源,因此利用这一点就可以检测用户是否访问过特定的网站:恶意网站通过发起特定的资源请求,通过判断此次资源是否来自缓存就可以推断出用户的浏览历史
比如我在我的网站中请求掘金的 LOGO 图片(或者其他更具唯一性的资源),如果我判断出这张图片来自缓存,那我就可以知道该用户访问过掘金网站。
XS-Leaks 和上述的原理类似,利用了对 HTTP 缓存进行查询的机制,通过检测查询,询问是否有结果,来获取一些用户数据。
XS-Leaks 攻击的主要步骤流程如下:
- 1、删除特定网站的缓存资源。
- 2、强制浏览器刷新网站。
- 3、检查浏览器是否缓存了在(1)中删除的资源。