前言

2023年10月Cloudflare、Google、AWS等厂商发布了一种使用HTTP/2快速重置进行使用层DDoS进犯的0day缝隙(CVE-2023-44487)[1][2],即H2 Rapid Reset DDoS。Google宣传其监控到此种进犯峰值超越每秒3.98亿个恳求,打破互联网前史最大使用层DDoS进犯记录[3]。而本文中火山引擎网络安全团队将对H2 Rapid Reset DDoS进行深化的研讨剖析,并介绍火山引擎对这种新型进犯方法的防护作用

要害信息速读

【要害点一】 H2 Rapid Reset DDoS缝隙可绕过HTTP/2协议的并发流约束,迫使服务端处理超量恳求,但无法绕过NGINX的keepalive_requests,故进犯威力视服务端配置而定

【要害点二】 H2 Rapid Reset DDoS对服务端CPU的压力实践略小于一般的使用层DDoS,但仍具有必定威力

【要害点三】 H2 Rapid Reset DDoS可堵塞反向署理集群中TLS decryption->上层使用的通道,然后瘫痪署理对外服务才能

【要害点四】 H2 Rapid Reset DDoS通过反向署理后会转化成对源站的SYN RST的四层DDoS,在特定场景甚至可转化成TCP connection Flood

【要害点五】 H2 Rapid Reset DDoS相比一般的使用层DDoS能够节约进犯端的下行带宽,为进犯者带来”降本增效”

【要害点六】 火山引擎已上线H2 Rapid Reset DDoS的优化补丁,对这种新型进犯进犯有显著的防护作用,如需更强的防护才能,推荐接入高防产品

一、布景知识:HTTP/2与多路复用

HTTP/2是超文本传输协议的最新版本,与HTTP/1对同一个TCP衔接的每个恳求需串行处理不同,HTTP/2通过引入二进制分帧层(Binary Framing Layer)的方法完成了多个恳求和响应在同一个TCP衔接上用不同流进行并发传输,完成多路复用,大大提高互联网拜访功率。如图1所示:

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图1 HTTP/1和HTTP/2拜访流程比照

所谓的二进制分帧层即HTTP/2将HTTP协议通信分解为二进制编码帧,然后将其映射到特定的流(stream)中,详细流程见图2。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图2 HTTP/2将HTTP信息分解为二进制编码帧

在同一个TCP衔接上,不同stream的帧并交错传输,并在对端重新组合,还原完整HTTP音讯,终究完成在单个TCP衔接上的多路复用。

此外HTTP/2还支撑客户端发送RST_STREAM帧来让服务端终止处理和应对对应stream的恳求,以节约服务端资源和客户端下行带宽,类似IM软件的“音讯撤回功用” 。如图3中ID为3的流被客户端重置,服务端中止处理不作应对。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图3 HTTP/2传输进程和流重置

但正所谓”福祸相依”,HTTP/2以其强壮的功用为用户提供更高效、快速服务的同时也不可避免地增加了被黑客歹意使用,完成更高效DDoS的危险,而H2 ****Rapid Reset DDoS便是其间一个典型的比如。

二、什么是H2 Rapid ResetDDoS

H2 Rapid Reset DDoS(CVE-2023-44487)的核心原理便是:歹意使用HTTP/2的重置机制绕过服务端对单个TCP衔接的并发流数量约束(max_concurrent_streams),迫使服务端处理超量的恳求,增强进犯作用。

详细缝隙使用进程如下

(1)首要HTTP/2出于安全考虑,支撑对单个TCP衔接的并发流数量进行约束(详情见RFC9113)[4]

(2)但该约束战略只计算”OPEN”或”Half-closed”状态下的流,而”Closed”状态的流并不计入并发数[1],这也是整个缝隙的要害所在

(3)而HTTP/2 RST_STREAM帧可让对应stream快速进入”Closed”状态

(4)进犯者通过大规划发送使用层恳求并快速重置,让服务端接收到恳求后对应的stream快速进入”Closed”状态,终究并发流数量约束被绕过,服务端无法忽略超量的stream,形成资源被大量耗费。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图4 HTTP/2 Rapid Reset attack进犯进程

备注:这种快速重置的方法无法绕过NGINX对单TCP衔接上的HTTP/2恳求总数约束战略,故开启了此项功用的NGINX服务端对此类方法有一点抵挡才能

由此可见整个缝隙使用的进程本身并不复杂,并且给人一种似曾相识的感觉…

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

可是,大家可能会不禁疑惑:

(1)这种进犯方法有DDoS作用吗?

(2)跟一般的H2的使用层DDoS有什么差别?

(3)进犯进程中会有哪些异常痕迹?

为此,火山引擎Anit-DDoS团队进行了HTTP/2快速重置进犯进行了深化的研讨和测验。

三、H2 Rapid Reset DDoS威力如何

为了全面、客观、量化地剖析H2 Rapid Reset DDoS的实践作用,火山引擎Anit-DDoS团队基于NGINX搭建了HTTP/2 Server和HTTP2 Proxy(反向署理)两种常见的事务场景进行测验(见图5)。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图5 H2 Server和H2 Proxy事务场景

3.1 CPU使用率方针剖析

使用层DDoS进犯的作用首要依赖耗尽服务端CPU资源,故在同等量级恳求速率的前提下,对服务端的CPU耗费量是量化进犯威力的重要方针。火山引擎网络安全团队通过控制变量法测验了各种场景:

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图6 各类被进犯场景下的NGINX的CPU使用率

由测验成果可见:

(1)H2 Rapid Reset DDoS不管在H2 Server仍是H2 Proxy场景下威力均略弱于一般的H2使用层DDoS,这是因为快速Reset后NGINX立刻终止了对进犯恳求的处理,”节约”了服务端资源;

(2)H2 Proxy对一般的H2使用层DDoS的抗压才能最差,这是因为H2 Proxy既要处理客户端恳求,又要处理源站应对。而H2 Rapid Reset DDoS的快速”撤回”恳求,无需Proxy过多处理,反而降低了H2 Rapid Reset DDoS对H2 Proxy的压力;

(3)H2 Proxy的回源协议版本对使用层进犯的抗压才能影响不大。

综上所述:H2 Rapid Reset DDoS尽管能绕过服务端的并发流约束,但对在等量的恳求频率下对服务端压力弱于一般的H2使用层DDoS,特别是在H2 Proxy场景下,反而为Proxy”减负”。并且H2 Rapid Reset DDoS无法绕过绕过NGINX对单TCP衔接上的HTTP/2恳求总数约束[5],所以其进犯作用的”增益”并没有想象中大.

3.2 对反向署理架构的压力剖析

前面只是在协议层面的剖析,而实践现网的进犯作用中还需结合事务架构归纳评价。当前业界常见的HTTP服务架构通常是在Web服务段前布置HTTP/2反向署理集群,且为了完成高功能、高牢靠,署理集群会对恳求作异步处理:例如处理HTTPS流量时,要先通过TLS解密模块进行解密,再将解密后的明文数据上报至上层服务,这使得H2 Rapid Reset DDoS有更大发挥空间:(如图7)

(1)进犯者对方针域名主张H2 Rapid Reset DDoS;

(2)TLS解密模块至上层服务间的通道被大规划进犯数据堵塞;

(3)正常用户拜访因为堵塞问题,Proxy回来”502 Bad Gateway”,正常事务受损。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图7 H2 Rapid ResetDDoS对HTTP服务架构的要挟

当然现实上一切通过TLS加密的使用层DDoS都有此类危险,而并非H2 Rapid Reset DDoS所独有的特性。

3.3 H2 Proxy场景下源站功能剖析

H2 Proxy场景中除了要评价反向署理本身的压力以外,还需考虑源站的受影响状况。在一般的H2使用层DDoS中,假如反向署理上层的安全战略被绕过,那么进犯恳求将抵达源站,也便是源站本身也遭受使用层DDoS进犯。而H2 Rapid Reset DDoS因为会在发送恳求后会立刻重置,所以使用层进犯恳求并不会透传到源站,那是否意味着在Rapid Reset DDoS源站完全无压力?–现实并非如此。

火山引擎网络安全团队测验承认:当H2 Proxy遭受H2 Rapid Reset DDoS时,进犯恳求的QPS会被转化针对源站的SYN Flood RST Flood,详细进程:

(1)H2 Proxy收到使用层恳求后立刻给源站发syn报文,准备回源;

(2)然后H2 Proxy收到对应流的”RST_STREAM”帧,H2 Proxy中止后续处理并清空对应回源的SYN_SENT节点;

(3)此刻源站收到syn后应对synack,但因为H2 Proxy的SYN_SENT节点被收回,直接回来rst;

(4)终究大量的Rapid Reset通过H2 Proxy后被转化成对源站的大规划SYN RST的四层DDoS(当然实践现网回源会有复用已有衔接的状况,故这个转化率不必定能达到1:1)

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图8 H2 Proxy场景下H2 Rapid ResetDDoS会转化成对源站的四层DDoS

当然从源站来说,处理SYN Flood RST Flood的功能耗费比等量的使用层DDoS要小,故也从侧面阐明H2 Rapid Reset DDoS相比一般的H2使用层DDoS对源站的威力更小

值得注意的是,火山网络安全团队测验中发现当H2 Rapid Reset DDoS进犯满意必定条件时,能够转化成对源站的TCP connection Flood(即完成TCP握手后,立刻fin断连),这种状况下会耗尽源站的衔接池,耗费更多的CPU资源/内存,对源站压力更大。

综上所述:在H2 Proxy场景中Rapid Reset DDoS会转化成对源站的四层DDoS进犯,对源站也有压力和要挟。

3.3 流量方针剖析

尽管使用层DDoS进犯重点在于使用层恳求的QPS,但实践四层的流量巨细也会影响服务端的带宽成本、肉鸡本身的带宽瓶颈,故也具有必定的剖析和评价意义。

通过比照测验,在主张相同QPS的状况下:

(1)H2 Rapid Reset DDoS和General H2 DDoS在上行带宽维度(客户端->服务端)差别不大;

(2)但下行带宽维度(客户端->服务端)差别很大:H2 Rapid Reset DDoS的下行带宽远小于General H2 DDoS(见图9)。这其实也很好理解,究竟快速重置后,服务端不会进行使用层应对。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图9 进犯带宽比照

这就意味着H2 Rapid Reset DDoS可为肉鸡节约大量的下行带宽成本,为进犯者”降本增效”。当然也有些进犯场景专门恳求服务端大文件,通过大规划下行流量来堵塞服务端带宽资源,所以H2 Rapid Reset DDoS这个特性并非在一切场合下都能称为优点。

最后需要补充阐明的是:上述剖析数据是在实验环境控制变量下的测验成果,以客观、准确地量化进犯威力,而实践现网的攻防状况由事务架构、防护战略、肉鸡规划等多种因素一起决议,故实践攻防成果需详细状况详细剖析。

四、火山的应对和防护作用

面临H2 Rapid Reset DDoS的要挟,火山网络安全团队联WAF、LB、CDN等相关团队进行了紧迫剖析和评价,并在火山相关产品(包含但不限于高防IP、高防WAF、CDN、LB等)上线了优化补丁,通过测验承认:火山引擎可在不影响正常事务的基础上对Rapid Reset DDoS进犯的辨认和阻拦,如图10所示

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图10 火山引擎优化补丁对H2 Rapid ResetDDoS的防护作用

然而所谓”大力出奇观”,假设进犯者主张的进犯量足够大,仍是有可能耗尽HTTP/2反向署理集群的资源,终究影响事务全体稳定性。为此关于有严重DDoS要挟的事务,主张接入火山DDoS高防产品(DDoS高防IP/高防WAF)进行应对。

火山引擎高防在准确辨认各类使用层DDoS的同时,还基于四七层防御体系联动,对超大规划使用层DDoS进犯分层治之,为客户提供专业、牢靠的防护服务。

史上最大使用层DDoS进犯: H2 Rapid Reset进犯研讨

图11 火山引擎高防四七层联动防御

五、关于团队

火山引擎网络安全团队由业界资深安全专家组成,专注DDoS/CC防护、侵略检测与防护、边界安全、拜访控制等范畴,具有多年超大规划事务如今日头条、抖音、西瓜等的防护经历,并为企业客户客户提供专业的DDoS、CC、侵略检测与防护等网络安全服务。

DDoS 高防: www.volcengine.com/product/Ant…

Web使用防火墙: www.volcengine.com/product/waf

高级网络要挟检测体系: www.volcengine.com/product/nta

云防火墙: www.volcengine.com/product/clo…

参考文献

[1]blog.cloudflare.com/technical-b…

[2] aws.amazon.com/cn/blogs/se…

[3]cloud.google.com/blog/produc…

[4]www.rfc-editor.org/rfc/rfc9113…

[5] nginx.org/en/docs/htt…