
HTTP/2 Bomb (CVE-2026-49975) Nginx / Apache httpd용 비파괴적 취약점 탐지기. 제로 의존성 Python.
HTTP/2 Bomb (CVE-2026-49975) 비파괴적 취약점 탐지 도구 — Nginx / Apache httpd용
CVE-2026-49975은 광범위한 영향을 미치는 HTTP/2 프로토콜 계층의 원격 서비스 거부 취약점으로, 보안 연구원 Quang Luong이 발견했습니다. 이 취약점은 HPACK 헤더 압축과 흐름 제어 메커니즘의 결합 설계 결함을 악용하며, 공격자는 인증 없이 10-20초 내에 서버의 32GB 메모리를 고갈시킬 수 있습니다.
| 서버 | 영향받는 버전 | 증폭 비율 | 수정 상태 |
|---|---|---|---|
| Apache httpd | 2.4.17 – 2.4.67 (mod_http2 < 2.0.41) | ~4,000:1 | ✅ 수정됨 |
| Nginx | < 1.29.8 | ~70:1 | ✅ 수정됨 |
| Envoy | ≤ 1.37.2 | ~5,700:1 | ❌ 수정되지 않음 |
| Microsoft IIS | Windows Server 2025 포함 | ~68:1 | ❌ 수정되지 않음 |
| Cloudflare Pingora | ≤ 0.8.0 | ~62:1 | ❌ 수정되지 않음 |
이 도구는 실제 PoC를 기반으로 구현되었으며, 두 가지 탐지 모드를 사용합니다:
HPACK 인덱스 참조 폭탄을 탐지합니다: 동적 테이블 항목 ("a", "")을 삽입한 다음 인덱스 참조를 전송합니다. 각 참조는 네트워크상 1바이트 → 서버 메모리 59바이트(3B pool copy + 56B ngx_table_elt_t)를 차지합니다. 공격 매개변수는 refs=32000이지만, 탐지에는 refs=3만 사용합니다.
Cookie crumb 병합 폭탄을 탐지합니다: mod_http2의 Cookie 병합 메커니즘(apr_table_setn이 "; "로 중복 쿠키를 연결)을 이용합니다. 병합된 쿠키는 LimitRequestFields에 포함되지 않습니다. 공격 매개변수는 refs=4091(약 4000:1 증폭)이지만, 탐지에는 refs=3만 사용합니다.
ENHANCE_YOUR_CALM을 반환 → 🛡️ 보호 조치가 배포됨RST_STREAM으로 거부 → 🛡️ 보호됨GOAWAY를 보냄 → 🛡️ 보호됨제로 의존성, Python 표준 라이브러리(ssl, socket, struct)만 사용합니다.
git clone https://github.com/adminlove520/http2-bomb-detector.git
cd http2-bomb-detector
Python 3.7+가 필요합니다.
# 自动检测(Nginx + Apache 两种模式)
python http2_bomb_detector.py --host example.com
# 指定模式
python http2_bomb_detector.py --host example.com --mode nginx
python http2_bomb_detector.py --host example.com --mode httpd
# 指定端口
python http2_bomb_detector.py --host example.com --port 8443
# 仅输出漏洞信息,不发送探测包
python http2_bomb_detector.py --host example.com --no-probe
# JSON 格式输出
python http2_bomb_detector.py --host example.com --json
# 从文件读取目标列表
python http2_bomb_detector.py -f targets.txt
# 输出报告
python http2_bomb_detector.py -f targets.txt -o report.txt
targets.txt 형식(각 줄에 하나씩, #로 시작하는 줄은 주석):
# Web 服务器列表
example.com
https://example.org:8443
192.168.1.100
[INFO] 连接 example.com:443 ...
[OK] HTTP/2 连接建立
[INFO] --- NGINX 模式检测 ---
[INFO] 攻击向量: HPACK 索引引用炸弹:动态表项 ('a','') × 32000 引用
[INFO] 修复版本: 1.29.8 | 放大比: ~70:1
[INFO] 发送探测包 (refs=3, 非破坏性)...
[WARN] ⚠️ 服务器静默接受探测包 — 可能受影响!
[INFO] --- HTTPD 模式检测 ---
[INFO] 攻击向量: Cookie crumb 合并炸弹:空 cookie × 4091 引用
[INFO] 修复版本: mod_http2 2.0.41 / httpd 2.4.68 | 放大比: ~4000:1
[INFO] 发送探测包 (refs=3, 非破坏性)...
[OK] 服务器 RST_STREAM 拒绝探测流 — 有防护
==================================================
🛡️ NGINX: potentially_vulnerable
⚠️ HTTPD: protected
이 도구는 승인된 보안 테스트에만 사용해야 합니다. 승인되지 않은 대상을 이 도구로 탐지하면 법률을 위반할 수 있습니다. 사용자는 모든 법적 책임을 스스로 부담해야 합니다.
MIT