CVE-2026-49975:HTTP/2 炸弹——一字节打崩 32G 内存服务器
(这篇博客可能有点晚了,希望理解下QAQ)
TL;DR:攻击者只需一台家用电脑、一条 100Mbps 宽带,借助 1 字节的精心构造数据包,即可在约 20 秒内耗尽目标服务器全部 32GB 内存,使其彻底宕机。Apache、Nginx、IIS、Envoy、Cloudflare Pingora 均受影响。全球超 88 万台服务器正面临威胁,PoC 已公开。
简单弄了一个表格
| 属性 | 详情 |
|---|---|
| CVE 编号 | CVE-2026-49975 |
| 别名 | HTTP/2 Bomb |
| 披露日期 | 2026 年 6 月 2–3 日 |
| 发现者 | Quang Luong(Calif.IO),借助 OpenAI Codex |
| 影响软件 | Apache httpd、Nginx、Microsoft IIS、Envoy、Cloudflare Pingora |
| 攻击方式 | 无需认证,单连接远程 DoS |
| 放大倍率 | Nginx ~70:1 / Apache ~4,000:1 / Envoy ~5,700:1 |
| PoC 状态 | 已公开 |
背景
这个漏洞的作者在披露文章里写了一句话:
“14 年前,我帮助破解了 HTTP 头部压缩方案,然后被邀请审阅修复方案——那个修复后来成为了 HTTP/2 的一部分。如今,我们正在发布一个我当初遗漏的攻击。”
HTTP/2 的 HPACK 压缩(RFC 7541)和流量控制(RFC 9113)是两个彼此独立的老特性,各自的滥用方式早在 2016 年就已有人记录(CVE-2016-6581、CVE-2016-8740)。然而十年间,没有人把它们组合在一起。
这一次,是 AI 做到了。Codex 在分析代码时,自主将两种已知技术链接成了全新的攻击链,并在主流 Web 服务器上实现了前所未有的放大效果。
技术原理 两枚炸弹拼成一个核弹
HPACK 索引引用炸弹
HPACK 是一种有状态压缩协议。通信双方各自维护一张”动态表”,存放最近见过的请求头。发送方可以把一个头部插入表中,之后每次只用发送 1 字节的索引,接收方(服务器)就会自行在表里找到对应的条目,并为当前请求分配一份完整的内存副本。
攻击者的操作:
- 往动态表里植入一条”几乎为空”的头部(成本极低)
- 在后续请求中,发送数千个”1 字节索引引用”,每个引用指向同一条目
- 服务器每收到一个引用,就要分配一份独立的内存 bookkeeping 结构
关键点:放大倍率来自服务器为每条索引引用分配的元数据开销,而非头部值本身的大小。这意味着:传统防御中基于”解码后头部总大小”的限制完全失效,因为”几乎没什么可解码的”。
各服务器实测放大比(每 1 字节输入 → 服务器内存分配):
Envoy ≈ 5,700:1 Apache httpd ≈ 4,000:1 nginx ≈ 70:1 Microsoft IIS ≈ 68:1
HTTP/2 流量窗口卡死(Slowloris 变体)
在 HTTP/2 中,客户端可以通过发送”零字节流量控制窗口”,阻止服务器完成响应发送。攻击者做到:
- 宣告 window = 0(服务器被卡住,无法发出响应)
- 每隔一段时间,发送 1 字节的 WINDOW_UPDATE 帧,重置发送超时
- 服务器的所有内存分配被无限期”钉在”内存中,永远不释放
两步组合的效果:写入快、永不释放。
针对有头部数量限制服务器的绕过
Apache 和 Envoy 设有每请求头部字段数量的上限,本可挡住朴素的 HPACK 炸弹。攻击者利用了 RFC 9113 §8.2.3 中一条合法规定:
Cookie 头部允许被拆分为”每个 crumb 一个字段”发送。
Apache 和 Envoy 在统计头部字段数时没有把 Cookie crumbs 计入上限——这个细节成了整个防御体系最致命的漏洞。
破坏力
研究人员的演示数据:
攻击场景:单台家用电脑 + 100Mbps 宽带连接 目标:默认 HTTP/2 配置的各主流服务器
Envoy 1.37.2 → 10 秒内耗尽 32GB 内存 Apache httpd 2.4.67 → 18 秒内耗尽 32GB 内存 nginx 1.29.7 → 45 秒内耗尽 32GB 内存 Microsoft IIS → 45 秒内耗尽 64GB 内存
吓哭了…
研究者还说,真实攻击场景中更”优雅”的玩法不是直接 OOM 打崩进程(因为进程崩溃后会自动重启),而是把服务器内存压力维持在略低于 OOM 阈值的位置,迫使系统大量使用 swap,让每一个正常请求都变得极其缓慢——这种慢性折磨往往比直接崩溃更难发现、更难恢复
影响范围:全球 88 万台,国内高校重灾区
Shodan 扫描显示,全球超过 880,000 台公网暴露的服务器同时满足以下条件:
- 开启了 HTTP/2(
ssl.alpn: "h2") - 运行受影响的软件(nginx / Apache / IIS / Envoy / Pingora)
- 使用默认配置
受影响的行业分布极广——正是因为 Apache 和 Nginx 本身就是通用基础设施,而非某个垂直领域的专用软件。国内大量高校官网、政府服务网站、中小企业主机使用旧版 Apache/Nginx 且长期不更新,是此次漏洞的高危群体。
值得注意的是,Cloudflare Pingora 也在受影响列表中。Pingora 是 Cloudflare 自研的 HTTP 代理引擎,用于为其他网站提供 DDoS 防护——代理层本身的漏洞,意味着防护盾也可能成为攻击面。
AI发力了 Codex 发现漏洞 也能生成 Exploit
有两个细节:
漏洞是AI发现的。Codex 通过分析代码,自主将两种已知技术串联成新的攻击链——这是 AI 辅助安全研究的一个里程碑式案例。
补丁本身是Exploit说明书。研究团队在报告中写:
“上述修复 commit 是公开的,且直接披露了攻击向量;任何有能力的 AI 模型都可以把这些代码差异(diff)转化为一个可用的漏洞利用脚本——事实上,这正是我们发现 IIS、Envoy 和 Pingora 也存在漏洞的方式。”
就是说公开的补丁 + AI 代码分析 = 自动生成新目标的 PoC。这条”commit-to-exploit”的路径极短,研究团队正是因此决定立即全量披露,而非等待所有厂商完成修复。
历史上的 HPACK 炸弹
这并非第一次 HTTP/2 头部压缩被滥用:
- CVE-2016-6581(2016):Cory Benfield 提出原始 HPACK Bomb 概念
- CVE-2016-8740(2016):Apache 无限 CONTINUATION 帧耗尽内存
- CVE-2016-1546(2016):Apache worker 线程饥饿
- CVE-2025-53020(2025):Gal Bar Nahum 对 Apache httpd 实现 ~4,000:1 放大
新漏洞的创新是:放大来源从”大头部值”转移到了”元数据 bookkeeping”,从而绕过了过去十年基于解码大小的防御。
怎么办呢
Nginx
推荐:升级到 1.29.8+
该版本新增了 max_headers 指令(默认上限 1000),从 freenginx 引入。
http { # 显式设置更严格的限制(可选) # 默认 1000 已足够防御此攻击}如无法升级,临时禁用 HTTP/2:
server { listen 443 ssl; # 移除 http2 参数,即可禁用 HTTP/2 # listen 443 ssl http2; ← 改为下面这行 listen 443 ssl;}Apache httpd
推荐:升级 mod_http2 到 v2.0.41+
独立发布版本可从 GitHub icing/mod_h2 获取;Apache HTTP Server 2.4.68 已包含此修复。
修复内容:Cookie 头部 crumbs 现在会被计入 LimitRequestFields 上限。
# httpd.conf - 可额外收紧请求头限制LimitRequestFields 100如无法升级,临时禁用 HTTP/2:
# httpd.conf 或对应 VirtualHostProtocols http/1.1Microsoft IIS / Envoy / Cloudflare Pingora
截至披露时,Envoy 已发布补丁。IIS 和 Pingora 暂无官方修复,建议:
- 在前置代理/防火墙层强制限制每请求头部字段数量
- 在不影响业务的前提下关闭 HTTP/2
- 通过 cgroups 或容器内存限制约束单个 worker 进程的内存上限(OOM-killed 后自动重启 >> 整机打进 swap)
建议
# 通过 cgroups v2 限制 Nginx worker 内存(示例)# 避免单 worker 内存泄漏拖垮整台机器[Service]MemoryMax=4GWAF 层面,FortiWeb、Imperva Cloud WAF 等主流产品已针对此漏洞更新了检测规则,具备 HTTP/2 头部约束能力的 WAF 均可作为缓解手段部署在后端服务前方。
检测
# 检查 nginx 版本nginx -v# 需要 >= 1.29.8
# 检查 Apache mod_http2 版本apache2ctl -M | grep http2# 对应 mod_http2 需 >= 2.0.41
# 检查服务器是否对外暴露 HTTP/2curl -sI --http2 https://your-domain.com | grep -i "HTTP/"
# Shodan 查询语法(确认自己是否在暴露列表中)# ssl.alpn:"h2" hostname:your-domain.com- 把十年老技术和 AI 捆在一起,真的就是新的武器。AI 让安全领域里那种“组合爆炸”的风险变得更可怕,几乎一下子放大了
- 默认配置其实就很危险了。管理员啥都不用手动开,HTTP/2 在现代服务器上压根就是默认启用,只要服务器补丁没跟上,随时落在攻击者瞄准里
- PoC 已经放出来了,窗口期短得让人慌。从补丁提交到 exploit 能用,AI 已经可以自动搞定整个流程。说实话,之前那个“等等稳定版本再升级”的套路,这种漏洞面前根本没用了
锐评:

参考资料:Calif.IO 原始披露博客 / oss-sec 邮件列表 / BleepingComputer / SecurityWeek / HAProxy 官方博客
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时










