ニュース

「Apache」「Node.js」も ~多くの実装が影響を受ける脆弱性「HTTP/2 CONTINUATION Flood」

「Rapid Reset」脆弱性と比べても深刻

多くの実装が影響を受ける「HTTP/2 CONTINUATION Flood」脆弱性

 複数のHTTP/2実装でCONTINUATIONフレームの取り扱いに不備があることが4月3日、セキュリティ研究者のBartek Nowotarski氏によって明らかにされた。サービス運用妨害(DoS)攻撃につながる可能性のある脆弱性で、「HTTP/2 CONTINUATION Flood」と名付けられている。

 HTTP/2プロトコルはリクエストやレスポンスを複数の「フレーム」からなる「ストリーム」としてやりとりする設計になっており、それらに含まれるヘッダー情報は「HEADERS」フレームで送るルールとなっている。もしヘッダー情報が一つの「HEADERS」フレームに収まらない場合は、後続の情報を「CONTINUATION」フレームで送信し、最後のフレームには「END_HEADERS」フラグを含める仕組みだ。

 しかし、HTTP/2実装の多くにはこの仕組みに不備があり、「END_HEADERS」フラグがない場合を十分に考慮していない。そのため、無限のフレームを送り付けてCPUリソースやメモリを枯渇させたり、サーバーをクラッシュさせることができるという。これは以前に報告された「Rapid Reset」脆弱性と比べても深刻な脅威となりうる。

 執筆時現在、影響が確認されているのは以下の実装だ。

  • Node.js HTTP/2 server(CVE-2024-27983
  • Envoy HTTP/2 codec(CVE-2024-27919、CVE-2024-30255)
  • Tempesta FW(CVE-2024-2758)
  • amphp/http(CVE-2024-2653)
  • Go net/http および net/http2(CVE-2023-45288
  • nghttp2(CVE-2024-28182)
  • Apache httpd(CVE-2024-27316
  • Apache Traffic Server(CVE-2024-31309)

 ベンダーからセキュリティアップデートが提供されている場合は、できるだけ早く適用するべきだろう。