JVNVU#98433488
HTTP/2 の実装に対するサービス運用妨害 (DoS) 攻撃手法
HTTP/2 実装に対する、様々なサービス運用妨害 (DoS) 攻撃手法が報告されています。
- HTTP/2 実装
HTTP/2 通信の処理は、HTTP/1.1 通信の処理と比較して多くのリソースが必要であり、RFC7540 の Security Considerations セクションにおいても、サービス運用妨害 (DoS) 状態に関する検討が行われています(10.5. Denial-of-Service Considerations)。しかし、どのように対策すべきかは実装者にまかされており、これが以下の問題につながっています。
Data Dribble - CVE-2019-9511
攻撃者は複数のストリームを通じて大きなサイズのデータをリクエストし、ウィンドウサイズやストリームの優先順位を操作して、データが 1 バイト単位で処理されるように仕向けます。これらのデータを効率的に処理できなければ、CPU, メモリ、もしくはその両方が大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Ping Flood - CVE-2019-9512
攻撃者は HTTP/2 の ping フレームを連続的に送信し、通信相手はそれらに対する応答フレームを返そうとします。これらの応答フレームを効率的に処理できなければ、CPU, メモリ、もしくはその両方が大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Resource Loop - CVE-2019-9513
攻撃者は複数のリクエストストリームを作成し、連続的にストリームの優先順位の変更を行います。この変更への対応を効率的に処理できなければ、CPU リソースが大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Reset Flood - CVE-2019-9514
攻撃者はいくつものストリームをオープンし、各ストリーム毎に無効なリクエストを送信して、RST_STREAM フレームを返すように仕向けます。これら複数の RST_STREAM フレームを効率的に処理できなければ、CPU, メモリ、もしくはその両方が大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Settings Flood - CVE-2019-9515
攻撃者は大量の SETTINGS フレームを送信します。RFC では、個々の SETTINGS フレームに対して応答を返すことと規定されており、空の SETTINGS フレーム を送信することは、ping フレームを送信することと同等です。これらを効率的に処理できなければ、CPU, メモリ、もしくはその両方が大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
0-Length Headers Leak - CVE-2019-9516
攻撃者は長さ 0 のヘッダ名およびヘッダ値を含む HEADERS フレームを大量に送信します。また、Huffman 符号化も行うかもしれません。いくつかの HTTP/2 実装では、これらのヘッダ情報を保持するためのメモリを確保し、セッションが終了するまで維持し続けます。これらの処理によってメモリが大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Internal Data Buffering - CVE-2019-9517
攻撃者は HTTP/2 ストリームをオープンしてそのウインドウサイズを無制限に設定するとともに、TCP レベルではウインドウサイズを制限し、応答データを返せない状態にします。その後で大きなサイズのデータが応答となるようなリクエストを送信します。これらの応答処理によって、CPU, メモリ、もしくはその両方が大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
Empty Frame Flooding - CVE-2019-9518
攻撃者は、中身が空で END_STREAM フラグをつけていない状態のフレームを大量に送信します。これらのフレームには、DATA フレーム、HEADERS フレーム、CONTINUATION フレーム、PUSH_PROMISE フレームなどが使われます。これらのフレームを処理するために CPU リソースが大量に消費され、サービス運用妨害 (DoS) 状態が引き起こされる可能性があります。
これらの攻撃手法を使って、Distributed DoS (DDoS) 攻撃が行われる可能性があります。
アップデートする
各 HTTP/2 実装者が提供するアップデートを適用してください。
ベンダ | ステータス | ステータス 最終更新日 |
ベンダの告知ページ |
---|---|---|---|
ジェイティ エンジニアリング株式会社 | 該当製品無し | 2019/08/19 | |
富士通株式会社 | 該当製品無し | 2019/09/10 | |
日本電気株式会社 | 該当製品あり | 2020/07/08 | |
株式会社エヌ・ティ・ティ・データ | 該当製品無し | 2019/08/14 | |
横河計測株式会社 | 該当製品無し | 2019/08/14 |
-
CERT/CC Vulnerability Note VU#605641
HTTP/2 implementations do not robustly handle abnormal traffic and resource exhaustion -
Netflix
NFLX-2019-002: HTTP/2 Denial of Service Advisory -
RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)
-
RFC 7541 - HPACK: Header Compression for HTTP/2
-
Cloudflare, Inc.
On the recent HTTP/2 DoS attacks -
Akamai Technologies
HTTP2 Vulnerabilities
JPCERT 緊急報告 |
|
JPCERT REPORT |
|
CERT Advisory |
|
CPNI Advisory |
|
TRnotes |
|
CVE |
CVE-2019-9511 |
CVE-2019-9512 |
|
CVE-2019-9513 |
|
CVE-2019-9514 |
|
CVE-2019-9515 |
|
CVE-2019-9516 |
|
CVE-2019-9517 |
|
CVE-2019-9518 |
|
JVN iPedia |
- 2019/08/16
- [ベンダ情報] に Apple のリンクを追加しました。
- 2019/08/20
- ジェイティ エンジニアリング株式会社のベンダステータスが更新されました
- 2019/08/23
- [参考情報] を追加しました
- 2019/09/10
- 富士通株式会社のベンダステータスが更新されました
- 2019/11/27
- 日本電気株式会社のベンダステータスが更新されました
- 2020/07/08
- 日本電気株式会社のベンダステータスが更新されました