HTTP/2协议拒绝服务漏洞公告(CVE-2023-4487)
漏洞详情
此漏洞允许恶意攻击者发起针对HTTP/2 服务器的DDoS攻击,使用 HEADERS 和 RST_STREAM发送一组HTTP请求,并重复此模式以在目标 HTTP/2 服务器上生成大量流量。通过在单个连接中打包多个HEADERS和RST_STREAM帧,显著提升每秒请求量,提升服务器上的CPU利用率,从而导致由于资源消耗造成的服务器拒绝服务。
漏洞名称 |
CVE-ID |
漏洞级别 |
披露/发现时间 |
---|---|---|---|
HTTP/2 协议拒绝服务漏洞 |
CVE-2023-44487 |
高 |
2023-10-10 |
漏洞影响
此漏洞为拒绝服务类型漏洞,不影响数据安全,但恶意攻击者可能通过此漏洞造成服务器拒绝服务,导致服务器宕机。
漏洞修复方案
请在VPC内做好安全组加固,确保仅暴露接口给受信用户。
参考链接
附:为何影响?
HTTP/2 允许在单个连接上同时发送多个请求,每个 HTTP 请求或响应使用不同的流。连接上的数据流被称为数据帧,每个数据帧都包含一个固定的头部,用来描述该数据帧的类型、所属的流 ID 等。一些比较重要的数据帧类型如表2所示。
名称 |
作用 |
---|---|
SETTINGS帧 |
用于传递关于HTTP2连接的配置参数。 |
HEADERS帧 |
包含 HTTP headers。 |
DATA帧 |
包含 HTTP body。 |
RST_STREAM帧 |
直接取消一个流。客户端可以通过发送RST_STREAM帧直接取消一个流,当服务端收到一个RST_STREAM帧时,会直接关闭该流,该流也不再属于活跃流。 |
假设当前 TCP 连接设置的最大并发流数目为 1,那么当客户端发送请求1后,马上发送请求2,此时Server并不会真正处理请求2,而是直接响应RST_STREAM。因此,如果客户端在发送请求后紧接着发送RST_STREAM,就可以不停地向Server发送请求且不用等待任何响应,而Server则会陷入不停地接收请求-处理请求-直接结束请求的循环中,这个过程会消耗部分系统资源。
从而,恶意攻击者就可以利用该漏洞,通过持续的HEADERS、RST_STREAM帧组合,消耗 Server 资源,进而影响 Server 对正常请求的处理,造成 DDoS 攻击。
- 最大并发流数目:HTTP/2 协议支持设置一个 TCP 连接上的最大并发流数目,从而限制其请求数目。
- DDOS攻击:分布式拒绝服务攻击,在多台机器一起攻击一个目标,通过大量互联网流量淹没目标或其周围基础设施,从而破坏目标服务器、服务或网络的正常流量时发生。