HTTP/2ラピッド・リセット攻撃 | Cloud-Based Platform AIONCLOUD

Threat Intelligence Report

Get up-to-date information on web application vulnerabilities, attacks, and how to respond.

Back to Threat Intelligence Report

HTTP/2ラピッド・リセット攻撃

概要 :

HTTP/2はHTTP/1.1とは異なり、"Stream multiplexing "機能を利用しており、単一のTCPコネクション内で複数のストリームをオープン/クローズすることができます。このプロトコルで最近発見されたサービス拒否(DoS)の脆弱性CVE-2023-44487の解析をまとめました。

攻撃タイプ:

CVE-2023-44487は、HTTP/2プロトコルをサポートするすべてのウェブサービスを標的としており、主にロードバランサーやプロキシとして動作するサーバーやクラウドサービスに焦点を当てています。大量の RST_STREAM リクエストを送信することで、サーバーの過剰な処理を誘発し、サービス拒否攻撃を引き起こします。

基本的にHTTP/2では、RST_STREAMのようなストリームキャンセルリクエストを受信すると、サーバーはまずHEADER情報を読み込んでストリームをハーフクローズ状態に遷移させ、RST_STREAMを読み込んだ時点でストリームをクローズします。

 

image.png

ソース : https://blog.cloudflare.com/technical-breakdown-http2-rapid-reset-ddos-attack/

しかし、クライアントはRST_STREAMリクエストを制限なく、応答データを待つことなく送信し続けることができる。一方、サーバーは、キャンセルリクエストがあると、新しいストリームデータ構造を割り当て、クエリパースを実行し、ヘッダを解凍し、URLをリソースにマッピングし、重要な処理を行う必要がある。これは、サーバーとクライアントの動作の非対称性につながる。

ソース : https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack?hl=en

 

最終的に、クライアントと比較してサーバーの作業負荷が大きいため、遅延が発生し、DoS攻撃が発生します。

この攻撃は単一のTCPリクエスト内で発生するため、CloudFlareのようなDDoS緩和サービスでさえも完全に緩和することができず、この脆弱性がもたらすリスクの高さを浮き彫りにしています。

さらに、この攻撃のバリエーションには、複数のストリームを同時にキャンセルしたり、サーバーの制限を超える数のストリームを同時に開いたりする方法などがある。

 

対応策:

この脆弱性の悪用を検知した場合、事後対策として、現象が発生したIPをブロックしたり、TCPコネクション全体をブロックしたりすることがある。予防策としては、接続時に許可される同時ストリーム数の制限を実施することが挙げられる。

さらに、この問題に脆弱なサービスやライブラリは、最新バージョンにアップデートする必要がある。

当社のAIWAFおよびAISWG製品では、関連するnghttp2ライブラリを更新し、HTTP/2セッションのRST_STREAM数を制限する機能を開発しました(AIWAF v5.0.2_2ビルド4126以降で利用可能)。

 

結論 :

CVE-2023-44487はHTTP/2プロトコルの構造的な問題に起因する脆弱性で、HTTP/2をサポートするあらゆるサービスで悪用される可能性があります。この脆弱性に対する認識と対応は極めて重要です。

当社のAIWAFやAISWG製品では、関連するサービスやライブラリをアップデートし、この脆弱性を利用したDoS攻撃に対する対応策を確立しています。

Scroll Up