HTTP/2,一个十年协议的致命缺陷
2023年10月,Google、Cloudflare和Apple联合披露了HTTP/2协议中的一个严重漏洞——CVE-2023-44487,被称为"HTTP/2 Rapid Reset"(快速重置)。
这个漏洞的本质并不复杂,但影响极其深远:它允许攻击者以极高的速率创建和取消HTTP/2流(stream),绕过了HTTP/2协议设计中的并发流数量限制,从而以极低的攻击成本发起超大规模的DDoS攻击。
攻击原理:不断开门又关门
HTTP/2协议允许在单个TCP连接上同时运行多个"流"(stream),每个流对应一个HTTP请求-响应对。协议规范通过SETTINGS帧中的MAX_CONCURRENT_STREAMS参数来限制单个连接上的并发流数量,防止服务器资源被耗尽。
Rapid Reset攻击利用了HTTP/2的RST_STREAM(流重置)机制。攻击者的操作模式是:
- 快速发送大量HEADERS帧(开启新的流)
- 紧接着发送RST_STREAM帧(取消刚才的流)
- 重复上述过程
从服务器视角看,每个HEADERS帧都触发了一次完整的请求处理流程——包括TLS解密、HTTP解析、路由查找、后端调用等。但由于RST_STREAM帧紧跟其后,这些请求在处理过程中被取消,服务器资源被白白消耗。
关键在于:RST_STREAM取消了流,但不取消服务器已经开始的处理工作。而MAX_CONCURRENT_STREAMS限制的是同时活跃的流数量,被RST_STREAM取消的流不再计入并发数——这意味着攻击者可以在单个连接上以近乎无限的速率发送请求。
创纪录的攻击规模
Cloudflare披露的数据令人震撼:
- 第三季度HTTP DDoS攻击流量环比增长65%
- 89次攻击的峰值超过每秒1亿次请求(100M RPS)
- 最大单次攻击峰值超过4.3亿RPS
- 受影响的服务商包括AWS、Cloudflare、Google Cloud等全球主要云和CDN提供商
这不仅仅是"更大"的DDoS——这是数量级的跃升。在此之前,业界观测到的最大HTTP DDoS攻击约为数千万RPS。Rapid Reset漏洞将攻击能力提升了一个数量级。
为什么HTTP/2成了放大器?
HTTP/2的流复用机制本意是提升效率——减少TCP连接数、降低延迟、提高吞吐量。但正是这种高效性,在Rapid Reset攻击中变成了攻击放大器的核心。
传统HTTP/1.1的攻击受限于TCP连接建立成本和每个连接的串行请求能力。HTTP/2理论上允许在单个连接上并行运行数百个流,这相当于给了攻击者一个"多管火箭炮"——一个TCP连接就能发射数百倍于HTTP/1.1的请求量。
加上RST_STREAM机制允许攻击者"打了就跑",不受并发限制约束,攻击的性价比达到了前所未有的高度。
行业协调响应
值得肯定的是,此次漏洞的披露和响应体现了互联网行业协调安全机制的成熟:
- Google威胁分析小组(TAG)首先发现并分析了该攻击模式
- Google、Cloudflare和Apple进行了协调披露
- 各大CDN和云服务商在披露前已完成缓解措施的部署
- IETF发布了相关安全建议
Cloudflare的缓解方案包括:在检测到Rapid Reset模式时,限制单个连接的流创建速率,并在超过阈值时主动关闭连接。
对DDoS防护的启示
Rapid Reset攻击暴露了协议层面的DDoS防护盲区:
第一,应用层DDoS攻击的成本正在持续降低。与网络层DDoS需要大量僵尸网络带宽不同,HTTP/2 Rapid Reset可以用相对较少的攻击源产生巨大的请求量。
第二,协议优化的双刃剑效应。HTTP/2的多路复用提升了性能,但也放大了攻击面。未来的协议设计需要在效率和安全之间找到更好的平衡。
第三,全球互联网基础设施的相互关联性。一个协议层面的漏洞,可以在一夜之间影响全球最大的云服务商。协调披露和集体响应不是可选项,而是必需。
参考来源:Cloudflare博客、安全内参·十月攻击回顾