Slow Read DoS攻撃

提供: セキュリティ
2015年6月14日 (日) 21:42時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

Slow Read DoS攻撃(スローリードDoS) は、DoS攻撃のひとつです。ウェブサーバからのレスポンスをわざと読み取る時間を伸ばすことで、サーバの接続数を使い切る攻撃です。ウェブサーバが接続数を使いきってしまうと、それ以上、サービスが継続ができず、DoS状態に陥ってしまいます。これに似た攻撃として、攻撃ツールとして有名な Slowloris は、リクエストを送り続ける攻撃でした。

読み方

Slow Read DoS攻撃
すろぅ りーど どす こうげき
Slow DoS攻撃
すろぅ どす こうげき
スローリードDoS
すろー りーど どす

概要

Slow Read DoS攻撃 は、L7(レイヤー7, 7層, アプリケーション層)に対するDoS攻撃のひとつです。

Slow Read DoS攻撃は、ウェブクライアント がウェブサーバ からのレスポンスを読み取る時間を引き伸ばすことで、サーバの接続数を使い切る攻撃です。

Slow HTTP Headers攻撃(スローHTTPヘッダ) (Slowloris )
HTTPリクエストをスローダウンさせる
Slow HTTP POST攻撃(スローHTTP POST)
HTTPリクエストをスローダウンさせる。POSTリクエスト全体をまとめて、1つのパケットで送らずに、分割して、1バイトずつ、ゆっくり送信します。
Slow Read DoS攻撃
HTTPレスポンスをスローダウンさせる。1バイトから32バイトの間で、ランダムにウィンドウサイズを通知し、レスポンスの受け取る時間を意図的に引き伸ばします。

クライアントとサーバのコネクションを可能な限り長く維持するために、サーバの送信バッファを常に送信待ちのデータチャンクでいっぱいにしておくことが必要です。 クライアントの受信バッファサイズ(ウィンドウサイズ)をサーバの送信バッファサイズよりも小さくすることで実現します。

この攻撃は、TCP のウィンドウサイズを利用します。攻撃者は、大きなサイズのレスポンスデータを強制的に送信させるため、128Kbit よりも大きなリソースをリクエストします。

Slowloris や Slow POST と比較し、 Slow Read DoS攻撃は、目立ちにくく、発見が難しいとされています。

このスローリクエストDoS攻撃は、手軽に誰でも行えるため、対策をしておくのが望ましいです。

テスト方法

HTTP DoS テストツール slowhttptest は、 Slow Read DoS攻撃 をサポートしています。

スローリードの対策

  • WAF(Web Application Firewall)
    • スローリードを見極めるアルゴリズムを実装している製品があります。モバイルなどの純粋に通信が遅いものと判別してくれます。
  • Apache HTTP ServerならModSecurityを利用できます。ModSecurityは、ソケットのreadやwriteのステートの維持をどの程度の長さにするかコントロールできます。

これらの3つの状態がみられるのであれば、サーバは、Slow Read DoS攻撃を受けています。

ModSecurity

ModSecurityのv2.6で SecWriteStateLimit ディレクティブが追加されました。

SecWriteStateLimit は、SERVER_BUSY_WRITE ステートの(IPアドレスあたりの)スレッドの同時接続数を制限します。

modsecurity_crs_11_slow_dos_protection.conf

SecWriteStateLimit 100

スローリードの検出

通信からどのようにスローリードを見極めたら良いでしょうか?

  • サーバが受け付けた初期のSYNパケットの普通ではない通知されたウィンドウサイズ
  • サーバがある程度の時間以内(30秒以上は十分だ)に [RSTパケット]]やFINパケットを送信しない。
  • コネクションの永続化(KeepAlive)とHTTPパイプライニングが有効である

テストツール

Slow Read DoS攻撃のテストツールに slowhttptest があります。このツールを用いて、あなたのウェブサーバをテストできます。

このツールを利用して、他人のサーバを攻撃したり、自信の本番サービスをテストするべきではありません。

関連項目




スポンサーリンク