セキュリティ専門家のBartek Nowotarski氏が実施した新たな調査により、HTTP/2プロトコルの潜在的な脆弱性が明らかになった。. 継続洪水として知られる, この脆弱性を利用することで、攻撃者は サービス拒否 (DoS) 攻撃 サーバーにCONTINUATIONフレームを大量に送信することで.
CONTINUATION 洪水脆弱性の説明
問題は、HTTP/2実装が単一ストリーム内のCONTINUATIONフレームをどのように処理するかにある。. 多くの実装では、送信されるCONTINUATIONフレームの数を適切に制限またはサニタイズしていない。, 攻撃者がフレームのストリームでサーバーを圧倒し、メモリ枯渇やクラッシュを引き起こす可能性がある。.
HTTP/2, 前身のHTTP/1と同様, リクエストとレスポンス内のヘッダーフィールドを使用する. これらのヘッダーはヘッダーブロックにシリアル化されます, これらはCONTINUATIONフレーム内のブロックフラグメントとして送信される。.
脆弱性はどのように悪用されるのか
攻撃者は、END_HEADERSフラグを設定せずにCONTINUATIONフレームの連続ストリームを送信することでこの脆弱性を悪用することができます。, サーバーが過剰な量のヘッダーデータを解析してメモリに保存する原因となる.
この脆弱性は深刻な脅威をもたらす, 単一のマシンまたはTCP接続がサーバーの可用性を妨げる可能性がある, クラッシュやパフォーマンスの低下につながる. 攻撃はHTTPアクセスログには表示されない可能性がある, 検出が困難になる.
影響を受ける実装
いくつかのHTTP/2実装が影響を受ける, Apache HTTP Serverなどのプロジェクトを含む, Node.js, およびGolang. リスクを軽減するために、影響を受けるソフトウェアをアップグレードすることをお勧めします。. 修正が利用できない場合, HTTP/2を一時的に無効にすることで、この脆弱性から保護することができます。.
さまざまな実装における脆弱性を強調した複数のCVEリストを以下に示します。, CERTコーディネーションセンターの アドバイザリー.
CVE-2024-27983
攻撃者は、いくつかのHTTP/2フレームを含む限られた量のHTTP/2フレームパケットを送信することで、Node.js HTTP/2サーバーを使用不可にすることができます。. この欠陥により、データが nghttp2 リセット後のメモリ. これは、HTTP/2 CONTINUATIONフレームのヘッダーがサーバーに送信され、TCP接続がクライアントによって突然閉じられた場合に発生する可能性があります。, ヘッダーフレームがまだ処理されている間にHttp2Sessionデストラクタをトリガーする, 競合状態を引き起こす.
CVE-2024-27919
特使の oghttp ヘッダーマップの制限を超えた場合、コーデックはリクエストをリセットできません. これにより、攻撃者はEND_HEADERSビットが設定されていないCONTINUATIONフレームのシーケンスを送信できるようになります。, 無制限のメモリ消費につながる.
CVE-2024-2758
Tempesta FW レート制限はデフォルトでは有効になっていません. 空のCONTINUATIONフレーム攻撃を捕捉するには大きすぎるか、通常のHTTPリクエストを適切に処理するには小さすぎるかのどちらかです。.
CVE-2024-2653
php/http HTTP/2 CONTINUATION フレームを無制限のバッファに収集し、END_HEADERS フラグを受信するまでヘッダーのサイズ制限をチェックしません。, メモリ不足が発生する (オーム) クラッシュ. amphp/httpクライアント と amphp/http-サーバー パッチ未適用のamphp/httpバージョンで使用すると間接的に影響を受ける. HTTP/2 をサポートする amphp/http-client の以前のバージョン (v4.0.0-rc10から 4.0.0) 直接影響を受ける.
CVE-2023-45288
Goパッケージ ネット/http と ネット/http2 HTTP/2リクエストで読み取られるCONTINUATIONフレームの数を制限しない, 攻撃者が単一のリクエストに対して過度に大きなヘッダーセットを提供できる, 過剰なCPU消費につながる.
CVE-2024-28182
を使用した実装 nghttp2 ライブラリはCONTINUATIONフレームを受信し続け、ストリームをリセットする前にこの情報を表示できるようにアプリケーションにコールバックしません。, その結果、 サービス拒否 (DoS) 脆弱性.
CVE-2024-27316
END_HEADERSフラグが設定されていないHTTP/2 CONTINUATIONフレームは、攻撃者によってApache Httpd実装に継続的に送信される可能性があります。, リクエストを早期に終了できない.
CVE-2024-31309
HTTP/2 CONTINUATION DoS攻撃により、Apache Traffic Serverがサーバー上のリソースをより多く消費する可能性があります。. バージョン 8.0.0 終えた 8.1.9 とから 9.0.0 終えた 9.2.3 影響を受ける.
CVE-2024-30255
EnvoyバージョンのHTTP/2プロトコルスタック 1.29.2 またはそれ以前のバージョンでは、CONTINUATIONフレームの氾濫によりCPU枯渇の危険にさらされている。. EnvoyのHTTP/2コーデックにより、クライアントは無制限の数のCONTINUATIONフレームを送信できる。, Envoyのヘッダーマップの制限を超えた後でも. これにより、攻撃者はEND_HEADERSビットが設定されていないCONTINUATIONフレームのシーケンスを送信できるようになります。, CPU使用率が約 1 300Mbit/sのトラフィックあたりコア.