
HTTP/2 Bomb (CVE-2026-49975) 非破壊型脆弱性検出器 for 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 に基づいており、2 つの検出モードを採用しています:
HPACK インデックス参照爆弾 を検出:動的テーブルエントリ ("a", "") を挿入し、その後インデックス参照を送信します。各参照はワイヤー上 1 バイト → サーバーメモリ 59 バイト(3B プールコピー + 56B ngx_table_elt_t)。攻撃パラメータは refs=32000 ですが、検出では refs=3 のみ使用します。
Cookie crumb 結合爆弾 を検出:mod_http2 の Cookie 結合メカニズム(apr_table_setn は重複する cookie を "; " で連結)を悪用します。結合後の cookie は 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 の形式(1行1ターゲット、# で始まる行はコメント):
# 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