HTTP/2プロトコルの一部実装に脆弱性、DoS攻撃でシステム停止のリスク
マイナビニュース2024年4月8日(月)9時35分
CERT Coordination Center (CERT/CC, Carnegie Mellon University)は4月3日(米国時間)、「VU#421644 - HTTP/2 CONTINUATION frames can be utilized for DoS attacks」において、HTTP/2プロトコルのCONTINUATIONフレームに脆弱性が存在するとして、注意を喚起した。この脆弱性を悪用されると、攻撃者によってサービス運用妨害(DoS: Denial of Service)攻撃を実行される危険性がある。
○HTTP/2プロトコルの脆弱性
HTTP/2プロトコルは従来のHTTP/1.1の問題点を克服するため、1つのコネクション上で複数のリクエストおよびレスポンスを可能にするストリームと呼ばれる多重化の仕組みが実装されている。各ストリームはそれぞれリクエストとレスポンスを処理することができる。
これらストリームはフレームと呼ばれる単位でデータをやりとりするが、フレームには0から9まで10種類のタイプが規定されており、今回脆弱性が存在すると指摘されたCONTINUATIONフレームは、この9番のフレームとなる。
CONTINUATIONフレームはヘッダー情報を送信するHEADERSフレーム、またはサーバプッシュストリームの予約に使用するPUSH_PROMISEフレームの1度に送信できなかったフレームを継続するために使用される。フレームには8bitのフラグが用意されており、このフラグのEND_HEADERSがセットされているか否かでフレームの終わりを識別する。
今回発見された脆弱性は、単一ストリーム内で送信できるCONTINUATIONフレーム数に上限を設けていない不具合とされる。このような実装のHTTP/2サーバに対し、攻撃者はEND_HEADERSをセットせずにCONTINUATIONフレームを繰り返し送信することでサーバリソースを無限に消費させることができる。その結果、サーバはメモリー不足に陥りシステムの停止に至る。
この脆弱性および同種の脆弱性は実装ごとに複数の脆弱性情報データベース(CVE: Common Vulnerabilities and Exposures)に登録されている。それらの一覧は次のとおり。
CVE-2024-27983 - Node.js HTTP/2 サーバ
CVE-2024-27919、CVE-2024-30255 - Envoy
CVE-2024-2758 - Tempesta FW
CVE-2024-2653 - amphp/http
CVE-2023-45288 - Goのnet/httpおよびnet/http2パッケージ
CVE-2024-28182 - nghttp2
CVE-2024-27316 - Apache HTTP Server
CVE-2024-31309 - Apache Traffic Server
○脆弱性の影響を受ける製品
脆弱性の影響を受けるとされる製品とバージョンは次のとおり。
amphp/http-client v4.0.0-rc10からv4.0.0までのバージョン
amphp/http 1.7.2および、2.0.0から2.1.0までのバージョン
Apache HTTP Server 2.4.58およびこれ以前のバージョン
Arista Networksの複数の製品(参考:「Security Advisory 0094 - Arista」)
Go(net/httpパッケージ) 1.21.9より前、または1.22.0-0から1.22.2より前のバージョン
Go(golang.org/x/net/http2パッケージ) v0.23.0より前のバージョン
Tempesta FW 0.7.1より前のバージョン
Node.js Version 21.7.2より前のバージョン
Node.js Version 20.12.1より前のバージョン
Node.js Version 18.20.1より前のバージョン
○脆弱性が修正された製品
脆弱性が修正された製品とバージョンは次のとおり。
amphp/http-client v4.1.0-rc1およびこれ以降のバージョン
amphp/http 1.7.3、2.1.1およびこれ以降のバージョン
Apache HTTP Server 2.4.59
Go(net/httpパッケージ) 1.22.2
Go(golang.org/x/net/http2パッケージ) v0.23.0
Tempesta FW 0.7.1
Node.js Version 21.7.2
Node.js Version 20.12.1
Node.js Version 18.20.1
上記の一覧はHTTP/2プロトコルをサポートするその他の製品の安全を示すものではない。影響を受けないと公表している製品や調査中の製品も存在するため、管理している製品が影響を受けるか否かは開発者に問い合わせるか、または発表を確認する必要がある。CERT/CCは開発者の提供する情報を確認し、必要に応じてアップデートを適用することを呼びかけている。
○HTTP/2プロトコルの脆弱性
HTTP/2プロトコルは従来のHTTP/1.1の問題点を克服するため、1つのコネクション上で複数のリクエストおよびレスポンスを可能にするストリームと呼ばれる多重化の仕組みが実装されている。各ストリームはそれぞれリクエストとレスポンスを処理することができる。
これらストリームはフレームと呼ばれる単位でデータをやりとりするが、フレームには0から9まで10種類のタイプが規定されており、今回脆弱性が存在すると指摘されたCONTINUATIONフレームは、この9番のフレームとなる。
CONTINUATIONフレームはヘッダー情報を送信するHEADERSフレーム、またはサーバプッシュストリームの予約に使用するPUSH_PROMISEフレームの1度に送信できなかったフレームを継続するために使用される。フレームには8bitのフラグが用意されており、このフラグのEND_HEADERSがセットされているか否かでフレームの終わりを識別する。
今回発見された脆弱性は、単一ストリーム内で送信できるCONTINUATIONフレーム数に上限を設けていない不具合とされる。このような実装のHTTP/2サーバに対し、攻撃者はEND_HEADERSをセットせずにCONTINUATIONフレームを繰り返し送信することでサーバリソースを無限に消費させることができる。その結果、サーバはメモリー不足に陥りシステムの停止に至る。
この脆弱性および同種の脆弱性は実装ごとに複数の脆弱性情報データベース(CVE: Common Vulnerabilities and Exposures)に登録されている。それらの一覧は次のとおり。
CVE-2024-27983 - Node.js HTTP/2 サーバ
CVE-2024-27919、CVE-2024-30255 - Envoy
CVE-2024-2758 - Tempesta FW
CVE-2024-2653 - amphp/http
CVE-2023-45288 - Goのnet/httpおよびnet/http2パッケージ
CVE-2024-28182 - nghttp2
CVE-2024-27316 - Apache HTTP Server
CVE-2024-31309 - Apache Traffic Server
○脆弱性の影響を受ける製品
脆弱性の影響を受けるとされる製品とバージョンは次のとおり。
amphp/http-client v4.0.0-rc10からv4.0.0までのバージョン
amphp/http 1.7.2および、2.0.0から2.1.0までのバージョン
Apache HTTP Server 2.4.58およびこれ以前のバージョン
Arista Networksの複数の製品(参考:「Security Advisory 0094 - Arista」)
Go(net/httpパッケージ) 1.21.9より前、または1.22.0-0から1.22.2より前のバージョン
Go(golang.org/x/net/http2パッケージ) v0.23.0より前のバージョン
Tempesta FW 0.7.1より前のバージョン
Node.js Version 21.7.2より前のバージョン
Node.js Version 20.12.1より前のバージョン
Node.js Version 18.20.1より前のバージョン
○脆弱性が修正された製品
脆弱性が修正された製品とバージョンは次のとおり。
amphp/http-client v4.1.0-rc1およびこれ以降のバージョン
amphp/http 1.7.3、2.1.1およびこれ以降のバージョン
Apache HTTP Server 2.4.59
Go(net/httpパッケージ) 1.22.2
Go(golang.org/x/net/http2パッケージ) v0.23.0
Tempesta FW 0.7.1
Node.js Version 21.7.2
Node.js Version 20.12.1
Node.js Version 18.20.1
上記の一覧はHTTP/2プロトコルをサポートするその他の製品の安全を示すものではない。影響を受けないと公表している製品や調査中の製品も存在するため、管理している製品が影響を受けるか否かは開発者に問い合わせるか、または発表を確認する必要がある。CERT/CCは開発者の提供する情報を確認し、必要に応じてアップデートを適用することを呼びかけている。
「脆弱性」をもっと詳しく
「脆弱性」のニュース
-
Google Pixelに悪用確認済みの脆弱性と緊急7件の脆弱性、アップデートを6月15日9時8分
-
Androidに3件の緊急の脆弱性、アップデートを - Google Pixelは攻撃を受けている可能性6月14日7時35分
-
スリランカ向け支援、IMFが2回目の審査承認 経済の脆弱性指摘6月13日20時1分
-
情報漏洩の80%はActive Directoryが原因、4,000万件超の脆弱性を分析6月13日9時35分
-
人気ある生体認証デバイスに脆弱性、細工したQRコードで認証可能6月13日8時51分
-
中国が支援するサイバー攻撃、FortiGateの脆弱性を悪用して2万台超を侵害6月13日7時28分
-
クラウドストレージ脆弱性診断提供開始のお知らせ6月12日17時46分
-
Microsoft、2024年6月の月例更新 - 49件の脆弱性への対応が行われる6月12日16時9分
-
Microsoft、脆弱性修正する6月の累積更新プログラムを配信開始6月12日12時10分
-
脆弱性管理クラウド「yamory」 「AWS Summit Japan」出展および登壇のお知らせ6月12日11時16分
ITニュースランキング
-
1すかいらーく、「生の鶏肉」提供との投稿拡散とんから亭での不祥事を謝罪「健康被害の報告なし」 ねとらぼ
-
2メルカリで「doorzo」というアカウントに購入された! 怪しい相手でないか心配…取引しても大丈夫? All About
-
3実はメルカリで出品してはいけないもの5選! “夏の風物詩”もNGって本当?【メルカリのプロが解説】 All About
-
4ペンタックスの“新作フィルムカメラ”登場 ハーフサイズコンパクト「PENTAX 17」 ITmedia NEWS
-
5携帯契約の本人確認、“オンライン”はマイナカードのICチップ読み取りに一本化 対面もマイナカード“など”のIC読み取りが義務化 ITmedia NEWS