Last Updated on 2024-04-15 18:16 by TaTsu
新たな研究により、HTTP/2プロトコルのCONTINUATIONフレームが悪用され、サービス拒否(DoS)攻撃に利用される可能性があることが明らかになった。この技術は、セキュリティ研究者のBartek Nowotarskiによって「HTTP/2 CONTINUATION Flood」と命名され、2024年1月25日にCERT調整センター(CERT/CC)に報告された。
CERT/CCは2024年4月3日のアドバイザリーで、「多くのHTTP/2実装が、単一ストリーム内で送信されるCONTINUATIONフレームの量を適切に制限またはサニタイズしていない」と述べた。攻撃者は、ターゲットサーバーにパケットを送信できる場合、ヘッダーリストに追加されないがサーバーによって処理およびデコードされる、またはヘッダーリストに追加されてメモリ不足(OOM)クラッシュを引き起こすCONTINUATIONフレームのストリームを送信できる。
HTTP/2では、HTTP/1と同様に、リクエストとレスポンス内のヘッダーフィールドが使用される。これらのヘッダーフィールドはヘッダーリストを構成し、その後、ヘッダーブロックにシリアライズされて分割される。ヘッダーブロックはブロックフラグメントに分割され、HEADERまたはCONTINUATIONフレーム内で送信される。
Nowotarskiによると、CONTINUATION Floodは、サーバーの可用性を妨げる可能性があるいくつかのHTTP/2プロトコル実装内の脆弱性クラスであり、2023年10月に明らかになったRapid Reset攻撃と比較してより深刻な脅威をもたらす。攻撃を構成するリクエストはHTTPアクセスログには表示されない。
この脆弱性は、HEADERSおよび複数のCONTINUATIONフレームの不正な処理に関連しており、DoS状態を引き起こす。つまり、攻撃者は脆弱な実装を使用してターゲットサーバーに対して新しいHTTP/2ストリームを開始し、END_HEADERSフラグが設定されていないHEADERSおよびCONTINUATIONフレームを送信し、HTTP/2サーバーが解析してメモリに格納する必要がある終わりのないヘッダーストリームを作成できる。
影響を受けるプロジェクトには、amphp/http(CVE-2024-2653)、Apache HTTP Server(CVE-2024-27316)、Apache Tomcat(CVE-2024-24549)、Apache Traffic Server(CVE-2024-31309)、Envoy proxy(CVE-2024-27919およびCVE-2024-30255)、Golang(CVE-2023-45288)、h2 Rust crate、nghttp2(CVE-2024-28182)、Node.js(CVE-2024-27983)、Tempesta FW(CVE-2024-2758)などが含まれる。ユーザーには、潜在的な脅威を軽減するために、影響を受けるソフトウェアを最新バージョンにアップグレードすることが推奨される。修正がない場合は、サーバー上でHTTP/2を一時的に無効にすることを検討することが勧められる。
【編集者追記】HTTP/2とCONTINUATIONフレームざっくりまとめ
HTTP/2は、Webパフォーマンスを改善するために設計された新しいHTTPプロトコルです。バイナリフレーム形式の採用、多重化、ヘッダ圧縮、サーバプッシュなどの機能により、HTTP/1.1の課題を解決し、Webの高速化を実現しています。
その中でもCONTINUATIONフレームは、大きなヘッダーブロックを分割して送信するために使用されますが、多くの実装で処理に不備があり、新たな脆弱性「HTTP/2 CONTINUATION Flood」を生んでいます。この脆弱性により、サーバーのリソースを枯渇させるDoS攻撃が可能になります。HTTP/2の普及に伴い、プロトコル自体のセキュリティにも注意が必要とされています。
【ニュース解説】
新たな研究により、HTTP/2プロトコルのCONTINUATIONフレームを悪用して、ウェブサーバーに対するサービス拒否(DoS)攻撃が可能であることが明らかになりました。この脆弱性は、セキュリティ研究者のBartek Nowotarskiによって「HTTP/2 CONTINUATION Flood」と名付けられ、CERT調整センター(CERT/CC)に報告されました。
HTTP/2プロトコルでは、リクエストやレスポンスにヘッダーフィールドを使用し、これらはヘッダーリストとして構成されます。ヘッダーリストはヘッダーブロックに分割され、さらにブロックフラグメントに分割されて、HEADERフレームやCONTINUATIONフレームとして送信されます。CONTINUATIONフレームは、ヘッダーブロックフラグメントのシーケンスを続けるために使用されます。
この脆弱性の核心は、HEADERSフレームと複数のCONTINUATIONフレームの不適切な処理にあります。攻撃者は、END_HEADERSフラグが設定されていないHEADERSフレームとCONTINUATIONフレームを送信することで、終わりのないヘッダーストリームを作成し、HTTP/2サーバーがこれを解析してメモリに格納する必要が生じます。これにより、サーバーのクラッシュやパフォーマンスの大幅な低下など、サーバーの可用性に影響を与える可能性があります。
影響を受けるプロジェクトには、Apache HTTP Server、Apache Tomcat、Apache Traffic Server、Envoy proxy、Golang、nghttp2、Node.jsなどが含まれます。これらの脆弱性に対処するためには、影響を受けるソフトウェアを最新バージョンにアップグレードすることが推奨されます。修正がまだ提供されていない場合は、サーバー上でHTTP/2を一時的に無効にすることが勧められます。
この脆弱性の発見は、ウェブサーバーのセキュリティに関して重要な意味を持ちます。サーバーの可用性を確保するためには、適切な対策を講じることが不可欠です。また、このような脆弱性が発見されるたびに、セキュリティ対策の重要性が再確認されます。サーバー管理者や開発者は、常に最新のセキュリティ情報に注意を払い、システムを最新の状態に保つことが求められます。
from New HTTP/2 Vulnerability Exposes Web Servers to DoS Attacks.
“警告:HTTP/2プロトコルの脆弱性がDoS攻撃の道を開く” への1件のコメント
この記事についての私の意見は、インターネットとテクノロジーの世界が常に進化し続けていることを再認識させられる内容だと感じました。普段、私たちが何気なく使用しているインターネットも、裏ではこのように複雑な技術が使われていて、それが悪用される可能性があるんですね。特に、HTTP/2プロトコルのように、日々の生活で広く利用されている技術が攻撃の対象になると、その影響はとても大きいと思います。
記事から、セキュリティは常に更新され続けなければならない分野であることがよくわかります。攻撃者は新しい脆弱性を見つけるために常に新しい方法を模索しており、私たちが使用するソフトウェアやサービスの開発者もそれに迅速に対応していかなければならないということですね。個人的にも、使っているアプリやソフトウェアのアップデートは定期的にチェックして、最新の状態を保つように心がけたいと思います。
また、このような脆弱性が発見された時には、速やかに対処方法が共有されることが大切だと思いました。今回のようにCERT/CCがアドバイザリーを出して、影響を受ける可能性のあるソフトウェアやプロジェクトとその対処法を公開することは、多くの