LoginSignup
0
0

AWS WAF の CrossSiteScripting_BODY ルールでバイナリデータを格納したリクエストがブロックされる

Last updated at Posted at 2023-12-30

はじめに

Amazon API Gateway の REST API に、AWS WAF のコアルールセット(CRS)マネージドルールグループを設定しています。

リクエストボディにバイナリデータを格納してこの API をリクエストすると、コアルールセット(CRS)マネージドルールグループに含まれるCrossSiteScripting_BODYルールでリクエストがブロックされることがありました。

なぜバイナリデータでクロスサイトスクリプティング?と疑問に思い、色々調べてわかったことをまとめます。

コアルールセット(CRS)マネージドルールグループとは

一般的な Web アプリに必要になるであろうファイアウォールのルールを、ひとまとめにしてくれている AWS WAF のマネージドルールグループです。

公式ドキュメントには「すべての AWS WAF ユースケースでこのルールグループを使用することを検討してください」と記載されており、AWS WAF を使う場合はとりあえずこのルールグループを設定しておくと良さそうです。

今回はリージョン Web ACL に本ルールグループを設定しています。

CrossSiteScripting_BODY ルールとは

AWS WAF クロスサイトスクリプティング攻撃ルールステートメントを用いて、リクエストボディに一般的なクロスサイトスクリプティングパターンが含まれていないかを検査するルールです。

リージョン Web ACL の場合、検査の対象はリクエストボディに格納されたデータの先頭から 8KB 分のみになります。

なぜブロックされたのか

AWS re:Post に答えがありました。

要約すると「ファイルや画像(バイナリデータ)のメタデータに含まれるランダムな文字列は、SQLインジェクションやクロスサイトスクリプティングの攻撃に含まれる文字列と類似しているため、WAF で誤検出されることがある」とのことです。

どう対応したか

今回構築する Web アプリではクロスサイトスクリプティング攻撃によるリスクは無いと判断したので、CrossSiteScripting_BODYルールの設定をBlockCountに上書きすることで対応しました。

また、コアルールセット(CRS)マネージドルールグループに含まれるGenericLFI_BODYルールについても、同様の問題を引き起こしそうなので、同様の対応としました。

0
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
0
0