近日,网络安全研究人员发现了一个极具破坏力的 远程拒绝服务(DoS)漏洞,波及范围涵盖 NGINX、Apache HTTPD、微软 IIS、Envoy 以及 Cloudflare Pingora 等主流 Web 服务器。
该漏洞被命名为 “HTTP/2 Bomb”,由安全机构 Calif 首次披露。更令人关注的是,这一漏洞是由 OpenAI Codex 在组合两种已知攻击手法——压缩炸弹与 Slowloris 式连接保持时意外发现并链式利用的。
攻击原理:一个字节引发的“内存雪崩”
漏洞核心出在 HTTP/2 协议的头部压缩机制 HPACK 上。攻击者只需发送一个字节的数据,服务器就会为其分配一个完整的头部结构内存。这个操作可以在一个请求中重复成千上万次。
更致命的是,攻击者还会配合一个零字节的流量控制窗口,让服务器无法释放任何已分配的内存。这就像一个永远无法关上的水龙头,水流虽小,但水池终将溢出。
与过往漏洞有何不同?
早在 2016 年,安全圈就出现过名为 HPACK Bomb 的漏洞(CVE-2016-6581)。传统压缩炸弹的做法是将一个巨大的值塞进头部表里,然后反复引用,迫使服务器限制总解码大小。
而这次的新玩法恰恰相反:头部几乎是空的,真正的杀伤力来自服务器为每个空条目所做的元数据记录和内存管理操作。由于几乎没有内容需要解码,解码大小限制根本不会触发。
攻击威力有多大?
研究人员的实测数据令人震惊:
- 一台普通家庭电脑(100Mbps 带宽)就能在数秒内让未防护的服务器瘫痪;
- 针对 Apache HTTPD 和 Envoy,单个客户端约 20 秒即可消耗并锁定 32GB 服务器内存。
如何防范?
目前各厂商的应对状态如下:
- NGINX:已发布 1.29.8+ 版本,新增
max_headers 指令(默认 1000)。无法升级可暂时关闭 HTTP/2(http2 off;)
- Apache HTTPD:
mod_http2 升级至 v2.0.41 可修复。也可设置 Protocols http/1.1 禁用 HTTP/2
- 微软 IIS、Envoy、Cloudflare Pingora:截至发稿尚无补丁
专家点评:协议设计存在根本缺陷
Calif 方面指出,HTTP/2 协议规范将内存风险仅视为“放大比率”问题,但这只是事实的一半。一个 70:1 的放大器本无大碍,如果请求完成后内存会被释放。
真正的漏洞成因在于:HTTP/2 允许客户端几乎零成本地保持连接不断开,从而让所有已分配的内存字节被无限期锁定。
不是压缩太强,而是连接太“黏”。
资讯来源:The Hacker News
关于本次漏洞的深入解读与防护实践,欢迎在 云栈社区 进行交流。
|