CVE-2026-49975 - HTTP/2 Bomb 拒绝服务攻击
CVE-2026-49975 HTTP/2 Bomb 漏洞分析
前言
2026年,AI披露了一个严重的安全漏洞 CVE-2026-49975,被称为 “HTTP/2 Bomb”。该漏洞利用 HTTP/2 协议的两个已知特性——HPACK 压缩放大请求头以及HTTP/2 流控停滞保留服务器资源——实现了一种极其高效的拒绝服务(DoS)攻击。
更令人担忧的是,这个漏洞影响范围极广,几乎涵盖了所有主流 Web 中间件。
影响范围
该漏洞影响以下主流 Web 中间件:
| 中间件 | 受影响版本 | 状态 |
|---|---|---|
| Nginx | 所有支持 HTTP/2 的版本 | 已修复 |
| Apache HTTP Server | 所有支持 HTTP/2 的版本 | 已修复 |
| IIS (Windows Server) | 所有版本 | 暂无补丁 |
| Envoy | ~1.37.2 | 暂无补丁 |
| CloudFlare Pingora | 所有版本 | 暂无补丁 |
| 其他 HTTP/2 实现 | 视具体情况 | 待确认 |
攻击原理
1. HPACK 压缩放大
HTTP/2 为了减少带宽消耗,采用了 HPACK 压缩算法来压缩请求头。这个算法有一个关键特性:它允许客户端通过引用之前已经发送过的头部字段来减少重复传输。
攻击者利用这一特性:
- 发送一个带有巨大请求头的请求(比如 1MB),服务器会存储并索引这些头
- 后续请求只需发送很短的引用,就可以让服务器”解压”出巨大的头
- 攻击者可以发送数百个这样的引用请求
理论上,这种放大比例可以达到 1:100 甚至更高。
2. HTTP/2 流控停滞
HTTP/2 的流控机制允许客户端告诉服务器”我要发送多少数据”,但如果客户端只发送请求头而不发送请求体,就会导致:
- 服务器分配了内存来缓存这个”未完成”的请求
- 这个内存不会立即释放,会一直保留直到超时
- 攻击者可以快速发送大量这样的请求,耗尽服务器内存
3. 攻击效果
结合以上两个特性,攻击者只需要:
- 100Mbps 的带宽
- 单台普通电脑
- 约 10-18 秒
就可以让目标服务器分配数十 GB 的 RAM 资源,并阻止内存释放,导致服务彻底瘫痪。
实测数据
安全研究人员在受控环境中进行了测试:
| 中间件 | 版本 | 耗尽 32GB 内存所需时间 |
|---|---|---|
| Envoy | 1.37.2 | ~10 秒 |
| Apache httpd | 2.4.67 | ~18 秒 |
这意味着,即使是个人攻击者,也能够轻松地对大型服务器发动有效的 DoS 攻击。
缓解措施
1. 关闭 HTTP/2(临时方案)
如果暂时无法更新到修复版本,可以考虑临时关闭 HTTP/2:
Nginx:
http2 off; Apache:
Protocols h2c http/1.1 ⚠️ 注意:关闭 HTTP/2 会降低网站性能,建议尽快升级到修复版本。
2. 配置请求头限制
Nginx:
server {
# 限制请求头大小
client_header_buffer_size 4k;
large_client_header_buffers 4 8k;
# 限制请求头数量
http2_max_fields 256;
http2_max_field_size 8k;
} Apache:
<IfModule mod_http2.c>
H2MaxSession 1000
H2MaxStream 100
</IfModule> 3. 限制单个连接的请求数
限制一个连接可以发送的请求数量,防止单个连接耗尽资源。
4. 启用连接超时
设置合理的超时时间,及时释放未完成的请求占用的资源。
各大厂商响应
已修复
- Nginx:已发布安全更新,建议用户升级到最新版本
- Apache HTTP Server:已发布安全更新,建议用户升级到最新版本
待修复
- IIS:微软尚未发布官方补丁,建议先使用临时缓解措施
- Envoy:暂无补丁,建议关注官方安全公告
- CloudFlare Pingora:暂无补丁,CloudFlare 正在紧急处理中
建议
- 立即检查:确认你正在使用的 Web 中间件版本和配置
- 升级补丁:如果厂商已发布修复版本,立即升级
- 临时缓解:如果暂时无法升级,务必启用请求头限制等临时缓解措施
- 持续关注:关注各厂商的官方安全公告,及时获取最新信息
- 监控告警:部署内存使用监控,设置告警阈值,及时发现异常
参考链接
本篇文章将持续更新,欢迎关注后续报道。
评论功能需要启用功能性 Cookie
请在 Cookie 设置 中启用