论文原文链接:https://www.usenix.org/conference/usenixsecurity21/presentation/squarcina
一、简介
- 该文为发表于USENIX 2021的 Can I Take Your Subdomain? Exploring Same-Site Attacks in the Modern Web。
- 同站攻击(相关域攻击),其核心在于攻击者控制了Web应用程序的同级域。
- 过去,由于相关域攻击被认为主要与cookie安全相关,不具有比传统网络威胁更大的破坏力。并且,许多人认为该种攻击难以实现(网站所有者不会将同级域或子域托管给不信任的组织或个人)。因此,学界对相关域攻击的关注较少。
- 但是,作者发现现代网络中存在众多相关域被攻击者接管的情况,并且随着隐私保护策略的更新,相关域攻击对cookie造成的威胁显著高于普通攻击者(例如浏览器默认不允许将本站的cookie向外共享,而在站内则有共享的可能)。
- 在本篇论文中,作者针对相关域攻击者的能力与手法进行细粒度地定义,并且在大量实际应用中评估相关域攻击带来的威胁,并证明相比一般攻击,相关域攻击能够带来一定的额外收益。
二、研究方法
作者详细分析相关域攻击者的多种手段与能力,并将其与实际的网络安全威胁相关联,形成一个细粒度的相关域攻击框架。
2.1 具备什么能力就可以开始展开攻击了?——提出了六种攻击者可能被赋予,或者达成攻击需要得到的能力:
在不同攻击场景下,所需要的的能力不同,可能只需要其中几个。
2.2 需要在什么有漏洞的场景下进行攻击?——提出了四个攻击场景:
场景1:DNS悬空
例如当DNS服务器使用CNAME记录将目标站域名映射到另一个域名时,如果映射域名过期,第三方可以简单地注册域名并在该域下提供任意内容。利用此漏洞的攻击者可以完全控制主机此外,DNS通配符也可能导致DNS悬空。
场景2:企业网络与漫游服务
大型组织通常会为其网络中的设备分配完全限定的域名,使得访问时可以忽略IP变动造成的不变,但这也使得其内部用户具有相关域攻击者的能力。相似的,给用户分配子域名的漫游服务同样会给予用户相关域攻击的部分能力。
场景3:托管服务与动态DNS
许多服务提供商允许用户在特定子域下创建网站,例如 .github.io。如果其父域github.io不存在于公共后缀列表列表(PSL)中,则会面临相关域攻击的风险。公共后缀列表列举了顶级域名和开放注册的域名,浏览器禁止此列表上的域名被子域名写入Cookie。
场景4:站点沦陷
相关域中的主机被攻击者控制,例如获得了shell。
2.3 攻击之后,会带来什么危害?——提出了同站攻击带来的六个网络威胁:
- 由于子域名可信度高,更容易骗取用户信任;
- 可绕过浏览器端的各种安全策略;
- 会破坏cookie的保密性和完整性;
- 可滥用CORS(跨源资源滥用规则,放宽SOP对跨远通信强制限制的标准方法)获取敏感信息。
- 可滥用postMessage(跨域消息传递),获取敏感信息。
- 可滥用域松弛(共享父域名的两个域实现通信), 获取敏感信息。
2.4 为了证实同站攻击可以大量在现有互联网展开,需要对大量网站域名进行评估——为此提出了扫描框架:
为了检测互联网中存在相关域攻击漏洞的站点,作者提出了以下扫描框架。该扫描框架主要聚焦由于场景1(DNS悬空)导致的相关域攻击。
- 该框架首先从开源数据源(如Censys等)获取DNS解析数据,之后整理成DNS解析链并检查TLS证书字段。
- 在将DNS数据存入数据库后,框架会针对三种情况检查站点是否满足发生DNS悬空的先决条件,该步骤用于发现那些易于受到相关域攻击的站点,缩小评估范围。
- 最后,框架统计了容易遭到相关域攻击的域的数量,并实现了针对各个策略的分析器,从而评估了特别热门的网站部署的各个策略(cookie、CORS、CSP、postMessage、Domain Relaxation)的安全性(是否易受到同站攻击)。
三、实验
作者使用Tranco公开的域名排行中的前50,000个进行实验,确定了887个具有子域接管漏洞的域名。在887个域名中,大多数漏洞是由于第三方服务截断造成的(由于目标站可能需要通过映射自己的子域名至第三方以获取服务,攻击者可以通过认领目标站子域至自己的第三方服务账户以获取相关域攻击能力)。
此外,作者还对站点所能被获取的攻击能力以及普通攻击者和相关域攻击者的差异进行研究,可以看到,攻击者主要通过获取js代码的控制权和在https上控制网站的能力对目标站点进行威胁。相较于普通攻击者,能够绕过部分安全机制的相关域攻击者对WEB应用具有更大的威胁。
四、参考链接
https://xz.aliyun.com/t/2414 http://www.hackdig.com/08/hack-446223.htm
|