DDoS attacks

新たに発見されたHTTP/2プロトコルの脆弱性「CONTINUATION Flood」は、サービス拒否(DoS)攻撃につながる可能性があり、一部の実装では単一のTCP接続でウェブサーバーをクラッシュさせる。

HTTP/2は、2015年に標準化されたHTTPプロトコルのアップデートであり、効率的なデータ伝送のためのバイナリ・フレーミング、単一の接続で複数のリクエストとレスポンスを可能にするマルチプレクシング、オーバーヘッドを削減するヘッダー圧縮を導入することで、ウェブのパフォーマンスを向上させるように設計されている。

新たなCONTINUATION Floodの脆弱性は、研究者のBarket Nowotarski氏によって発見されたもので、HTTP/2のCONTINUATIONフレームの使用に関するもので、プロトコルの多くの実装で適切に制限またはチェックされていないという。

HTTP/2メッセージには、ブロックに直列化されたヘッダーとトレーラーのセクションが含まれます。これらのブロックは送信のために複数のフレームに分割することができ、CONTINUATION フレームはストリームをつなぎ合わせるために使用されます。

多くの実装で適切なフレームチェックが省略されているため、脅威行為者は ‘END_HEADERS’ フラグを設定しないだけで、非常に長いフレーム列を送信できる可能性があり、これらのフレームが処理される際にメモリ不足によるクラッシュやCPUリソースの枯渇によるサーバー停止につながる。

研究者は、メモリ不足の状態は、いくつかの実装では単一のHTTP/2 TCP接続を使用してサーバーのクラッシュにつながる可能性があると警告している。

“メモリ不足は、おそらく最も退屈でありながら深刻なケースです。奇妙なロジックもなければ、興味深いレースコンディションもない。

「OOMを許容する実装は、単にCONTINUATIONフレームを使用して構築されたヘッダーリストのサイズを制限しなかった。

“ヘッダータイムアウトのない実装は、サーバーをクラッシュさせるためにたった1つのHTTP/2接続を必要とした。”

Endless stream of frames
DoSを引き起こすCONTINUATIONフレームのエンドレスストリーム (nowotarski.info)

本日発表されたCERT Coordination Center(CERT-CC)からのアラートには、これらの攻撃に対して脆弱な異なる HTTP/2 実装に対応する複数の CVE ID が記載されています。

これらの実装は、以下に説明するように、メモリリーク、メモリ消費、CPU 消耗を含む様々なレベルのサービス拒否攻撃を可能にします:

  • CVE-2024-27983:Node.js HTTP/2 サーバに影響。いくつかの HTTP/2 フレームを送信すると、 レースコンディションによりメモリリークが発生し、DoS の可能性があります。
  • cve-2024-27919:Envoy の oghttp コーデックに影響。ヘッダマップの制限を超えた際にリクエストをリセットしないため、 無制限にメモリを消費します。
  • CVE-2024-2758: Tempesta FW に関連しています。レート制限が空の CONTINUATION フレーム攻撃を効果的に防いでおらず、 DoS を許す可能性があります。
  • CVE-2024-2653: amphp/http に影響します。ヘッダサイズの制限を超えると OOM クラッシュの危険性があります。
  • CVE-2023-45288: Go の net/http および net/http2 パッケージに影響します。攻撃者が任意の大きさのヘッダを送信することを可能にし、 CPU を過剰に消費させます。
  • CVE-2024-28182:nghttp2 ライブラリを使用した実装で、CONTINUATION フレームの受信を継続し、 適切なストリームリセットコールバックがない場合に DoS を引き起こすものがありました。
  • cve-2024-27316: Apache Httpd に影響します:Apache Httpd に影響。END_HEADERS フラグが設定されていない CONTINUATION フレームが送信され続ける可能性があり、 リクエストを不正に終了させます。
  • CVE-2024-31309: Apache Traffic Server に影響。HTTP/2 CONTINUATION DoS 攻撃により、サーバーのリソースが過剰に消費される可能性があります。
  • CVE-2024-30255:バージョン 1.29.2 以前の Envoy に影響します。CONTINUATION フレームの洪水によって CPU が消耗し、 サーバリソースが著しく消費される脆弱性があります。

深刻な影響

これまでのところ、CERT-CCによると、上記のCVEの少なくとも1つの影響を受けていることを確認しているベンダーおよびHTTP/2ライブラリは、Red Hat、SUSE Linux、Arista Networks、Apache HTTP Server Project、nghttp2、Node.js、AMPHP、Go Programming Languageである。

Nowotarski氏によると、この問題は、大手クラウドサービスプロバイダーが昨年10月に明らかにした「HTTP/2 Rapid Reset」攻撃よりも深刻で、2023年8月以降、活発な悪用が行われているという。

「CloudflareレーダーがHTTPトラフィックデータをインターネット転送全体の70%以上と推定していることや、影響を受けたプロジェクトの重要性を考えると、インターネットの大部分は簡単に悪用できる脆弱性の影響を受けたと考えることができると思います:多くの場合、単一のTCP接続だけでサーバーをクラッシュさせるのに十分でした」とNowotarski氏は警告している。

HTTP/2 adoption in the last 12 months
過去12ヶ月におけるHTTP/2の採用状況(Cloudflare)

また研究者は、HTTP/2に関する適切な知識がなければ、サーバー管理者がこの問題をデバッグし緩和するのは複雑であると警告している。

というのも、サーバーで高度なフレーム解析が有効になっていなければ、悪意のあるリクエストはアクセスログに記録されないからだ。

脅威行為者は一般的に、新たに発見されたDDoSテクニックを監視し、ストレッサーサービスや攻撃に使用しているため、脆弱性が積極的に悪用される前に、影響を受けるサーバーやライブラリをアップグレードすることが重要です。