文档首页/ 华为云UCS/ 服务公告/ 漏洞公告/ HTTP/2协议拒绝服务漏洞公告(CVE-2023-4487)
更新时间:2024-03-07 GMT+08:00

HTTP/2协议拒绝服务漏洞公告(CVE-2023-4487)

漏洞详情

此漏洞允许恶意攻击者发起针对HTTP/2 服务器的DDoS攻击,使用 HEADERS 和 RST_STREAM发送一组HTTP请求,并重复此模式以在目标 HTTP/2 服务器上生成大量流量。通过在单个连接中打包多个HEADERS和RST_STREAM帧,显著提升每秒请求量,提升服务器上的CPU利用率,从而导致由于资源消耗造成的服务器拒绝服务。

表1 漏洞信息

漏洞名称

CVE-ID

漏洞级别

披露/发现时间

HTTP/2 协议拒绝服务漏洞

CVE-2023-44487

2023-10-10

漏洞影响

此漏洞为拒绝服务类型漏洞,不影响数据安全,但恶意攻击者可能通过此漏洞造成服务器拒绝服务,导致服务器宕机。

漏洞修复方案

请在VPC内做好安全组加固,确保仅暴露接口给受信用户。

附:为何影响?

HTTP/2 允许在单个连接上同时发送多个请求,每个 HTTP 请求或响应使用不同的流。连接上的数据流被称为数据帧,每个数据帧都包含一个固定的头部,用来描述该数据帧的类型、所属的流 ID 等。一些比较重要的数据帧类型如表2所示。

表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攻击:分布式拒绝服务攻击,在多台机器一起攻击一个目标,通过大量互联网流量淹没目标或其周围基础设施,从而破坏目标服务器、服务或网络的正常流量时发生。