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は開発者の提供する情報を確認し、必要に応じてアップデートを適用することを呼びかけている。

マイナビニュース

「脆弱性」をもっと詳しく

「脆弱性」のニュース

「脆弱性」のニュース

トピックス

x
BIGLOBE
トップへ