Open2

kmlのアップロードがwafでブロックされる

メモdevメモdev

事象

  • APIのファイルアップロード用のエンドポイントにkmlをアップロードするとWAFのCrossSiteScripting_Bodyでブロックされる [1]

対策

  1. CrossSiteScripting_Bodyのactionをblockではなくcountする。countにすることでルールに該当するリクエストにはlabel[2]がつけられる。

  2. ラベルとリクエストエンドポイントがupload用でないときだけblockするルールを作成する。

脚注
  1. 『AWS WAF すべての AWS の管理ルールは、検査するリクエストにラベルを追加します。』(公式)。個別のラベルについてはコアルールセット (CRS) マネージドルールグループを参照 ↩︎

  2. 似たような事象が「AWS WAF Blocking XML Requests as XSS Attacks」(stack overflow)にも投稿されている ↩︎

メモdevメモdev

ログの検索

どのルールが適用されてブロックorカウントになっているのかをathenaで検索する。

なお直近のログだけ確認するのならsampled requestからでも見れる。(ただしsampled requestではログの一部項目しかみれない)

ブロックされているレコード

select * from {table_name}  
WHERE action='BLOCK' and log_time like '2025/07/30/06/%';

カウントされているレコード

wafルールでカウントに該当したものはレコードのnonTerminatingMatchingRulesに記載される。

select * from {table_name}  CROSS JOIN UNNEST(nonTerminatingMatchingRules) AS t(nonTermRule)
WHERE cardinality(nonTerminatingMatchingRules) > 0 and log_time like '2025/07/30/06/%';

athenaのテーブル作成

公式ドキュメントにテーブル作成方法が記載しているのでそのまま実行する(テーブル名とかs3のパスは適宜変更)
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/waf-logs.html