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

事象
- APIのファイルアップロード用のエンドポイントにkmlをアップロードするとWAFのCrossSiteScripting_Bodyでブロックされる [1]
対策
-
CrossSiteScripting_Bodyのactionをblockではなくcountする。countにすることでルールに該当するリクエストにはlabel[2]がつけられる。
-
ラベルとリクエストエンドポイントがupload用でないときだけblockするルールを作成する。
-
『AWS WAF すべての AWS の管理ルールは、検査するリクエストにラベルを追加します。』(公式)。個別のラベルについてはコアルールセット (CRS) マネージドルールグループを参照 ↩︎
-
似たような事象が「AWS WAF Blocking XML Requests as XSS Attacks」(stack overflow)にも投稿されている ↩︎

ログの検索
どのルールが適用されてブロック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のパスは適宜変更)