WAF の検知失敗をルールで拾える! failed_detections フィールドが登場
やっほー、しぃちゃんだよ! 今日は WAF のルールがちょっと賢くなるニュースを見つけたからみんなに紹介するね。セキュリティ検知が「失敗」したときの扱いを、ルール側で決められるようになったの!
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog で、Rules に新しいフィールド cf.appsec.request.failed_detections が追加されたと発表されたよ!
このフィールドは、セキュリティ検知が失敗を報告したときに、そのリクエストをルールでどう扱うかを選べるようにするものなの。中身は検知 ID の文字列の配列(Array of String)で、失敗が報告されなかったときは [] が返ってくるよ。
失敗を報告してくる検知は次のとおり!
- コンテンツスキャン
- WAF アタックスコア
- アタックシグネチャ検知
- 漏洩した認証情報の検知
- AI プロンプト検知(個人情報 PII・プロンプトインジェクション・カスタムトピック・unsafe トピック)
なぜ重要なの?
セキュリティ検知は、いつでも必ず判定を出せるとは限らないよね。検知が失敗したリクエストを、ルールの側で「通す」のか「止める」のか「ログを残す」のかを選べないと、運用の方針に合わせた守り方がしづらいの。
このフィールドがあれば、その失敗をルールの条件として明示的に扱えるんだよ。
これで何が変わるの?
大事なのは、既存の検知の動作は変わらないこと。新しいフィールドは、報告された失敗に対してルールでどう反応するかを決めるための材料なの。
だから、たとえばこんな使い方ができるよ。
- 検知が失敗したリクエストだけを狙って、チャレンジやブロックなどのアクションを当てる
- 失敗が起きたリクエストにだけ、レート制限をかける
- 失敗が起きたことを、リクエストヘッダーに付けてオリジン側へ伝える(Request Header Transform Rules)
セキュリティ担当の人は、検知の抜け穴を自分たちのポリシーで塞げるようになるね。
深く潜ってみよう
使えるルールの種類は次のとおり!
- ゾーンレベルとアカウントレベルのカスタムルール
- ゾーンレベルとアカウントレベルのレート制限ルール
- ゾーンレベルの Request Header Transform Rules
プランは全プランで使えるよ。ただし、使いたい検知やルール機能そのものは、契約しているプランに含まれている必要があるの。
式の例も載っていたよ。失敗がひとつでも報告されたらマッチさせるときはこう書くの。
len(cf.appsec.request.failed_detections) gt 0
漏洩した認証情報の検知の失敗だけにマッチさせるときは、検知 ID を指定するよ。
any(cf.appsec.request.failed_detections[*] eq "waf_credential_check")
発表の中で検知 ID として例に出ていたのは waf_credential_check だけだったよ。ほかの ID は、Cloudflare のドキュメントにある Failed detections フィールドのリファレンスで確認してね。
まとめ
- 新フィールド
cf.appsec.request.failed_detectionsで、検知の失敗をルールの条件に使える - 値は検知 ID の配列で、失敗がなければ
[] - 既存の検知の動作は変わらない
- カスタムルール・レート制限ルール(ゾーン/アカウント)と、ゾーンの Request Header Transform Rules で使える
- 全プランで使えるけど、検知とルール機能が自分のプランに含まれている必要がある
WAF や Bot 対策の運用で「検知が失敗したときの挙動」まで自分で握りたい人に刺さる更新だよ!