Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
POC-CVE-2026-49975 — Apache mod_http2 における CVE-2026-49975 のセキュリティ研究 PoC: HTTP/2 HPACK 圧縮爆弾 + フロー制御ホールド DoS | Kitploit
ツール/GitHubGitHub/naheeju/poc-cve-2026-49975
脆弱性分析エクスプロイトウェブセキュリティネットワークセキュリティ
GitHubnaheeju/poc-cve-2026-49975

POC-CVE-2026-49975

Apache mod_http2 における CVE-2026-49975 のセキュリティ研究 PoC: HTTP/2 HPACK 圧縮爆弾 + フロー制御ホールド DoS

リポジトリを見る
7時間37分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Go Version Status Scope CVSS License

CVE-2026-49975

HTTP/2 Bomb — HPACK圧縮爆弾 + フロー制御ホールド PoC

naheeju によるセキュリティ研究PoC


⚠️ これは動作するメモリ枯渇型DoSツールであり、おもちゃではありません。 標的に対してメモリを割り当てさせ、HTTP/2のフロー制御トリックでストリームを開いたまま保持します。プロセスが実行されている限り、保持を続け、サーバーが接続を切断した場合は自動的に再接続します — 自力では停止しません。影響は --threads、--streams、--headers に直接比例して拡大します。プロセスを停止する(Ctrl+C)と保持中のストリームが解放され、サーバーは回復しますが、デフォルトの動作に「穏やかな」要素は一切ありません — すべての実行を実弾テストとして扱ってください。


1. 概要

CVE-2026-49975(「HTTP/2 Bomb」)は、Apache HTTP Serverの mod_http2 モジュールに影響を与える、リモートかつ未認証のサービス拒否(DoS)脆弱性です。これは古くから知られる2つのHTTP/2の弱点を連鎖させたものです:

  1. HPACK帳簿爆弾 — 小さなHPACKエンコードされたHTTP/2リクエストが、複数の Cookie ヘッダーフラグメントを LimitRequestFields にカウントされることなくマージさせ、サーバーに内部ヘッダー帳簿構造のためのメモリ割り当てを繰り返し強制します。
  2. フロー制御ストール(Slowloris型) — クライアントがほぼゼロのフロー制御ウィンドウを通知し、レスポンス送信を遅延させ、影響を受けるストリームを開いたままにすることで、割り当てられたメモリの解放を妨げます。

結果として、控えめな回線上の単一クライアントが、ストリームが開かれている限り、標的に対して多大かつ持続的なメモリ割り当てを強制できます。この実装は2つのペイロードモードをサポートし、設定した並行数に比例して線形に拡大します:

  • nginx モード — HPACK動的テーブルに空の x-bomb ヘッダーを植え付け、繰り返し再参照します(参照あたり約70:1の増幅)。
  • classic モード — 代わりに過大な cookie ヘッダーを植え付けます(参照あたり約4000:1の増幅)。

各接続は、ストリームあたり数千回(--headers、デフォルト5000)、接続あたり複数のストリーム(--streams、デフォルト10)、複数の並列接続(--threads、デフォルト1)にわたって植え付けたヘッダーを再参照します。サーバーが接続を閉じた場合、ツールは即座に再接続して継続し、手動で停止するまで続きます — これは単発のプローブではなく、継続的な保持ループです。

他の影響を受けるスタックの関連識別子(このリポジトリでは実装もテストもしていません):

  • Envoy → CVE-2026-47774
  • Microsoft IIS、Cloudflare Pingora → 別途追跡、ここではCVEを参照していません

完全性のため、根底にある弱点クラスの全範囲 — 「HTTP/2 Bomb」技法(HPACK圧縮爆弾 + フロー制御ホールド)は、Apache以外の複数のサーバー実装にも影響します。このリポジトリはApacheのケースのみを実装・テストしています。残りは読者がより広いクラスを理解できるように記載しているのであり、このPoCがそれらを実証しているからではありません:

実装ステータスこのPoCで実装済みか?
Apache HTTP Server mod_http2httpd 2.4.68(2026-06-08)で修正済みはい — このリポジトリ
nginx1.29.8で修正済みいいえ
Envoy別途追跡いいえ
Microsoft IIS別途追跡いいえ
Cloudflare Pingora別途追跡いいえ
CVECVE-2026-49975
CWECWE-789(過大なサイズ値によるメモリ割り当て、NVD/CVE.orgによる);一部ベンダーではCWE-409(高度に圧縮されたデータの不適切な処理)としても追跡
CVSS7.5(High) — CVSS v3.1、可用性のみのベクター(NVDによる)。Apache自身のアドバイザリではModerateと評価。
影響を受けるコンポーネントApache HTTP Server mod_http2
脆弱なバージョンApache httpd 2.4.17 ≤ バージョン ≤ 2.4.67(デフォルトHTTP/2設定)
修正済みApache HTTP Server 2.4.68(2026-06-08リリース)。根本的な修正は2026-05-27に上流の mod_h2 に着地し、2026-06-02にhttpd 2.4.xブランチにマージされ、2.4.68リリースで出荷されました。
攻撃タイプサービス拒否 — メモリ枯渇(可用性のみ)
認証が必要いいえ
データ露出 / RCEなし — これは可用性への影響のみです
既知の悪用追跡ソースにより、現時点で既知の野生での悪用としてフラグ付けされていません。

参考資料(一次情報源 — すべての主張を独立に検証してください):

  • CVEレコード: https://www.cve.org/CVERecord?id=CVE-2026-49975
  • NVDエントリ: https://nvd.nist.gov/vuln/detail/CVE-2026-49975
  • Apacheアドバイザリ / 脆弱性リスト: https://httpd.apache.org/security/vulnerabilities_24.html
  • Apache 2.4.68変更履歴(修正コミット参照): https://dlcdn.apache.org/httpd/CHANGES_2.4.68
  • 元の発見記事: https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb

2. このリポジトリの範囲

このリポジトリに含まれるもの:

  • テストを許可されている標的に対して、保持のみのHPACK爆弾動作を再現する最小限のPoCスクリプト。
  • このREADME。脆弱性、開示タイムライン、安全な使用条件を文書化しています。

このリポジトリに含まれないもの:

  • 脆弱なホストをインターネット上でスキャンするための自動化。
  • フラッディング/DoS持続ロジック、並行数の段階的増加、認証情報/標的リスト。
  • デフォルトで特定の稼働システムを標的とするコード。標的はオペレーターが明示的に指定する必要があります。

3. ⚖️ 法的・倫理的注意事項

何よりも先にこれを読んでください。

  • このPoCは、教育および防御的セキュリティ研究目的に厳密に限定して公開されています — オペレーターが自身の露出を検証できるようにし、すでに開示され、すでに修正された脆弱性の公開記録を支援するためです。
  • 自身のインフラ、または契約上/法的にテストを許可されているシステム(例:署名済みのペネトレーションテスト契約、バグバウンティのスコープ、書面による許可)以外の標的に対してこれを実行する前に、システム所有者から明示的かつ文書化された許可を得る必要があります。
  • 所有していない、またはテストの許可を持たないシステム — 政府機関、法執行機関、重要インフラ、またはあらゆる第三者の本番システムを含むがこれに限定されない — に対して、許可なくこのPoCを実行することは、ほとんどの法域で違法であり(インドネシアではUU ITEに該当)、他の地域では刑事犯罪を構成する可能性があります。
  • このリポジトリの著者:
    • このコードの悪用に対して一切の責任を負いません。
    • 許可なくあらゆるシステムのサービスを妨害、劣化、拒否するためにこのPoCを使用することを容認しません。
    • このコードを現状のまま提供し、いかなる種類の保証も行いません。
  • あなたのシステムがテストされたためにこのリポジトリを見つけたベンダー、機関、またはシステムオペレーターの方は:セクション6 — 開示タイムラインで、これがどのように、誰に報告されたかを確認してください。

このリポジトリ内のコードをダウンロード、クローン、または実行することにより、適切な許可を確保する責任はあなたのみにあり、その使用に対する完全な法的責任を負うことに同意するものとします。


4. 偵察方法

CVE-2026-49975 は、セクション1の両方の基準を満たす標的にのみ適用されます — HTTP/2で到達可能かつ範囲内の脆弱な mod_http2 バージョン(2.4.17 ≤ バージョン ≤ 2.4.67、デフォルト設定)を実行していること。標的のHTTPSポートに対する単純な curl -vkI で両方を確認できます — スキャナーや追加フラグは不要です:

root@kitploit:~
curl -vkI https://<target>

出力で確認すべき点:

  • ALPN: server accepted h2 — サーバーがこの接続でHTTP/2をネゴシエートしました。これはCVE-2026-49975の前提条件です。バグは mod_http2 に存在するため、ここでh2を受け入れなかったサーバーは候補ではありません。
  • Server レスポンスヘッダー(HEADレスポンスヘッダーが出力された後に表示、-v 出力のさらに下) — これが実際のApache/mod_http2 バージョンをセクション1の脆弱な範囲に対して確認または除外するものです。ALPNの受け入れだけではバージョンを確認できません — それには依然として Server ヘッダーまたは同等のバナーチェックが必要です。

このリポジトリの偵察ではこれ以上のものは使用されません — 能動的な悪用トラフィック、脆弱性スキャナー、ポートスイープはありません。


5. 要件

  • ランタイム: Go 1.26+(モジュール: cve202649975)
  • 依存関係: golang.org/x/net v0.59.0(go build により自動的に解決)
  • ネットワークアクセス: 指定ポート(デフォルト 443、デフォルトでTLS/h2、平文h2cには --no-ssl)での許可された標的への直接TCP到達性
  • オプション: proxychains4 — バイナリが proxychains4 の下で起動された場合、LD_PRELOAD ラッパーを検出し、同じ proxychains4.conf を読み取り、自身の接続をそのSOCKS5プロキシ経由でルーティングします(リモートDNS解決) — エンゲージメントのスコープが特定の出口パスからのテストを要求する場合に有用
  • 権限: テスト対象の標的に対する書面による許可 / エンゲージメントレター

6. 開示タイムライン

CVE-2026-49975自体の公開タイムライン:2026-05-26にApacheへ報告;修正は2026-05-27に上流の mod_h2 に着地;2026-06-02にhttpd 2.4.xブランチにマージ;Apache HTTP Server 2.4.68が2026-06-08にリリース。


7. 使用方法

明示的にテストを許可されている標的にのみ実行してください。組み込みの期間制限やセーフモードはありません — 実行時間と並行数についてはあなたが責任を負います。

ビルド:

root@kitploit:~
go build -o dos ./cmd
# or: sudo install -m 0755 dos /usr/local/bin/dos   (see build.sh)

実行:

root@kitploit:~
./dos <target> <port> [flags]
フラグデフォルト説明
--threads N1並列接続数
--streams N10接続あたりに開かれるストリーム数
--headers N5000ストリームあたりのHPACK動的テーブル参照数(増幅ドライバー)
--mode nginx|classicnginxnginx = 空ヘッダー帳簿爆弾(約70:1);classic = 太ったCookie爆弾(約4000:1、このCVEが追跡されるApache mod_http2 のCookieマージ機構に一致)
--no-ssloffTLSの代わりに平文h2cを使用

例、最小限の許可されたラボテスト:

root@kitploit:~
./dos lab-target.internal 443 --threads 1 --streams 5 --headers 1000 --mode nginx

予想される動作:

  • 何かを送信する前に、プリフライトサマリー(標的、モード、接続/ストリーム数、推定サーバー側メモリ)を出力します。
  • 1バイトの WINDOW_UPDATE ドリップと定期的なpingでストリームを開いたまま保持します;サーバーが接続を閉じた場合、自動的に再接続して繰り返します。
  • Ctrl+C / SIGTERM を送信したときにのみ停止します — それに応じてテストウィンドウを計画し、標的のメモリをリアルタイムで監視してください。
  • 推奨:許可された本番テストの前に、まず低い --streams/--headers でステージング/ラボ環境に対して検証し、いずれにせよ標的サービスのロールバック/再起動計画を準備してください。

7a. RAMプレッシャー推定

このツールの2つのモードのサーバー側メモリの概算式(Apache mod_http2 のみ — nginx/classic が増幅率にどう対応するかはセクション1を参照):

root@kitploit:~
total_streams   = threads × streams
server_ram_MB   ≈ total_streams × headers × amplification_bytes / 1024²

# nginx mode (~70 bytes/ref), defaults (threads=1, streams=10, headers=5000):
#   1 × 10 × 5000 × 70 / 1024²  ≈ 3.3 MB held

# classic mode (~4000 bytes/ref), defaults:
#   1 × 10 × 5000 × 4000 / 1024² ≈ 190 MB held

threads/streams/headers を増やせば数値は線形に増加します — これが、本番スコープの実行前に許可されたラボテストを低く始めるべき理由です(セクション7を参照)。


7b. 技術的詳細

これは、この特定のPoCがApache mod_http2 に対して実装する機構を文書化したものです — 他のサーバー実装には拡張されません。それらはこのリポジトリの範囲外です(セクション2を参照)。

HPACK動的テーブルシード(インクリメンタルインデックス、インデックス62にエントリを追加):

root@kitploit:~
0x40 | name_len | name | value_len | value
= 0x40 0x06 "x-bomb" 0x00              (nginx-mode seed: empty value)

そのエントリへのインデックス参照(各1バイト、--headers 回繰り返し):

root@kitploit:~
0x80 | 62 = 0xbe

接続あたりのHTTP/2フレームシーケンス:

root@kitploit:~
Client → Server:
  PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n        (connection preface)
  SETTINGS [INITIAL_WINDOW_SIZE=0]         (flow-control stall setup)
  SETTINGS ACK                             (after reading server SETTINGS)
  HEADERS [stream 1]  ← HPACK bomb payload
  HEADERS [stream 3]  ← HPACK bomb payload
  ...                                      (up to --streams per connection)
  WINDOW_UPDATE(1) per stream, periodically   (keeps the stall alive)

ワイヤコストは小さく、ストリームあたりほぼ固定です(シードに数バイト + 参照あたり1バイト);サーバー側の割り当てが不釣り合いに増大するものです — そのギャップが脆弱性です。


7c. 出力例

許可されたラボ実行の出力、classic モード、20接続 × 30ストリーム/接続、5000 HPACK参照/ストリーム、proxychains経由でルーティング:

root@kitploit:~
proxychains4 dos domain.com 443 --mode classic --threads 20 --streams 30 --headers 5000
root@kitploit:~
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17


 ██╗  ██╗██████╗     ██████╗  ██████╗ ███╗   ███╗██████╗
 ██║  ██║╚════██╗    ██╔══██╗██╔═══██╗████╗ ████║██╔══██╗
 ███████║ █████╔╝    ██████╔╝██║   ██║██╔████╔██║██████╔╝
 ██╔══██║██╔═══╝     ██╔══██╗██║   ██║██║╚██╔╝██║██╔══██╗
 ██║  ██║███████╗    ██████╔╝╚██████╔╝██║ ╚═╝ ██║██████╔╝
 ╚═╝  ╚═╝╚══════╝    ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚═════╝

  CVE-2026-49975  —  HTTP/2 Bomb PoC  (HPACK bomb + flow-control hold)
  Go PoC by naheeju  ·  originally discovered by Calif.IO  ·  authorized testing only
──────────────────────────────────────────────────────────────────
  Run configuration
  Target           domain.com:443
  Mode             classic (~4000:1 amplification)
  Connections      20
  Streams/conn     30
  Total streams    600
  HPACK refs/str   5000
  Est. server RAM  ~11444 MB
  Proxychains      yes — SOCKS5 127.0.0.1:9050 (remote DNS, no leak)
──────────────────────────────────────────────────────────────────
  [~] Opening connection #1...
  ...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  ... (one line per connection as it finishes opening its 30 streams)

各接続は、ストリームを開く際に自身のローカルRAM寄与を独立して報告します(これらの設定で接続あたり約572 MB);プリフライトの Est. server RAM 数値は、すべての接続が完全に開いて保持された時点での全20接続の集計です(約11.4 GB)。

上記の domain.com はプレースホルダーです — 自身の実行を文書化する際は、実際の許可された標的に置き換え、エンゲージメントが機密である場合は伏せてください。


8. 修復

  • Apache HTTP Server: httpd 2.4.68以降にアップグレードしてください(これが修正を含むリリースです)。
  • 即時のパッチ適用が不可能な場合:
    • LimitRequestFields を保守的に設定し、ヘッダーマージ動作を監視します。
    • パッチ適用まで、影響を受けるリスナーでHTTP/2を無効化することを検討します。
    • ハードなヘッダー数上限を強制するリバースプロキシ/WAFでサービスを前面に配置します。
  • 修復後に再テストし、保持・解放動作がもはや持続的なメモリ増加を引き起こさないことを確認します。

9. クレジット / 帰属

元の脆弱性の発見とApacheへの開示(このリポジトリやその著者とは無関係):

  • Quang Luong、Calif.IO、OpenAI Codexとの協力
  • 2026-05-26にApache HTTP Server Projectへ報告;公式クレジット行は2.4.68変更履歴に掲載

このリポジトリ(Go再実装、公開修正が着地した後に作成・テスト):

  • 著者: naheeju
  • 公開された脆弱性の説明とパッチ差分から構築された独立したPoC。許可された標的に対する検証/教育目的。元の発見、Calif.IO、Apache Security Teamとは提携していません。

この特定のPoCに関する質問、訂正、または責任ある開示に関連する懸念:このリポジトリでissueを開いてください。

ライセンス: MIT(このリポジトリのコードのみ — LICENSE を参照)。元の発見者やApache Software Foundationには拡張されず、それらによる承認を暗示するものでもありません。

ツールをダウンロード