LiaoZiqi-GZFLS/CVE-2026-49975

GitHub: LiaoZiqi-GZFLS/CVE-2026-49975

CVE-2026-49975 HTTP/2 Bomb 漏洞的概念验证工具,用于复现和验证主流 Web 服务器的 HTTP/2 拒绝服务漏洞。

Stars: 0 | Forks: 0

# CVE-2026-49975 HTTP/2 Bomb PoC HTTP/2 远程拒绝服务漏洞复现工具 ## 漏洞概述 **CVE-2026-49975** 是一个影响主流 Web 服务器的 HTTP/2 拒绝服务漏洞。该漏洞由安全公司 Calif(使用 OpenAI Codex)于 2026 年 6 月初发现。 ### 攻击原理 1. **HPACK 压缩炸弹**:将极小的 header(如 `"x: a"`)插入服务器 HPACK 动态表,然后发送成千上万个 1-byte 的索引引用。每个引用迫使服务器分配大量簿记内存,但客户端只消耗极少带宽。内存放大比例可达 **~5700:1**(Envoy)和 **~4000:1**(Apache httpd)。 2. **Slowloris 流控保持**:通过零字节流控窗口阻止服务器发送响应,并 drip-feed `WINDOW_UPDATE` 帧保持连接存活,使内存分配被"钉住"。 3. **Cookie 分割绕过**:将大 Cookie 分割成许多小片段,绕过服务器的 header 数量限制。 ### 影响范围 | 软件 | 影响版本 | 修复版本 | |------|---------|---------| | Apache httpd (mod_http2) | < 2.0.41 | 2.0.41+ | | nginx | < 1.29.8 | 1.29.8+ | | OpenResty | 基于 nginx < 1.29.8 | 1.29.8+ | | Envoy (CVE-2026-47774) | ≤ 1.37.2 | 1.35.11, 1.36.7, 1.37.3, 1.38.1+ | | Microsoft IIS | Windows Server 2025 | 无补丁 | | Cloudflare Pingora | 默认配置 | 无补丁 | ### CVSS 评分 - **CVSS 3.1**: 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) - 部分厂商评级更高(如 9.8),因利用难度极低 ## 工具说明 本工具用于安全研究和授权测试,演示 CVE-2026-49975 漏洞的攻击机制。 ### 安装依赖 pip install -r requirements.txt ### 使用方法 # 基础攻击 python http2_bomb.py example.com # 针对本地 HTTP/2 测试服务器(无 TLS) python http2_bomb.py localhost -p 8080 --no-tls # 高强度攻击(50 个 stream,每 stream 50000 个引用) python http2_bomb.py example.com -s 50 -n 50000 # 启用 Cookie 分割绕过 python http2_bomb.py example.com --cookie-fragments 1000 # 快速模式(发送后不保持连接) python http2_bomb.py example.com --no-hold ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | `target` | 目标主机地址 | 必填 | | `-p, --port` | 目标端口 | 443 | | `--no-tls` | 禁用 TLS | false | | `-s, --streams` | 并发 Stream 数量 | 10 | | `-n, --headers-per-stream` | 每 Stream 的 Header 引用数 | 10000 | | `--cookie-fragments` | Cookie 分割片段数 | 0 | | `--stream-delay` | Stream 间发送延迟(秒) | 0.01 | | `--window-update-interval` | WINDOW_UPDATE 发送间隔 | 5.0s | | `--no-hold` | 发送后不保持连接 | false | | `--timeout` | Socket 超时时间 | 30 | ## 本地测试 使用 `test_server.py` 启动一个简易 HTTP/2 服务器用于本地验证: # 生成自签名证书 openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes # 启动测试服务器 python test_server.py --port 8443 # 运行攻击 python http2_bomb.py localhost -p 8443 ## 防御建议 1. **立即缓解**:如无法立即补丁,可临时禁用 HTTP/2 - Apache: `Protocols http/1.1` - nginx: `http2 off;` 2. **升级补丁**: - Apache httpd: 升级 mod_http2 至 2.0.41+ - nginx: 升级至 1.29.8+ - Envoy: 升级至对应修复版本 3. **配置加固**: - 设置 `max_headers` 限制(nginx 1.29.8+ 默认 1000) - 正确计算分割的 Cookie header 数量 - 限制单连接的最大 header 数量 4. **监控告警**: - 监控内存使用突增 - 监控 OOM 事件 - 监控异常连接数 ## 免责声明 ⚠️ **本工具仅供安全研究和授权渗透测试使用。** 未经授权对他人系统使用本工具属于违法行为。使用者应遵守当地法律法规,并仅对拥有合法授权的目标进行测试。 ## 参考链接 - [CVE-2026-49975 - OpenCVE](https://app.opencve.io/cve/CVE-2026-49975) - [Original Disclosure - Calif](https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb) - [Red Hat Advisory RHSB-2026-007](https://access.redhat.com/security/vulnerabilities/RHSB-2026-007) - [HAProxy Protection Blog](https://www.haproxy.com/blog/haproxy-cve-2026-49975-http2-bomb) - [PoC Source - califio/publications](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb) ## 许可证 MIT License - 用于安全研究和教育目的。
标签:HTTP/2, Python, 安全测试工具, 底层编程, 拒绝服务, 数据展示, 无后门, 漏洞复现, 红队, 逆向工具