1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

キャッシュバイパスを利用したDDoS攻撃とその対策

1
Posted at

はじめに

AWS SAAの勉強中にCloudFrontのキャッシュヒット率を向上させる方法を知りました。
それをきっかけにキャッシュバイパスを利用したDDoSというものを知り、調べたのですが記事がほとんどヒットしなかったので今回記事を作成しました。

キャッシュバイパスを利用したDDoS攻撃とは

キャッシュをヒットさせずに直接オリジンにリクエストを送りまくる攻撃のことです。

例えば、CDNのキャッシュ対象が

https://example.com/api/products

だったとして、攻撃者が以下のようにリクエストを送ったとします。

https://example.com/api/products?x=1
https://example.com/api/products?x=2
https://example.com/api/products?x=3

すると、x=1やx=2というクエリパラメータはこのアプリに関係のないパラメータなので、上の三つのリクエストは全てhttps://example.com/api/productsと同じ結果を返します。
ですが、URL全体をキャッシュキーとして扱っている場合、別のリクエストとして受け取ってしまうので、キャッシュではなくオリジンにアクセスして結果を返してしまいます。

このリクエストをxの値を変えて大量にリクエストを送ると、キャッシュがないので直接オリジンサーバーに行き、オリジンサーバーに負荷がかかり、DoS状態になります。

対策方法

  • オリジンが返すオブジェクトのバージョンが実際に変化する(一意のオブジェクトを返す)パラメータのみを転送するように設定する
  • 不要なクエリパラメータを削除する

参考文献

おわりに

実際のプロダクトではこれが対策されているのか気になりました。
クエリパラメータごとにキャッシュを残すのであればかなり不便な気がするのでやってない方がおかしいのではと思います。WAFとかが勝手にやってくれるのかな。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?