返回
快讯

HTTP/2 Bomb致NGINX等远程DoS

研究人员发现一种名为 HTTP/2 Bomb 的远程拒绝服务漏洞,影响 NGINX、Apache HTTPD、Microsoft IIS、Envoy 和 Cloudflare Pingora。攻击利用 HTTP/2 默认配置中的压缩与连接保持机制,可能快速耗尽内存并使服务不可用。建议尽快升级或按原文提供的方式禁用 HTTP/2。

CVE-2016-6581CVE-2025-53020CVE-2016-8740CVE-2016-1546CVE-2026-47774CVE-2026-49160

网络安全研究人员发现一种远程拒绝服务(denial-of-service, DoS)利用,影响多款主要 Web 服务器,包括 NGINX、Apache HTTPD、Microsoft IIS、Envoy 和 Cloudflare Pingora。

该漏洞被 Calif 代号命名为 HTTP/2 Bomb。

“这种易受攻击的行为存在于每个服务器的默认 HTTP/2 配置中,”该公司表示,并补充称,这是由 OpenAI Codex 通过串联两种已知技术发现的:compression bomb 和 Slowloris-style hold。

“这个 bomb 针对 HPACK,也就是 HTTP/2 的 header compression scheme:在网络上一个字节,会在服务器上变成一个完整的 header allocation,并在每个请求中重复数千次,”Calif 补充说。“这个 hold 则是一个 zero-byte flow-control window,它让服务器永远无法释放其中任何部分。”

HPACK 是 HTTP/2 专用的 header compression algorithm,用于通过 Huffman encoding 压缩请求和响应元数据,平均可将 header size 减少 30%。它还旨在抵御类似 CRIME(“Compression Ratio Info-leak Made Easy”的缩写)这样的攻击,这类攻击可能从压缩后的 headers 中泄露 authentication cookies。

另一方面,Slowloris 是一种拒绝服务(DoS)攻击类型,允许 threat actor 通过在攻击者与目标之间打开并维持大量同时存在的 HTTP connections 来压垮目标服务器。这是一种 application-layer attack。

HTTP/2 Bomb 的灵感来自多种已知方法,例如 HPACK Bomb(又名 CVE-2016-6581),该问题最早在 2016 年披露;还包括 CVE-2025-53020,这是 Apache httpd 的 HTTP/2 implementation 中一个 memory exhaustion 漏洞,以及 Apache HTTP Server 中两个通过 crafted CONTINUATION frames 触发的 DoS flaw(CVE-2016-8740)和在 HTTP/2 connection 中通过 worker-thread starvation 触发的 DoS flaw(CVE-2016-1546)。

“这里的新意在于放大来自哪里,”Calif 说。“经典 bomb 是把一个大值塞进 table 里并反复引用它,因此服务器学会了限制 decoded header size 的总量。我们的变体则反其道而行之:header 几乎是空的,放大来自服务器围绕它分配的 per-entry bookkeeping。decoded-size limit 不会触发,因为几乎没有东西可解码。”

在一个假设的攻击场景中,一台使用 100Mbps 连接的家用电脑,有可能在几秒内让易受攻击的服务器无法访问。更重要的是,单个客户端大约在 20 秒内就能在 Apache HTTPD 和 Envoy 上消耗并占用 32GB 的服务器内存。

为应对该漏洞,建议采用以下缓解措施:

NGINX - 升级到 1.29.8+,该版本新增了 max_headers 指令,默认值为 1000。如果无法升级,建议使用 http2 off; 禁用 HTTP/2。

Apache HTTPD - 已在 mod_http2 v2.0.41 中修复。如果无法升级,建议设置 Protocols http/1.1 以禁用 HTTP/2。

Cloudflare Pingora - 无需采取行动。

Microsoft IIS 和 Envoy - 截至发稿时尚无补丁。

Cloudflare 发言人在与 The Hacker News 分享的声明中表示,该公司的现有架构和 DDoS 缓解措施会自动检测并防护此攻击,使客户能够抵御这一漏洞。

“更深层的问题在于,规范把内存风险仅仅表述为一个 amplification ratio,而 ratio 只是方程的一半,”Calif 说。“70:1 的放大如果在请求完成时内存被释放,那就无害。但在 HTTP/2 允许客户端几乎零成本保持连接打开时,它就会变成一次攻击,从而把每个已分配字节都按攻击者想要的时间钉住。”

更新

在一则更新中,Calif 表示 Envoy 已发布“看起来可缓解此次攻击”的补丁。该漏洞被追踪为 CVE-2026-47774,CVSS 评分为 7.5/10.0。该问题已在 1.35.11、1.36.7、1.37.3 和 1.38.1 中得到处理。

“Envoy 的 HTTP/2 downstream request processing 中存在一个漏洞,允许未经认证的远程客户端触发过量内存消耗,可能导致 Envoy process 因 OOM termination 而终止并造成 denial-of-service,”Envoy 表示。

另一方面,Microsoft 已在其 2026 年 6 月 Patch Tuesday 更新中修复了该漏洞。该漏洞被分配 CVE 编号 CVE-2026-49160(CVSS 评分:7.8)。

(本文在发布后已更新,加入了 Cloudflare 的回应,以及 Envoy 和 Microsoft 发布的修复细节。)