Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Cloud Strife: Mitigating the Security Risks of Domain-Validated Certificates

作者:Kevin Borgolte, Tobias Fiebig, Shuang Hao, Christopher Kruegel, Giovanni Vigna

单位:UC Santa Barbara, TU Delft, UT Dallas

原文:PDF

出处:NDSS 2018


1. Abstract & Introduction

近年来,Infrastructure-as-a-Service (IaaS),也就是大家所称的云服务,给网络整体环境带来了很大的变化。它使用虚拟主机技术,让算力、存储空间、网络带宽等资源得以共享,如今云服务的应用与部署已经变得非常普遍。但是当这种新加入网络的动态成分与传统的基于信任的网络生态架构(e.g, SSL证书)相组合起来时,可能会产生不可预知的新的攻击面。

针对云服务的所提供的弹性与灵活性,在这篇文章中作者提出了一种称为IP地址use-after-free的漏洞,当一个主机用户释放了他的IP地址(文中称这种IP地址为过期IP),但还没来得及更改域名相应DNS记录时,攻击者可以申请相同的IP地址,因此能够伪装成域名所有者,向CA申请相应证书。这种攻击被称为域名劫持攻击。

2. Background

A. DNS 和 DNSSEC

DNS是网络架构中的核心部分,它负责将域名解析成唯一的IP地址。向DNS服务器请求域名的A记录相应会返回其IPv4地址,AAAA记录则对应IPv6地址。

针对DNS中缺乏来源认证的问题,IETF提出了一种基于DNS系统层级结构特性的签名验证协议,称为DNSSEC(DNS Security Extensions)。从根区域开始,每个级别都需要对低于它的组织密钥进行签名,以www.example.org 为例,根区域对.org进行签名,.org对example.org进行签名。当验证时,则是沿着该信任链一直追溯到根区域,并自动用该路径上的“父”密钥验证“子”密钥。这种方式与SSL证书的验证和管理类似,其安全性由根区域的安全性保障,但是DNSSEC在实际的部署中也存在诸多的问题。

B. 云

云是一组软件,硬件的集合,它具有以下特性:按需自助的服务,广泛的网络接入,资源池化,快速可伸缩性以及可量化的服务。它根据用户的需求提供相应服务,其种类包括:

  • SaaS(Software as Service):用户通过网页浏览器的或者使用API来访问云服务,如Microsoft Office 365。
  • PaaS(Platform as a Service):用户可以在云上部署自己的代码或者应用,但不能够访问云的网络和硬盘资源,如Google App Engine。
  • IaaS(Infrastructure as a Service):通过虚拟机技术,用户可以自由地访问云上的存储,网络,计算力等资源。这种服务的例子包括Amazon Web Services(AWS),以及Microsoft Azure。

这篇论文中主要讨论的是IaaS云服务,因为它可以动态地分发IP地址,从而可能产生IP地址use-after-free问题。

C. DV证书

在给指定域名申请SSL证书时,需要向CA(Certificate Authority)证明自己对此域名的所有权,此过程称为DV(Domain Validation)。主要有以下三种DV方法:

  • DNS认证:需要在域名的Name Server上设置添加一条由CA指定的TXT记录
  • Email认证:CA向域名管理员发送一条邮件,申请者收到邮件后需要点击邮件中的链接完成认证
  • Web-based认证:域名所有者需要在CA指定的路径下存放一段数据,CA通过HTTP访问以进行认证

3. Problem Analysis

A. 影响及危害

云服务中存在的IP地址use-after-free问题可能导致域名劫持,它可能对域名所有者以及网站访问者造成不同程度上的影响,其中包括以下几个方面:

  • 远程恶意代码加载:当域名指向攻击者控制的IP地址时,攻击者可以在上面挂恶意的JS代码,投放广告,或者进行钓鱼攻击等行为。
  • SSL证书获取:攻击者可以轻易通过CA的DV认证,获取此域名的SSL证书,哪怕将来IP地址解析到正确的位置,攻击者也可以利用申请获得的证书进行HTTPS中间人攻击。
  • 域名解析服务器:当劫持的域名是一个域名服务器时,可以造成更大的危害,攻击者可以掌控整个域名的解析,也可以自行创建新的域名或者子域名。
  • 邮件服务:当DNS的MX记录没有及时更改时,攻击者可以控制此域名下的邮件服务,从而伪装成网站的管理员进行邮件钓鱼或者诈骗。
  • 子域名劫持:一些网站可能拥有很多挂载在不同云主机下的子域名,这些子域名也可能被劫持,并进一步影响到主域名的安全。

B. 攻击场景分类

IP地址use-after-free漏洞攻击发生的基本场景是域名所有者需要更换其云主机的IP地址。文章对可能的domain-IP mapping情况进行了分类,并对攻击的可行性进行了评估:

  • 及时的迁移(Early Migration):在过期IP地址被释放之前,域名的DNS记录以及被及时更新到新IP上了。这种情况依旧可能遭受攻击,因为其DNS记录可能被缓存直到到达TTL(time to live)值才被清除。
  • 延迟的迁移(Delayed Migration):在域名DNS记录更改前就已经释放了,这给攻击者提供了一个攻击的时间窗口,在这段期间内攻击者可以尝试申请这个已经被释放的IP地址,文章在下面进行了相关实验。
  • 辅助性的(Auxiliary):此情况下一个域名对应多个辅助性的IP地址,这种情况下域名所指向的过期IP可能是一种容错机制,当进行DNS解析时有一定的概率会解析到此IP上。由于这种错误配置,只要此域名解析器不删除指向这个IP的记录,攻击者可以持续且隐蔽地进行域名劫持,比如说申请证书或者进行中间人攻击。但由于DNS解析的不确定性,攻击者可能需要尝试多次才能申请到证书。
  • 被抛弃的(Abandoned):这种情况下域名站点已经停止提供服务,但由于域名还未过期,其domain-IP mapping也就处于一种被遗弃的状态。

C. IP地址的申请

由于攻击者需要在一定的时间窗口内申请到被释放的IP地址,研究人员在如今两个最大的云服务提供商,AWS和Microsoft Azure上进行了实验。通过在云服务商所提供的不同的区域中每隔10s申请5个IP地址,在从四月底到六月初一个多月的时间里一共进行了14,159,705次申请,并申请到了共计1,613,082个不重复的IP地址,整个过程中只花费了$31.06美元。

研究人员评估了申请到同一个IP地址,也就是耗尽IP池平均需要所花费的时间,并估算攻击者若以每个秒申请5000个IP的速度进行申请,只需要2~61s内就可以获取受害者域名所释放的IP。

1

D. 受影响的域名

研究者接着通过分析由Farsight所提供的passive DNS监测数据,分析了从2017年4月11日到8月9日一共120天的DNS查询流量,从中共抽取出130,274,722个域名,以及767,108,850个domain-IP mapping关系,因为其中还包括了子域名的IP地址映射。其研究步骤如下:

1)首先对域名进行DNS解析,找出那些解析到云服务商所提供的IP地址的域名

2)测试这个IP地址是否ICMP ping或者针对常用TCP/UDP端口的请求,若收到回应,则将此IP标记为已部署,若未收到回应,则认为此IP地址已被释放

在研究中,作者发现其中有702,180个域名(0.539%)指向了被释放的IP地址,因此可能易受到域名劫持的攻击。而且在这些域名之中,大部分域名(80.31%)的domain-IP mapping·存在迁移延迟的问题,还有17.24%是已经被抛弃的,2.45%是属于辅助性的。

E. 域名劫持PoC

作者通过对自己的域名做实验,证明了这种攻击的可行性。在实验中,作者尝试去获取域名为“cloudstrife.cs.ucsb.edu”所指向的IP,并以每秒钟申请两个IP的速度在28分钟内取得了成功。

4. Mitigation

针对这种IP地址重用攻击在申请DV证书时产生的问题,研究者在ACME v2(Automated Certificate Management Environment)协议中提出了相应的解决措施。

首先,想要获取受害者域名的SSL证书,可以选择从以下几个方面进行攻击:

(a) 获得域名所指向的过期IP地址的使用权

(b) 在CA与域名所在服务器IP的通路上进行MITM攻击

© 在一段时间内想办法获取DNS区域的掌控权

接着,研究人员提出了一种称为Pre-Signature Certificate Consistency Check的验证方法:

(1) 用户向CA申请SSL证书

(2) CA在CT(Certificate Transparency)日志中查询此域名是否曾经被可信任的CA颁发过证书,以及此证书是否有效,CA可以选择信任或者不信任已经失效过期的证书。

(3) CA向用户发送所它要求的挑战内容,首选HTTP,也可以选择同时进行Emai或DNS验证。

(4) 当选择HTTP验证时,用户在相应URL位置上放CA指定的nonce。

(5) CA除了会对其进行HTTP请求验证nonce之外,还需要进行HTTPS验证,用户使用其证书私钥对这个nonce进行签名,以证明他确实拥有这个证书。

2

这种验证方式的好处是利用了现有的CT日志,同时几乎不会对现有ACME协议增加什么大幅度改动。通过增加一个域名证书的签名,可以有效地避免IP地址use-after-free所带来的DV问题,因为就算攻击者可以暂时拥有域名所指向的IP地址,却不可能在没有域名所对应的真正服务器的前提下获知域名的证书私钥。

但是其中也存在一些corner case,论文中讨论了以下几种情况:

  • 丢失的证书/私钥:这种情况比较普遍,但必须将其与恶意申请视为同样性质的行为。此时CA会提示用户选择其它的验证方式,如邮件或者DNS,这两种方式受IP地址use-after-free的影响较小。
  • 过期的证书:CA可以选择接受或者不接受过期的证书,也可以自行制定接受过期时间在某个范围内的证书,然而作者建议采取最为严密的安全措施,也就是只接受有效证书。
  • 域名所有权变更:新获得者无法得到此域名从前的证书,因此HTTPS验证挑战会失败,但同第一种情况一样,用户可以选择使用其它的验证方式。
  • 恶意的申请:这种情况下,攻击者无法证明自己对此域名的连续拥有权,而且一般情况下,这些攻击对时间的要求比较大,通过延长证书发放的时间,可以增加攻击被发现的几率。

此外,作者还提出了一些其它的改进建议,如让云服务商进行限制IP发放的速率,监控针对服务器的恶意扫描,在释放旧的IP前及时更新DNS记录,并且保证其TTL已经到期等等。

5. Conclusion

IP地址的use-after-free问题本质是由云服务的灵活性以及DNS的延迟性所造成,使得攻击者可以在较短的时间以及较少的成本下获取目的IP地址。这种攻击必须在一段时间窗口内完成,因此具有不连续性。基于这种攻击的特征,研究者提出以域名证书的连续性作为基础,在重新申请证书前先验证先前所具备的证书,可以一定程度上缓解HTTP验证的不安全性问题。

然而,这种方法必须要求CT日志的广泛部署,对于尚未部署透明证书日志,或者发放证书前不查询日志的CA则没有效用。鉴于市面上CA种类之多,想要完全且正确地部署CT或许还需要不少时间。攻击者可以选择向尚未部署这些安全措施的CA申请证书,而这些证书同样可以被浏览器信任。