华为云UCS-HTTP/2协议拒绝服务漏洞公告(CVE-2023-4487):附:为何影响?

时间:2025-02-12 14:52:45

附:为何影响?

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