HTTP/2炸弹漏洞深度解析与防御指南
一、背景概述
2026年6月,网络安全领域披露了一种高危漏洞——HTTP/2炸弹(CVE-2026-49975)。通过串联两种已知的HTTP/2攻击技术,攻击者仅需一台普通家用电脑,就能在数十秒内彻底瘫痪主流Web服务器。
该漏洞由加州安全公司Calif的研究人员发现,他们利用OpenAI的Codex智能体分析公开代码库后,意外识别出两种旧有攻击手法(各自存续已近十年)可以被无缝串联,进而瘫痪企业级Web服务器。
HTTP/2炸弹影响采用默认HTTP/2配置的主流服务器(包括Nginx、Apache、微软IIS、Envoy和Cloudflare Pingora),全球超过88万个网站处于潜在威胁之下。更严峻的是,该漏洞利用的是完全符合协议规范的HTTP/2帧,即便服务器升级到最新补丁,若攻击面未以极限值配置,在某些实现中仍可能被绕过,PoC代码也已在公开渠道流传,企业必须立即行动。
二、技术原理详解
HTTP/2炸弹本质上是HPACK压缩放大攻击和流控停滞攻击两种手法的串联组合,攻击流程如下:
步骤一:HPACK“记账式”压缩炸弹
- HPACK压缩算法使用动态表来重复引用、复用头部字段。
- 攻击者先在动态表中插入一个几乎为空的头部条目,随后通过数千个只有1字节的索引引用反复指向它。
- 该手法与传统压缩炸弹有本质区别:传统炸弹依靠超大解码后的数据量来触发内存限制;而此变体中的每个1字节引用都强迫服务器在HPACK方案内部执行逐条目的记账和内存分配,每个字节的输入可导致数千字节的内核分配,实际内存放大比例在不同服务器上差异巨大:
| 服务器 | 内存放大比例 | 内存耗尽时间(32GB) |
|---|---|---|
| Envoy 1.37.2 | ~5,700:1 | 约10秒 |
| Apache httpd 2.4.67 | ~4,000:1 | 约18秒 |
| Nginx 1.29.7 | ~70:1 | 约45秒 |
| IIS(Win Server 2025) | ~68:1 | 约45秒耗尽64GB |
- 由于头部体积极小,服务器配置的解码总大小限制不会被触发,攻击者可以完全绕过基于头部总尺寸的传统防御。此外,Apache和Envoy在统计单个Cookie头时存在计数问题,攻击者可通过将Cookie头拆分为独立的单字段来绕过数量限制。
步骤二:流控停滞(类Slowloris)攻击
- 当服务器已因HPACK攻击大幅膨胀内存占用量之后,攻击者向服务器通告一个零字节的流控窗口。服务器无法发送响应,只能定期发送极小的WINDOW_UPDATE帧来维持连接、避免超时。
- 请求永远不会真正完成,已分配的内存被无限期占用,且不断增长。同时,攻击者可利用TCP连接的异常关闭触发竞态条件,导致垃圾回收失败,内存彻底无法释放。
HPACK规范文档着重强调了内存放大风险,但并未考虑攻击者通过HTTP/2流控无限期占住已分配内存的连锁效应——这恰恰是漏洞组合升级后的致胜关键。
攻击效果:一击致命
- 100 Mbps连接上的单个客户端(攻击者)可在10–45秒内耗尽目标32GB内存。
- 攻击无需身份验证,一台普通家用计算机即可发动,脚本简单,多客户端同时使用时破坏力倍增。
- 由于HTTP/2已被广泛部署,任何未加防护的默认配置服务器都可能成为攻击目标。Imperva研究团队已观测到大量针对可疑漏洞端点的自动化探测行为,攻击者正使用专用工具映射目标服务器的处理能力。
三、受影响的组件与版本
CVE-2026-49975(HTTP/2炸弹)
| 软件 | 受影响版本 | 修复版本 | 状态 |
|---|---|---|---|
| Nginx | < 1.29.8 | ≥ 1.29.8 | 已修复(新增max_headers指令) |
| Apache httpd(mod_http2) | < 2.0.41 | ≥ 2.0.41 | 已修复(CVE-2026-49975) |
| Microsoft IIS | Windows Server 2025等默认配置 | 暂无 | 尚无补丁 |
| Envoy | ≤ 1.37.2 | 暂无 | 尚无补丁 |
| Cloudflare Pingora | 默认HTTP/2配置 | 暂无 | 尚无补丁 |
| Protocol::HTTP2(Perl) | ≤ 1.12 | ≥ ? | 尚无补丁 |
补充说明:即便服务器已升级到最新版本,若攻击面未以极限值配置,某些实现中攻击者仍可通过将Cookie头拆分为单字段等手法绕过限制。
其他相关漏洞梳理:HTTP/2协议还面临以下类似风险:
- CVE-2025-8671(MadeYouReset) :利用服务器发送的流重置与后台实际处理的不匹配,可造成资源耗尽。
- CONTINUATION帧洪泛(含CVE-2024-27983、CVE-2024-24549、CVE-2024-30255、CVE-2024-28182、CVE-2024-3302等):通过无休止发送CONTINUATION帧,迫使服务器分配大量内存或解析路径、消耗CPU资源,且部分漏洞可利用零字节帧完全绕过现有大小限制。
- CVE-2023-44487(Rapid Reset) :由客户端发送大量RST_STREAM帧使服务器疲于处理无效请求、耗尽CPU。
四、修复方案与防御措施
方案一:立即升级官方补丁
- Nginx用户:升级至 1.29.8 或更高版本,并通过配置文件中设置新的
max_headers指令,明确限制请求头总数量。 - Apache httpd用户:升级 mod_http2模块至2.0.41版本(CVE-2026-49975已在此版本修复),同时需验证相关HTTP/2配置限制。用户可直接从Apache官方发布渠道获取更新版本。
方案二:临时缓解(无官方补丁时)
- 禁用HTTP/2:在IIS、Envoy、Pingora等尚无官方补丁的系统中,若无强烈业务需求,建议回退至HTTP/1.1,彻底避开漏洞路径。
- 部署反向代理:在易受攻击服务器前端部署HAProxy等反向代理,它们因架构上自带严格的内存约束而天然不易受此攻击影响。如HAProxy可在网络边缘直接识别并丢弃恶意客户端,从而保护后端服务器。
- 配置前端防火墙或WAF:通过Web应用防火墙强制执行请求头数量限制,拦截可疑的大规模索引引用请求。
- 手动配置服务器限制:尤其务必设置
SETTINGS_MAX_CONCURRENT_STREAMS(限制单连接并发流数量)和SETTINGS_MAX_HEADER_LIST_SIZE(限制总头列表大小),这是有效抵御各类流控及头炸弹攻击的基石。 - 验证Cookie头拆分绕过的风险:Apache、Envoy用户需特别注意Cookie头单独计数的漏洞已被公布,应利用max_headers指令严格限制单连接上的总字段数量,或采用代理层面统一的头部统计口径。
五、总结
HTTP/2炸弹漏洞(CVE-2026-49975)是近年来最危险的HTTP/2拒绝服务漏洞之一。它将两种旧有攻击手法创新组合,放大了单机破坏力,对依赖HTTP/2的Web基础设施构成了严重威胁。幸运的是,主要厂商已迅速修复,企业运维人员应立即行动,将所有受影响服务器升级到官方补丁版本或采取临时缓解措施,尤其关注各实现中可能被绕过的攻击面。
随着HTTP/2的广泛普及,此类高危组合攻击预计将不断涌现,企业应始终保持更新的防御策略、定期监测HTTP/2配置、限制请求头数量和流并发数,并部署反向代理或WAF进行深层次的防护。