Python製の非同期ネットワーク基盤TwistedのHTTP/2サーバーに、認証不要の遠隔サービス拒否脆弱性が確認された。ストリームを直後にリセットする要求を繰り返すことで、同時ストリーム数の制限を回避してCPU処理を増幅できる。開発元はHIGH/CVSS 7.5と評価し、修正を含む26.10.0rc1を公開している。
30秒でわかる / THE SIGNAL
Python製の非同期ネットワーク基盤TwistedのHTTP/2サーバーに、認証不要の遠隔サービス拒否脆弱性が確認された。ストリームを直後にリセットする要求を繰り返すことで、同時ストリーム数の制限を回避してCPU処理を増幅できる。開発元はHIGH/CVSS 7.5と評価し、修正を含む26.10.0rc1を公開している。
HTTP/2のリセットが要求処理より後に扱われる
Twistedの公式セキュリティ勧告GHSA-vpp8-g58w-m8mpによると、twisted.webのHTTP/2サーバーでは、要求ヘッダーでストリームの終了を宣言した直後にRST_STREAMを送ると、リセット処理より先に要求がルーティングされ、レンダリングされる。要求はキャンセルされているにもかかわらず、サーバー側では処理負荷が発生する。
同時ストリーム数制限を回避する仕組み
リセットされたストリームは解放されるため、サーバーが設けた同時ストリーム数の上限に蓄積されない。公式勧告は、単一接続からこの操作を繰り返すだけでCPUコアを飽和させ得ると説明する。認証は不要で、機密情報の窃取や任意コード実行ではなく、可用性を狙うサービス拒否の問題だ。過去のHTTP/2 Rapid Reset問題CVE-2023-44487と同じ攻撃類型に属するが、本件のGHSAを同CVEと同一視してはならない。
影響範囲と修正の公開状況
公式勧告はTwisted 26.4.0以前を影響範囲とし、26.4.0での確認を記載している。修正版として挙げられる26.10.0rc1は2026年10月22日公開のプレリリースで、リリースノートにもGHSA-vpp8-g58w-m8mpの修正が明記されている。通常の安定版とは異なるため、導入時は環境での互換性・運用方針を確認し、正式版の公開状況も継続確認する必要がある。
運用上の対策と留保
TwistedでHTTP/2を受け付ける環境は利用版を確認し、修正済みリリースへの移行計画を立てる。すぐにプレリリースを適用できない場合、HTTP/2公開経路の必要性やフロントプロキシ側の接続・要求制御を点検することが暫定的なリスク低減策となるが、公式修正の代替として保証されたものではない。開発元の深刻度はHIGH、CVSS v3.1 7.5。実環境での悪用は公式勧告では確認されておらず、未確認とする。