
# 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协议拒绝服务漏洞](https://nvd.nist.gov/vuln/detail/CVE-2023-44487)
#### 附：为何影响？
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 攻击。
![](https://support.huaweicloud.com/bulletin-ucs/public_sys-resources/note_3.0-zh-cn.png)
- 最大并发流数目：HTTP/2 协议支持设置一个 TCP 连接上的最大并发流数目，从而限制其请求数目。
- DDOS攻击：分布式拒绝服务攻击，在多台机器一起攻击一个目标，通过大量互联网流量淹没目标或其周围基础设施，从而破坏目标服务器、服务或网络的正常流量时发生。
 
