RangeAmp攻击:将CDN变成DDoS加农炮

作者:李伟中,郭润,刘保君,段海新

内容分发网络(CDN)本来是当前防范拒绝服务攻击的最佳实践,然而攻击者可以利用当前CDN设计和实现中的漏洞把它变成威力巨大的分布式拒绝服务攻击(DDoS)武器,可以用它来攻击任意的网站,甚至攻击CDN平台自身。这是一种流量放大类型的攻击,其放大倍数远远超过NTP、DNS等反射攻击。这一研究成果是发表在网络安全领域国际重要学术会议DSN2020的学术论文,论文作者包括:李伟中,沈凯文,郭润,刘保君,张甲(清华大学);段海新(清华大学,清华大学-奇安信联合研究中心);郝双(德克萨斯州大学达拉斯分校);陈夏润(北京大学);王垚(北京信息科技大学)。

该论文是DSN 2020会议中获得最佳论文奖提名的三篇论文之一,将于2020年6月30日22时左右(北京时间)在DSN会议上公开发表。2020年6月21日前注册DSN会议仅需25欧元,6月24日前75欧元(注册截止日期),远程参与会议可以参与最佳论文投票。

论文下载:https://netsec.ccert.edu.cn/files/papers/cdn-backfire-dsn2020.pdf

预告视频:https://liwz11.com/down/RangeAmp-DSN20-Teaser.mp4

问题背景

CDN(Content Delivery Network, 内容分发网络)是当前提高网站的性能、可靠性与安全性的最佳实践之一,它是由分布在不同地理位置的服务器集群组成的分布式网络,目标是帮助其客户网站实现负载均衡、降低网络延迟、提升用户体验、过滤SQL注入等攻击,分散拒绝服务攻击的流量。如图所示,如果一个网站托管在CDN上:网站用户总是从距离自己最近的CDN节点快速地获取缓存内容;当用户请求在CDN缓存中缺失,CDN节点会将该请求转发到源站服务器,以获取目标文件内容并将其缓存。除了负载均衡和缓存加速,CDN还能够隐藏其客户网站的实际IP地址,并为其提供DDoS攻击保护。

因此,越来越多的网站被托管在CDN上。根据 Lin Jin 等人的测量结果,大约有39%的Top 10k网站被托管在CDN上。而根据思科报告,在2016年有52%的互联网流量是通过CDN分发的,到2021年这一比例预计会上升到70%。

HTTP范围请求机制旨在减少网络传输、提高网站性能。当通过Internet传输文件时,有时会因为网络等问题导致传输被中断;而HTTP协议是一种无状态协议,因此客户端必须重新请求整个目标文件。对于大文件的下载,这可能会非常低效。为了减少不必要的网络传输,HTTP/1.1协议开始引入范围请求机制,允许客户端只请求目标文件的一个或多个子范围,如图所示。

主要发现

虽然CDN和HTTP范围请求机制都致力于提升网络性能,但是我们却发现,CDN对HTTP范围请求机制的实现存在安全缺陷,使得CDN的前端连接和后端连接之间产生巨大流量差异,导致潜在的流量放大攻击,攻击者能够滥用CDN对网站服务器或CDN节点实施DDoS攻击。本文将这类新型的应用层放大攻击技术称为Range-based Traffic Amplification Attacks,简称RangeAmp攻击

  1. 漏洞发现:通过分析CDN对范围请求的转发策略和响应行为,提出了RangeAmp攻击的两种攻击变体,分别是小字节范围(SBR)攻击和重叠字节范围(OBR)攻击。其中,SBR攻击者能够利用CDN对网站服务器实施DDoS攻击,而OBR攻击者能够利用CDN对CDN节点实施DDoS攻击。
  2. 影响范围:对全球13个主流CDN进行了测量。发现这13个CDN都存在潜在的SBR攻击,能够被用于攻击大多数网站服务器;发现11种CDN级联组合(涵盖了6个CDN)存在潜在的OBR攻击,将直接威胁CDN的网络可用性。
  3. 严重程度:在某些场景中,SBR攻击的流量放大倍数高达43330,OBR攻击的流量放大倍数高达7500,远远超过大多数已知攻击方法。此外,这类攻击无需利用僵尸网络,而且能够绕过CDN的DDoS检测机制,还可能给受害者造成巨大的金钱损失。
  4. 解决方案:在CDN、网站服务器和HTTP协议三个层面上分别提出了缓解措施和解决方案,积极协助受影响的CDN厂商修复漏洞。

SBR攻击原理

我们发现,CDN会采用不同的策略来处理范围请求,再将其转发到源站服务器。如图所示,Laziness策略表示CDN直接转发范围请求;Deletion策略表示CDN删除Range头部再转发请求;Expansion策略表示CDN扩展Range头部中的字节范围再转发请求。

大多数CDN倾向于采用Deletion策略或Expansion策略来处理范围请求。当接收到一个范围请求时,CDN往往会“认为”客户端可能会继续请求同一目标文件的其他字节范围,因此会将Range头部删除或将其扩展为更大的字节范围,再将请求转发到源站服务器,然后为后续的范围请求缓存来自源站服务器的响应内容。一旦接收到同一目标文件的其他范围请求,CDN便可以尝试直接从本地缓存进行快速响应。这不仅优化了缓存,还减少了访问延迟,而且能够防止过多的回源请求。

Deletion策略和Expansion策略确实能够帮助CDN改善服务,但是与客户端所请求的字节数相比,这两种策略要求CDN从源站服务器请求更多的字节数。如图所示,如果CDN采用Deletion策略或Expansion策略(攻击条件),那么攻击者可以构造一个具有较小字节范围的范围请求来发起RangeAmp攻击,使得CDN和源站服务器之间需要传输巨大的响应流量,从而大量消耗源站服务器的出口带宽资源(攻击目标)。本文将其称为“Small Byte Range Attack”,简称SBR攻击。

OBR攻击原理

HTTP范围请求机制允许客户端请求目标文件的多个子范围,但是RFC2616对多范围请求没有任何限制。Apache Killer,又被称为CVE-2011-3192,允许攻击者通过发送多范围请求来耗尽Apache服务器上的内存资源。因此,RFC7233针对多范围请求增加了一些安全考虑,建议HTTP 服务器应该忽略、合并或拒绝某些可能存在恶意目的的多范围请求,例如具有两个以上重叠范围或者具有许多小范围的多范围请求。大多数CDN确实采用了RFC7233的安全建议。但很遗憾的是,某些CDN出于业务需求或者其他考虑,完全忽略了该建议。

如图所示,两个CDN可以被级联。如果前端CDN采用Laziness策略,而且,后端CDN对多范围请求直接返回多部分响应而不检查范围是否重叠(攻击条件),那么攻击者可以构造一个具有大量重叠范围的多范围请求来发起RangeAmp攻击,使得前端CDN和后端CDN之间需要传输巨大的响应流量,从而大量消耗前端CDN和后端CDN的特定节点的带宽资源(攻击目标)。本文将其称为Overlapping Byte Ranges Attack,简称OBR攻击。

测量评估

1. 实验测量

我们测量了全球13个主流CDN的范围请求转发策略,发现所有CDN都对特定格式的Range头部采用Deletion策略或Expansion策略。因此,这13个CDN都受到SBR攻击的影响。我们还测量了SBR攻击在不同目标文件大小(1~25MB)时的流量放大倍数,如下表所示,第一列是受影响的CDN厂商,第二列是精心构造的测试用例,第三列是目标文件大小分别为1MB、10MB和25MB时所取得的流量放大倍数。

我们测量了上述13个CDN对多范围请求的转发行为和响应行为,发现有4个CDN采用Laziness策略转发多范围请求,有3个CDN对多范围请求直接返回多部分响应而不检查范围是否重叠。因此,这些CDN都受到OBR攻击的影响,总共有11种CDN级联组合,涵盖6个不同的CDN厂商。我们进一步测量了这11种CDN级联组合能够产生的最大流量放大倍数,如下表所示,第一列和第二列是受影响的CDN级联组合,第三列是精心构造的测试用例,第四列是测试用例中能够包含的重叠范围最大数量,第五列是目标文件大小为1KB时后端CDN接收到的响应流量、后端CDN发出的响应流量和相应的流量放大倍数。

2. 攻击演示

为了探索RangeAmp攻击对受害者服务器带宽资源的损害程度,我们将受害者服务器出口带宽设置为1000Mbps,将目标文件大小设置为10MB,然后发起SBR攻击,持续30秒。如图所示,在攻击期间,当并发请求数超过13,受害者服务器的千兆出口带宽基本被耗尽,而攻击端带宽消耗基本不到500Kbps。

此外,在GeekPwn2019国际安全极客大赛上,我们成功演示了利用RangeAmp攻击对出口带宽为3Gbps的网站服务器实施DDoS攻击。受害者网站为主办方提供的位于中国的网站服务器(域名为cdntest.geekpwn.org),攻击持续5分钟以上。如图所示,在攻击期间,目标网站服务器的出口带宽被完全耗尽。主办方在受害者网站首页上放置了两张图片,大小分别为6.4MB 和5.3MB。在攻击之前,网站首页加载延迟大约为2s;在攻击期间,主办方多次访问网站首页,加载延迟几乎每次都超过20s。

部分CDN(例如Cloudflare 和CloudFront)声称它们对DDoS攻击具有检测能力和防御能力。但是,在所有CDN的默认配置和潜在DDoS防御机制下,本文的实验测量和攻击演示过程没有触发任何安全告警。

3. 攻击评估

  • 现有DDoS防御机制基本失效。第一,传统DDoS攻击技术在CDN环境中不再那么有效;而RangeAmp攻击利用CDN的安全缺陷来对受害者服务器发起攻击,攻击请求均由CDN节点产生,这可能会误导CDN将攻击请求判定为正常请求。第二,传统DDoS攻击技术主要针对受害者服务器的入口带宽,而RangeAmp攻击主要消耗受害者服务器的出口带宽,现有检测机制不一定能够识别此类攻击。第三,CDN平台往往建议源站服务器设置防火墙白名单,只允许CDN节点访问源站服务器,这样源站服务器可以完全委托CDN进行DDoS防御;而RangeAmp攻击使得CDN提供的DDoS保护功能不再可信,一旦CDN节点被源站服务器列入白名单,源站服务器的DDoS防御机制将形同虚设。
  • 攻击影响范围非常广泛。第一,被测试的所有13个主流CDN都存在潜在的RangeAmp攻击,这些CDN在世界范围内都很受欢迎,市场份额排名较高,许多主流网站都托管在这些CDN上,这使得大量网站和CDN节点都暴露于该类攻击中。第二,大多数CDN都不验证源站服务器的所有权,因此恶意客户可以将CDN的源站服务器配置为任意目标网站。这意味着,受害者服务器不仅可以是已经托管在CDN上的网站,还可以是未被托管在CDN上的网站。第三,不同CDN的架构和功能大同小异,其他未被测试的CDN存在潜在的RangeAmp攻击的可能性非常高。
  • 攻击成本低但破坏严重。一方面,同其他需要控制大量僵尸网络的传统DDoS攻击不同,CDN的入口节点广泛地分散在世界各地,形成自然分布的“僵尸网络”,因此攻击者只需要一台普通笔记本电脑就可以发起RangeAmp攻击。另一方面,根据实验测量结果,RangeAmp攻击的流量放大倍数远远高于大多数已知攻击方法,在某些场景中,SBR攻击的流量放大倍数高达43330,OBR攻击的流量放大倍数高达7471。这意味着,攻击者消耗的资源非常少,而受害者消耗的资源非常多,攻击者可以轻松地耗尽受害者服务器的带宽资源,导致受害者服务器完全拒绝服务。
  • 给受害者造成巨大的金钱损失。大多数CDN厂商根据流量消耗向其客户收取费用,包括Akamai、Alibaba Cloud、Azure、CDN77、CDNsun、CloudFront、Fastly、Huawei Cloud、KeyCDN 和 Tencent Cloud。当网站被托管在这些CDN 上时,其商业对手可以滥用相应的CDN对源站服务器发起RangeAmp攻击,使得源站服务器和CDN节点之间持续传输巨大的流量,从而导致高昂的CDN服务费。

解决方案

我们向所有相关CDN厂商负责任地披露了相关漏洞,并为他们提供了缓解措施和解决方案,积极帮助他们修复问题。

对象建议
CDN厂商1. 采用更安全的Expansion策略来转发范围请求,不对Range头部中的字节范围进行太多的扩展;2. 遵守RFC7233的建议,拒绝、合并或忽视某些多范围请求,例如存在重叠字节范围或存在许多小范围;3. 完善DDoS保护机制,增加对RangeAmp攻击的检测和防御。
网站管理员1. 如果网站已被托管在CDN上,建议检查该CDN是否存在RangeAmp漏洞;2. 如果网站未被托管在CDN上,建议阻塞来自CDN的网络流量。
HTTP协议规范1. 增加对RangeAmp攻击的安全考虑。2. 考虑在复杂网络环境中对范围请求机制进行更明确的限制,例如代理环境和CDN环境。

总结

在这项研究中,我们提出了由CDN环境中HTTP范围请求机制实现不当所引起的新型RangeAmp攻击,并提出了两种具体的攻击方法。攻击者可以滥用易受攻击的CDN来攻击大多数网站和CDN服务。RangeAmp攻击的攻击成本非常低,影响范围非常广,流量放大倍数非常高。这类攻击将严重威胁网站和CDN服务的可用性,我们的研究提前暴露了这类攻击,能够帮助潜在受害者充分理解攻击原理和危害。

致谢

1.感谢 GeekPwn主办方,为我们提供了攻击演示的环境和平台。

2.感谢RFC7233的作者Roy T. Fielding,他支持将RangeAmp攻击作为安全考虑,并建议我们在HTTP协议工作组的邮件列表中讨论该问题。

3.感谢所有相关CDN厂商,他们快速地确认了漏洞的存在,并积极和我们讨论缓解措施和解决方案。尤其感谢给予我们奖励的CDN厂商,包括Cloudflare、Fastly、华为云、阿里云和腾讯云。这些CDN厂商的积极反馈不仅是对本项研究工作的高度认可,同时对改善工作具有重要借鉴意义。

4.感谢DSN会议的论文指导者Marc Dacier以及所有审稿人,他们针对我们的研究工作提出了许多宝贵的建议。

Bookmark the permalink.

Comments are closed.