一.,概述
用户通常期望在浏览网络时保持隐私,不希望让网站知道他们之前访问了哪些站点或是否已登录其他网站。然而,被攻击者恶意控制的网站可能通过浏览器的一些方法来获取这些信息,而用户并不知情。这些网站可以在后台与其他网站进行互动,从而收集用户的个人数据。这种攻击方式被称为Cross-Site Leaks(XS-Leaks)。虽然这类漏洞早有报道,但之前的报告通常只是发现了个别实例,并未进行系统的研究。
本文介绍了一种自动识别浏览器和Web中XS-Leaks漏洞的方法,这一工作来自于2023年IEEE Symposium on Security and Privacy (S&P)的一篇论文[1]。作者开发了第一个自动化识别XS-Leaks漏洞的框架,不必通过浏览器API手动搜索便可以通过观察数千个跨站点响应和数十个浏览器API的行为模式。基于这一框架,研究人员在Tranco Top10K上进行了对XS-Leak 流行率的目前为止最大规模研究,并检测到了Chromium、Firefox和Safari等引擎中280个跨站点泄露信息的观测通道。
该研究结果表明XS-Leaks漏洞对Web生态系统构成了重大威胁,为了减少XS-Leaks漏洞的影响,研究者开源了这一自动化工具,浏览器供应商和网站开发人员可以使用该工具最大限度地降低XS-Leaks风险。
二. 背景介绍
每一次XS-Leaks攻击的目标都是跨站窃取用户信息,可以实现历史嗅探、登录检测、有针对性的跟踪等攻击目的,也可以用于执行更有针对性的XSS或CSRF攻击,因此XS-Leaks攻击危害性的大小主要取决于目标站点和泄露的信息内容。
在XS-Leaks攻击过程中,攻击者只能控制目标网站的包含方法和观察浏览器的方法,被攻击的服务器控制HTTP响应,而受害者使用的浏览器决定了观察到的结果。相关的概念包括:
1) 包含方法(Inclusion method):如image或fetch等,指示浏览器以特定方式向服务器执行请求。每个浏览器都有一组包含方法用于启动请求。
2) 观察方法(Observation method):如获取当前地理位置等。每个浏览器都有一组观察方法,这些方法可以提供有关浏览器当前状态的信息
3) HTTP响应:服务器在收到请求时生成的HTTP响应。HTTP响应包含状态码、可选的响应头和正文。
4)浏览器观察函数(Browser observation function):是指给定包含方法、观察方法和HTTP响应的函数,在浏览器中返回的观察结果。
为实现攻击目标,攻击者必须经过图1中所示的多个步骤:
1)攻击者首先选择目标网站(victim.leak)并创建至少两种不同的用户状态(登录状态、访问状态或匿名状态)。攻击者在所有创建的状态下爬取目标网站的URL并收集响应数据,其目标是找到与用户状态有关的URL(SD-URLs),即对不同的用户状态返回不同的HTTP响应。
2)基于收集到的响应数据,攻击者根据对浏览器行为的了解来选择目标URL和攻击的方式(包括包含和观察方法)。随后攻击者创建一个合适的攻击页面,并将其托管在受控站点(attack.leak)上。
3)攻击者使用钓鱼或类似的手法引诱受害者访问攻击者的站点。
4)当受害者访问攻击者的站点时,受害者的浏览器会请求目标URL,其中包括了受害者在目标网站上的状态信息。目标网站会对应于受害者的状态返回一个响应。由于同源策略,攻击者站点无法直接访问返回的响应,但是可以根据选择的观察通道推断出有关响应的一些信息。
图1 XS-Leak攻击步骤
三. 研究成果
在这一工作中,作者定义了观察通道(Observation channel)的概念,观察通道由包含方法和观察方法组合形成,如果存在至少两种HTTP响应并导致不同的观察结果,那么这一观察通道便会泄漏有关跨站点响应的信息。通过查阅浏览器和HTML标准文档、先前的研究和其他工作,可以分别创建包含方法、观察方法和HTTP响应的集合,并构建存在依赖关系的包含方法和观察方法组合。在此基础上,自动化测试框架会为每种包含方法、观察方法和响应的组合自动创建和执行一个测试。每次测试包括访问一个跨站URL,根据给定的包含方法返回响应,并保存给定观察方法的结果。
为了便于理解观察通道的详情,作者使用决策树将响应内容和观察结果间的相关性进行可视化。图2中展示了“image-height”观察通道的决策树,展示了该通道信息泄露的详细信息。示例中的响应为:图像主体,状态码为300,位置为http://localhost:8000/echo/。从根节点开始检查响应的主体内容,因为响应的主体是有效的图像,所以继续向左检查“Cross-Origin-Resource-Policy(CORP)”字段。由于响应没有CORP标头,继续沿左侧路径检查状态码。由于状态码为300,继续向右检查位置字段。由于存在位置标头,继续向右并最终到达一个叶子节点,观察结果是破损图像图标的高度。
图2 “image-height”观察通道的决策树
这一工作对三种XS-Leaks攻击模式进行了测试,包括访问推理(Visit inference)、Cookie接受推理(Cookie acceptance inference)和登录检测(Login detection)攻击。基于Tranco Top10K上的测试和多重限制筛选,在测试URL数量有限的情况下,分别有15%和34%的测试站点会受到访问推理和Cookie接受推理攻击的影响。此外,研究人员在前100个可以成功登录的网站上进行了小规模半手动登录检测实验,测试结果表明77%的网站易受到登录检测攻击的影响。
与此同时,研究结果表明XS-Leaks在不同浏览器实现之间存在显著差异,同一个观察通道在Chromium、Firefox和WebKit三种浏览器中的表现均不相同。其中,部分差异是由于浏览器中缺少或停用的功能引起的,比如CORB仅存在于Chromium中,而WebKit中禁用了link-prefetch。然而,大多数差异来源于之前未被发现的边缘情况。例如,对状态码(如204、205、300和407)的处理方式不同,或者处理响应属性相互矛盾的情况时选取的优先级。
四. 结论
上述研究结果表明XS-Leaks目前在Web上十分普遍,对Web生态系统构成相当大的威胁,攻击者很容易找到易受到XS-Leaks攻击的URL。
从防御层面来说,可以采取的方法包括引入X-Frame-Options以及限制使用各种包含方法,能在一定程度上降低受到XS-Leaks攻击的风险。其次,可以降低请求的区分度或向服务器提供更多关于请求的信息(如Cookie的SameSite标志、添加Referer和Origin请求头),以便服务器拒绝可疑请求。另一种防御XS-Leaks的方法是减少浏览器观察方法的功能,例如限制访问跨源窗口对象的length属性。由于XS-Leaks在不同浏览器间存在显著差异,统一边缘情况的行为也可以大大减少总攻击面。
目前的防御方法在适用场景和对网站正常功能影响等方面上均存在不足,暂未提供一个完美的解决方案。基于本文介绍的自动化识别XS-Leaks漏洞的工具,相关厂商和技术人员能够进行系统性评估,从而最大限度地降低XS-Leaks泄漏的风险。
参考文献
[1] Jannis Rautenstrauch et al., The Leaky Web: Automated Discovery of Cross-Site Information Leaks in Browsers and the Web, in IEEE Symposium on Security and Privacy (S&P), 2023.
内容编辑:创新研究院 员苗 责任编辑:创新研究院 舒展
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。