HTTP/2 Bomb DoSエクスプロイト — nginx・Apache・IIS・Envoyに影響

「HTTP/2 Bomb」と名付けられたリモートからのサービス妨害(DoS)エクスプロイトが新たに公開されました。このエクスプロイトは、デフォルト設定のnginx・Apache httpd・Microsoft IIS・Envoy・Cloudflare Pingoraといった主要Webサーバーを標的としています。

AIが自律的に発見したこの攻撃は、20年来知られている2つの技術を組み合わせた強力な増幅プリミティブを構成しており、一般的な家庭用インターネット回線から1分足らずでサーバーメモリを数十ギガバイト枯渇させることが可能です。

このエクスプロイトは、個別には広く知られているものの、これまで組み合わせて使われることのなかった2つのHTTP/2悪用パターンで構成されています。1つ目は「HPACKインデックス参照ボム」であり、RFC 7541のステートフルなヘッダ圧縮方式に起因するものです。

攻撃者はまず1つのエントリをサーバーの動的ヘッダテーブルに登録し、その後1バイトのインデックス参照を何千もの形でコネクションに送り込みます。

通信線上の1バイトごとにサーバーはヘッダのフルコピーをメモリ上に確保しなければならず、このコストがリクエストごとに何千回も繰り返されます。増幅比はnginxで70:1、Envoyでは5,700:1に達します。

チェーンの2つ目の要素は「HTTP/2ウィンドウストール」です。クライアントがフロー制御ウィンドウをゼロバイトとして通知することで、サーバーはレスポンスを完了することも、蓄積したメモリを解放することもできなくなります。

その後、定期的に1バイトのWINDOW_UPDATEフレームをわずかずつ送り込むことでサーバーの送信タイムアウトをリセットし続け、攻撃者がコネクションを保持する限り、確保されたすべてのメモリをメモリ上に固定し続けることができます。

HTTP/2 Bombが従来のHPACKエクスプロイトと異なる点は、増幅がどこで発生するかにあります。

従来のHPACKボムはテーブルに大きな値を書き込む手法だったため、サーバー側はデコード後のヘッダサイズ上限を設けることで対策を講じてきました。しかし今回のエクスプロイトはその防御策を完全に回避しています。

Envoyの場合、細切れの断片を拡大し続けるバッファに追記していく実装のため、アロケータのオーバーヘッドが積み重なることで、単一ストリームで最大約5,700:1という増幅率に達します。

ShodanでHTTP/2対応のnginx・Apache・IIS・Envoy・Pingoraサーバーを検索したところ、880,000件以上の公開エンドポイントが確認されました。各サーバーで計測された増幅値は、その深刻度を裏付けています。

100Mbpsの一般家庭向け回線を持つ攻撃者1人でも、これらのサーバーのいずれかを数秒以内にアクセス不能にすることができます。

個々の技術自体は新しいものではありません。Cory Benfield氏は2016年にCVE-2016-6581として最初の「HPACKボム」を文書化しています。Gal Bar Nahum氏は独立して、2025年にCVE-2025-53020としてApache httpdに対して約4,000倍の増幅を達成しました。

HTTP/2のSlowloris型枯渇攻撃も同様に、CVE-2016-8740(無制限のCONTINUATIONフレーム)およびCVE-2016-1546(ワーカースレッドの枯渇)として、いずれもApache httpdで確認されています。

HTTP/2の「Rapid Reset」攻撃(CVE-2023-44487)も同様のロジックに基づいており、そのピーク時にはCloudflareが毎秒2億1,000万リクエストを受け止めています。

HTTP/2 Bombの特徴は、これらのプリミティブを組み合わせた点にあります。CodexがコードベースをAIで解析し、2つの技術が組み合わせ可能であることを発見。これまでの人間の研究者がこれらの特定サーバーに対して構築していなかったチェーン攻撃を実現しました。

PoCスクリプト、Dockerラボ、各サーバー向けのAI生成解説レポートは、CodexのGitHubリポジトリで公開されています。RFC 7541の§7.3には、「攻撃者がエンドポイントのメモリを枯渇させようと試みる可能性がある」と明記されています。

翻訳元: https://cyberpress.org/http-2-bomb-dos-exploit/

ソース: cyberpress.org