PoC Exploit Released for Apache Tomcat DoS Vulnerability
2025/06/06 gbhackers — Apache Tomcat の深刻なメモリ・リークの脆弱性 CVE-2025-31650 が悪用され、未認証の攻撃者たちがサービス拒否攻撃の機会を手にしている。この脆弱性は、HTTP/2 実装における不正な優先度ヘッダーに起因するものであり、すでに 12件のエクスプロイトが公開されている。この脆弱性の影響が及ぶ範囲は、Tomcat のバージョン 9.0.76~9.0.102/10.1.10~10.1.39/11.0.0-M2~11.0.5 である。

脆弱性のメカニズムと攻撃ベクター
Apache のレポートによると、この脆弱性は、無効な優先度ヘッダーを取り込んだHTTP/2 リクエストが失敗した際の、不適切なクリーンアップに起因するという。
このような不正なリクエストを拒否する Tomcat は、以下の問題を引き起こす:
- ストリーム・オブジェクトへのメモリ割り当てが、完全に解放されない
- OutOfMemoryError の蓄積により、ヒープ領域が徐々に枯渇する
- 継続的な攻撃を受けると、サーバは数分以内に応答不能になる
したがって、以下のようなヘッダーを送信することで、HTTP/2 のストリーム優先順位付けメカニズムを悪用できる。
textpriority: u=-1, q=NaN
この攻撃スクリプトは、22 種類の無効な優先順位パターンを持つ、数千もの同時リクエストを生成し、Tomcat の接続ハンドラーを圧倒する。
エクスプロイト・コード分析
公開されている Python PoC は、非同期リクエストを用いて攻撃効率を最大化するものだ。
pythonasync def send_invalid_priority_request(self, host, port, num_requests, task_id):
async with httpx.AsyncClient(http2=True) as client:
for _ in range(num_requests):
headers = {
"priority": random.choice(self.invalid_priorities),
"user-agent": f"TomcatKiller-{task_id}-{random.randint(1,1e6)}"
}
await client.get(f"https://{host}:{port}/", headers=headers)
主な機能:
- デフォルトで 300以上の同時タスク
- 1タスクあたり 10万リクエスト・スループット
- 基本的な検出を回避するためのランダム化された User-Agent 文字列
緩和策戦略とバージョン比較
| Affected Version | Patched Version | Patch Method |
|---|---|---|
| 9.0.76–9.0.102 | 9.0.104 | Priority header validation rewrite |
| 10.1.10–10.1.39 | 10.1.40 | Memory cleanup hooks added |
| 11.0.0-M2–11.0.5 | 11.0.6 | HTTP/2 stream termination fixes |
推奨される対応策:
- Tomcat 9.0.104/10.1.40/11.0.6 への速やかなアップグレード
- レート制限の実装 (最大 100リクエスト/IP/秒)
- catalina.out で OutOfMemoryError エントリを監視
- WAF ルールを用いたリクエストのブロック
text^priority:\s*(u=[^\d]+|q=[^0-9.]+) を含む
セキュリティ・チームにとって必要なことは、以下を用いての HTTP/2 のサポートの検証である:
bashcurl -vI --http2 https://target:8443/ -o /dev/null
それに加えて、潜在的なエクスプロイトを示す、HTTP/2 200 レスポンスも監視すべきである。
まとめ
この脆弱性が浮き彫りにするのは、企業の Web インフラにおけるプロトコル実装の欠陥のリスクである。
脆弱性 CVE-2025-31650 の CVSSv3.1 スコアは 7.5 (High) であり、有効なエクスプロイトが流通していることから、ユーザー組織にとっては優先的なパッチ適用が必須となる。この脆弱性を放置すると、実行が容易なメモリ枯渇攻撃により、サービスが長期間停止するというリスクが生じる。
Apache Tomcat に存在する、HTTP/2 実装に起因するメモリ・リーク脆弱性は、特に非同期処理が絡む環境では看過できないリスクのようです。PoC の効率性を見ると、速やかなアップデートが必要だと感じます。なお、この脆弱性に関する第一報は、2025/04/29 の「Apache Tomcat の脆弱性 CVE-2025-31650/31651 が FIX:DoS とルール・バイパスの恐れ」です。よろしければ、Tomcat で検索と併せて、ご参照ください。
You must be logged in to post a comment.