CVE复现|CVE-2026-49975(HTTP/2Bomb远程拒绝服务漏洞)

admin 2026-07-14 04:54:30 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析CVE-2026-49975HTTP/2Bomb漏洞,结合HPACK索引与流控停顿机制,以极小流量耗尽服务器内存。实测国内58所高校网站受影响,放大比达1357:1。建议升级Nginx或Apache,暂无补丁服务可采取禁用HTTP/2、部署严格限制网关及限制进程内存等措施防御。 综合评分: 91 文章分类: 漏洞分析,漏洞POC,漏洞预警,WEB安全,解决方案


cover_image

CVE复现 | CVE-2026-49975(HTTP/2 Bomb 远程拒绝服务漏洞)

原创

LRT凌日 LRT凌日

凌日网络与信息安全团队LapR1skT

2026年6月5日 21:22 重庆

在小说阅读器读本章

去阅读

概述

2026年6月2日,一个影响范围极广的HTTP/2协议层漏洞被公开披露,编号 CVE-2026-49975(QVD-2026-30962)。该漏洞源于HTTP/2头部压缩(HPACK)和流控制机制的组合性设计缺陷,攻击者无需身份验证,仅通过网络即可发起攻击,造成目标服务器内存耗尽、业务瘫痪。

该漏洞由安全研究员Quang Luong发现,其利用AI 工具将两个已知十年的技术串联:HPACK压缩炸弹和Window Stall流控停顿,形成了一个极具破坏力的攻击链。

影响量级: 十万级网站 CVSS 3.1: 9.8(高危) 利用可能性: 高 POC/EXP状态: 已公开

漏洞原理

HTTP/2 HPACK头部压缩

HTTP/2协议使用HPACK(RFC 7541)作为头部压缩算法。HPACK维护一个动态表(Dynamic Table),用于存储已发送的头部字段。发送方可以将一个头部插入动态表,之后通过1字节的索引引用来代表完整的头部字段,接收方在解码时会将索引引用展开为完整的头部内容。

这个设计的初衷是减少网络传输开销,平均可减少约30%的头部大小。但正是这种”1字节→N字节”的放大机制,成为了攻击者的利器。

攻击链:HPACK Bomb + Window Stall

该漏洞的攻击链由两部分组成:

第一部分

HPACK索引引用炸弹

攻击者先向动态表插入一个头部(如Cookie),然后在后续请求中发送数千个指向该表项的1字节索引引用。服务器在解码时,需要为每个索引引用分配完整的头部内存。

1. 客户端发送:1字节索引引用×2048次=2,048字节网络流量
2. 服务器分配:4,058字节×2,048次≈8MB内存

第二部分

Window Stall流控停顿

HTTP/2的流控制机制允许接收方通过WINDOW_UPDATE帧控制发送方的数据传输窗口。攻击者将初始窗口大小设为0(INITIAL_WINDOW_SIZE=0),服务器永远无法完成响应发送,已分配的内存永远不会被释放。

两部分结合:攻击者用极小的网络流量触发服务器大量内存分配,然后锁定这些内存不释放,最终导致服务器内存耗尽。

为什么传统防御失效

该攻击利用的是HTTP/2协议层面的特性:

1. 每个请求的头部"数量"在服务器看来可能只有1个(合并后的Cookie),绕过了头部数量限制
2. 解码后的"大小"限制也不会触发,因为单个头部值本身不大,放大来自重复引用
3. 请求体积和频率都很低,传统的请求阈值防御无法识别

影响范围

| 服务器 | 受影响版本 | 放大比 | 状态 | | — | — | — | — | | Envoy | 1.37.2 | ~5,700:1 | 未修复 | | Apache httpd | 2.4.67 (mod_http2 < 2.0.41) | ~4,000:1 | 已修复 | | nginx | 1.29.8 | ~70:1 | 已修复 | | Microsoft IIS | 含 Windows Server 2025 | ~68:1 | 未修复 | | Cloudflare Pingora | 0.8.0 | ~62:1 | 未修复 |

国内高校实测

我们使用仓库中的envoy PoC脚本(envoy/hpack_cookie_bomb.py),对国内多省市高校网站进行了HTTP/2 HPACK Bomb漏洞测试。测试参数统一为:

1. python3 envoy/hpack_cookie_bomb.py&nbsp;--host&nbsp;<目标>--port&nbsp;443--server-name&nbsp;<目标>&nbsp;\
2. --connections&nbsp;1--streams&nbsp;1--refs&nbsp;2048--cookie-value-size&nbsp;4058--initial-window&nbsp;0--hold&nbsp;10

说明: 本次测试为非破坏性验证,仅验证漏洞是否存在,未进行实际资源消耗攻击。

3.测试结论

本次测试共扫描200+所高校网站,覆盖重庆、北京、广东、四川四省市。其中58所高校的网站确认存在HTTP/2 HPACK Bomb漏洞,所有站点的放大比均在1356:1至1357:1之间,线上字节约6KB即可触发约8MB的内存分配。

值得注意的是,这些高校网站的服务器类型多为隐藏状态(未公开Server头部),但均支持HTTP/2协议且未对HPACK压缩进行安全限制。

漏洞危害分析

01

攻击成本极低

攻击者仅需100Mbps带宽即可发起有效攻击 单个连接、单个请求即可触发大量内存分配 6KB网络流量 → 8MB服务器内存(放大比1357:1) 攻击持续10-20秒即可耗尽服务器32GB内存

02

防御困难

传统WAF基于请求体积和频率的检测机制无效

每个请求在服务器看来只有1个头部,不触发头部数量限制

解码后单个头部值大小正常,不触发大小限制

攻击流量与正常HTTP/2流量无法区分

03

影响严重

服务器内存被快速耗尽,导致OOM 被攻击的服务完全不可用 可能影响同一服务器上的其他业务 高校网站多为招生、教务等关键业务,影响面广

复现步骤

01

环境准备

1. git clone https://github.com/califio/publications.git
2. cd publications/MADBugs/http2-bomb
3. pip install h2 hyper-h2

02

验证目标HTTP/2支持

1. import&nbsp;ssl,&nbsp;socket

3. ctx&nbsp;=&nbsp;ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
4. ctx.check_hostname&nbsp;=False
5. ctx.verify_mode&nbsp;=&nbsp;ssl.CERT_NONE
6. ctx.set_alpn_protocols(['h2','http/1.1'])

8. with&nbsp;socket.create_connection(('www.example.edu.cn',443),&nbsp;timeout=10)as&nbsp;sock:
9. with&nbsp;ctx.wrap_socket(sock,&nbsp;server_hostname='www.example.edu.cn')as&nbsp;ssock:
10. print('ALPN:',&nbsp;ssock.selected_alpn_protocol())

03

运行PoC

PoC附件:https://github.com/beichenst/http2-bomb

1. python3 envoy/hpack_cookie_bomb.py \
2. --host www.example.edu.cn \
3. --port&nbsp;443&nbsp;\
4. --server-name www.example.edu.cn \
5. --connections&nbsp;1&nbsp;\
6. --streams&nbsp;1&nbsp;\
7. --refs&nbsp;2048&nbsp;\
8. --cookie-value-size&nbsp;4058&nbsp;\
9. --initial-window&nbsp;0&nbsp;\
10. --hold&nbsp;10

修复建议

已有补丁的服务器

1. nginx:升级至1.29.8+,该版本引入max_headers指令,默认限制1000个请求头。

3. Apache&nbsp;httpd:升级至mod_http2 v2.0.41+,该版本将Cookie头部计入LimitRequestFields限制。

暂无补丁的服务器

Microsoft IIS、Envoy、Cloudflare Pingora: 截至本文发布时,官方尚未发布补丁。

通用缓解措施
1. 禁用HTTP/2:如业务允许,将服务回退至HTTP/1.1协议
2. 部署CDN/反向代理:在受影响服务器前部署支持严格头部数量限制的中间网关
3. 限制Worker内存:通过cgroups或ulimit为工作进程设置严格内存限制,避免单个Worker耗尽整机内存
4. 配置双重限制:同时设置"最大解码头部大小"和"最大头部数量"两项独立限制
5. 限制停滞流生命周期:对停滞流设置严格的生命周期上限,不受WINDOW_UPDATE活动影响

参考资料

1. [1]&nbsp;HTTP/2Bomb原始研究博客:https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb
2. [2]PoC代码仓库:https://github.com/califio/publications/tree/main/MADBugs/http2-bomb
3. [3]&nbsp;RFC&nbsp;7541&nbsp;HPACK:https://www.rfc-editor.org/rfc/rfc7541
4. [4]&nbsp;RFC&nbsp;9113&nbsp;HTTP/2:https://www.rfc-editor.org/rfc/rfc9113
5. [5]&nbsp;CVE-2026-49975:https://www.cve.org/CVERecord?id=CVE-2026-49975
6. [6]&nbsp;CVE-2016-6581(早期HPACK&nbsp;Bomb):https://nvd.nist.gov/vuln/detail/CVE-2016-6581
免责声明:由于传播、利用本公众号凌日网络与信息安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号凌日网络与信息安全团队及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:凌日网络与信息安全团队LapR1skT LRT凌日 LRT凌日《CVE复现 | CVE-2026-49975(HTTP/2 Bomb 远程拒绝服务漏洞)》

一个典型的sqli 网络安全文章

一个典型的sqli

文章总结: 该文档展示了一个针对腾讯视频API的典型SQL注入漏洞案例,包含布尔盲注和时间盲注两种payload。关键发现是ucode参数存在注入,攻击者可改变
评论:0   参与:  0