Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Bamboozling Certificate Authorities With BGP

作者:Henry Birge-Lee, Yinxin Sun, Anne Edmundson, Jennifier Rexford, Prateek Mittal

单位:Princeton University

出处:USENIX Security 2018

原文:PDF

概述

在互联网中,计算机采用 HTTPS 通讯,通过 SSL/TLS 加密明文传输的信息以保证数据安全。比如在浏览 HTTPS 网页的过程中,客户端首先向服务端发起请求连接,服务端响应并回复自己的 SSL 证书。证书可以看作是一个网站的身份证,其中包含着服务端的公钥以及一些相关信息,以证明自己确实是被请求者。接着双方协商并生成通讯时使用的一次性对称加密密钥,这个过程客户端需要使用服务端所提供的公钥来进行数据加密。
公钥基础设施 (Public key Infrastructure, PKI),是一套创造、管理、分配、使用、存储以及撤销 SSL 数字证书的网络基础架构。PKI 通过可信任的证书颁发机构 (Certificate Authority, CA) 来验证并向域名发放数字证书,以保证域名的真实所有者获得此域名对应的证书。
figure1

但在实际情况中,CA 验证并颁发证书的过程往往也可受到中间人 (MITM) 攻击,从而使得 HTTPS 的通信安全受到威胁。在此论文中,作者通过控制自治系统 (Autonomous System, AS) 来进行边界网关协议 (Border Gateway Protocol, BGP) 劫持攻击,绕过 CA 对申请域名所属权的验证,从而获得了不属于自己的域名的证书。此研究第一次演示了这种攻击在真实场景中的有效性,实验证明,这种攻击方法对目前主流的所有 CA 机构均有效。

BGP劫持

因特网由很多主机构成,这些主机由 IP 地址作为唯一的标识,一组 IP 地址组合成的 IP 地址前缀一般由一个统一的系统组织管理。这样的系统称之为自治系统 (AS),它为因特网的使用者提供网络的连接服务,给用户分配 IP 地址,并且同其它 AS 互换数据流,使得通过因特网能够将信息传输到任何一个连接上去的主机。 边界网关协议 (BGP) 规定了 AS 之间交换数据包的方式,每个 AS 会注册一个自治系统编号 (Autonomous System Number, ASN) 作为唯一标识符。通过BGP声明自己所拥有的IP地址前缀 (比如X.Y.Z.0/23),AS可以告知其它成员将发向此前缀的数据包都发送给自己。
因此当一个 AS 通过构造 BGP 声明谎称自己拥有某 IP 前缀时,就可以劫持那些发送给此 IP 的流量了。

攻击模型与方法

研究者假设在此场景中,攻击者具备以下条件:

1,攻击者必须拥有自己掌控的 AS 或者某个 AS 的边界路由器 2,攻击者可以决定 BGP 声明的内容以及发送给哪些 ASes 3,攻击者知道所劫持域名对应的 IP 地址

接着,论文展示了以下五种不同的 BGP 劫持方法:

1,传统的 sub-prefix 攻击
2,传统的 equally-prefix 攻击
3,追加的 sub-prefix 攻击
4,追加的 equally-specific-prefix 攻击
5,AS-path 投毒攻击

对于传统型的 sub-prefix 攻击而言,假设受害者的 IP 地址为 X.Y.Z.1,前缀为 X.Y.Z.0/23。攻击者可以发布 BGP 声明,通知其它 AS 将发往目的地 IP 的前缀为 X.Y.Z.0/24 的数据包都发给自己,从而截获了发往受害者的数据。而传统 equally-prefix 则是声明将前缀为 X.Y.Z.0/23 的数据包发给自己,所声明前缀与受害者的相同。后者的好处在于这样的攻击比较隐蔽,因为前者声明了更加具体的前缀,所有的 AS 都会将相应的数据包发送给攻击者,后者只会影响到部分 AS 的行为;但是后者成功率没有前者的高,需要攻击者所处的网络拓扑路径相对受害者而言,更受 CA 的偏好。

figure2
对于追加型的 BGP 劫持攻击而言,区别在于 AS 不是声明自己起源于这些 IP 前缀,不是改变路由的目的地,而是声称自己拥有到指定 IP 前缀目的地的更短路径,作为中间节点传递数据流。假设攻击者的 ASN 为 X,受害者的ASN 为 O,攻击者通过发送 AS-PATH=[X, O] 来进行 BGP 劫持。这种攻击方法更加隐蔽,因为有些 BGP 监控系统只会检查 AS 的起源,而且这种攻击方法的效果与传统型攻击并没有区别。

对于 AS-path 投毒攻击而言,需要构造并发送 AS-PATH=[X,R,O] ,其中R为位于 X 和 O 之间的一条有效路由。任何处于这条通路之间的 AS 都会忽视这个声明,将数据继续按照原样发送给 O,因为会产生数据流的回路。而其它不在 R 这个通路上的 AS 会接受这条声明,并将数据路由给 X,X 可以对接受的数据进行窃听或篡改再将其发送给 O。这种方法不仅有效,还将攻击的隐蔽性降到最低,因为它能让发送给 O 的数据不受影响,因此不易被发觉。

真实场景下的攻击

作者在实验中在俄亥俄州搭建了受害者的服务器,并将其连接在洛杉矶的区域网上。并且选择将攻击者的服务器搭建在英国伦敦,通过阿姆斯特丹的网络交换中心继而连接到因特网上。值得注意的是,这里的攻击者有两个不同的上游网络服务提供商,以便将来发起 AS-path 投毒攻击。实验环境的网络拓扑结构如 图3 所示。 figure3

实验中,攻击者首先通过 BGP 劫持来截获发送给受害者 IP 地址前缀的数据,接着向不同的 CA 发起域名证书申请,从而能够在不真正控制受害者所属服务器的情况下获得受害者所属域名的证书。研究人员测试并例举了不同 CA 在颁发证书时所花费的时间以及相关攻击方法等信息,如 表3 所示,所有的证书颁发机构均被攻击成功。

量化研究域名和CA的弱点

sub-prefix 攻击

研究者通过分析证书透明 (Certificate Transparency, CT) 日志中记录的证书,从每个证书中取出域名,并解析成 IP 地址。再通过 Level3 的路由表进行一一对应,从而找到其对应的 IP 前缀和起源 AS 。研究发现,有 72% 的域名的 IP 地址前缀要短于 /24,因而易受到 BGP 劫持的攻击。在表四中,研究人员向我们展示了对五家 CA 进行分析的结果。作者发现五家 CA 中只有 Comodo 一家是在 IP 前缀为 /24 的 IP 上运行 DV 功能,其余都易受到 sub-prefix 攻击。

4

equally-specific-prefix 攻击

对于equally-specific-prefix攻击的研究,作者选用了所谓抵抗性 的概念来对 CA 的 AS 进行评估。令一个由 CA 拥有的 AS (称为 v) ,对于一个由攻击者拥有的AS (称为 a),针对受害者的域名 (称为 t) 进行攻击,则抵抗力可以由如下公式算出: $$ \overline\beta(t,v,a)=\frac{p(v,t)}{p(v,t)+p(v,a)} $$

其中 p(v, a) 为由 v 到 a 的同等权重的路线数目,p(v, t) 则是由 v 到 t 的同等权重的路线数。研究者根据 (1) 客户端本地线路权重 > 对等线路权重 > 供应商线路权重,以及 (2) 最短AS线路来对每条线路进行评估。接着通过找出所有权重相同的最短线路,就可以计算出相应 (t, v, a) 集合的 抵抗性 了。

研究发现,抵抗性 很大程度上由 AS 之间的相互连接程度决定,当 AS 拥有更多邻居时它与因特网中其它部分的距离也就越短,其 抵抗性 也就相应较高。下图展示了计算结果,可以看出 50% 的域名拥有的 抵抗性 低于 57%,这就意味着当攻击者随机选取一个 CA 进行证书申请攻击,至少有 43% 的可能性可以通过 equally-specific-prefix 攻击取得成功。

figure5

除了域名的 平均抵抗性 之外,作者还计算了 CA 的 有效抵抗性 ,选取的是前十家 CA 中每家所对应的域名中 抵抗性 最低值。同样的,在表四的最后一行中还展示了计算的CA所具备的 平均抵抗性,其中 Let’s Encrypt 具有最高得分 (0.887),原因在于这家 CA 拥有四个直接连接的 tier 1 网络提供商,并距离大部分的因特网只有一跳的距离。而相反的,Comodo 的 抵抗性 非常低 (0.217), 因为它只有一个直接连接的 tier 1 网络提供商,因此对于网络中的其它节点,Comodo 的路由权重会相对较低。

针对CA的改进措施

多节点验证

由于 equally-specific-prefix 攻击和 AS-path 投毒攻击并非会影响到整个因特网的路由规则,我们可以设计多个不同位置的网络节点来进行 DV,从而避免单一节点被攻击者欺骗。下图为研究着分析 Let’s Encrypt 所部署的单一验证节点至多验证节点所对应的域名的 抵抗性。可以看出,哪怕是只增加一个验证节点,改进效果都是显著的。

figure6

BGP监控系统

在传统的监测方法中,一般是根据 BGP 声明的源 ASN 以及流量的异常来判断是否存在问题,但是这种监测方法对于 AS-path 投毒攻击等相对比较隐蔽的攻击方法效果不好。作者提出了一种基于 BGP 路由年龄的监控方法,这种算法会评估 CA 的每个 ISP 所使用的路由,并标出那些特别新的路线。这将会强制可能的攻击者将攻击持续某个设定的最短时间,才能够获得相应的证书。这种方法很好地权衡了误报率,即所谓的证书延迟颁发率,和对真实攻击的检测率。

总结

这篇文章提出了在SSL证书申请过程中通过 BGP 劫持攻击获得不属于自己域名的证书的攻击方法,并第一次在真实环境中实现并证明了此方法的有效性。在对目前主流的五家 CA 进行评估只后,研究者发现所有 CA 均受到不同程度的影响。研究者进一步通过 CT 日志分析了不同域名和 CA 易受攻击程度,并根据这些数据指标提出了两种有效的缓解措施。 总体而言,这篇文章清晰明了地揭示了 BGP 劫持攻击可能造成的危害程度,以及目前有效防御手段之少。分析深刻且总结全面,是一篇不错的学术论文。