公開日:2019/08/14 最終更新日:2019/08/20

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/08/14
株式会社エヌ・ティ・ティ・データ 該当製品無し 2019/08/14
横河計測株式会社 該当製品無し 2019/08/14

参考情報

  1. Netflix
    NFLX-2019-002: HTTP/2 Denial of Service Advisory
  2. RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)
  3. RFC 7541 - HPACK: Header Compression for HTTP/2
  4. Cloudflare, Inc.
    On the recent HTTP/2 DoS attacks
  5. Akamai Technologies
    HTTP2 Vulnerabilities

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

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
ジェイティ エンジニアリング株式会社のベンダステータスが更新されました