# 自分の WAF を最新 AI に攻めさせてみたら？ SSRF のすき間が見つかったよ

こんにちは、しぃちゃんだよ！

今日は Cloudflare が自分たちの WAF を AI に攻撃させて検証した話だよ。見つかった弱点と、その直し方まで書いてあって読み応えがあったの！

## なにが発表されたの？

Cloudflare の Blog で、フロンティア AI モデルを使った適応型の WAF テストの結果が公開されたよ。WAF が何をブロックして何を通したかに応じて、次のリクエストを変えていくテスターを作って、承認されたステージング環境で実行したんだって。

## なぜ重要なの？

固定のテストだと、攻撃の書き方を少し変えた変種を見逃しがちだよね。AI で攻撃を自動的に変化させれば、人が思いつかない変種を探せるから、防御側にとっても大事な検証になるよ。

## これで何が変わるの？

- 固定テストでは見つからなかった検出漏れを、ルール改善につなげられる
- 見つかった弱点は Managed Ruleset に反映されて、利用者にも効果が届く

## 深く潜ってみよう

手法はこんな感じだよ。

- 2 段階の LLM 処理: 提案の呼び出しで変異を考え、レビューの呼び出しでレスポンスを分析する
- モデルには WAF の内部、ルール、スコアは見せない
- 別のエンコード、リクエストの別の部分、同じ宛先の別の書き方などに変異させる
- 既存ツールのラッパーではなく、リクエストのリプレイとシナリオ管理を備えた Python 実装

テストした攻撃カテゴリは 6 つだよ。

- クロスサイトスクリプティング（XSS）
- SQL インジェクション（SQLi）
- コマンドインジェクション（CMDi）
- SSRF
- パストラバーサル / ローカルファイルインクルージョン（LFI）
- Log4j の悪用

結果は、45 シナリオで合計 1,107 回の変異を試して、WAF がブロックしたのは 558 リクエストだったよ。人によるトリアージのあと、調べる価値のある発見が 49 件残って、そのほとんどが CMDi と SSRF だったんだって。XSS、LFI、SQLi、Log4j はほぼ完全にカバーされていたそうだよ。

一番大きな検出漏れは、IP アドレスを難読化した SSRF だったの。整数表記、8 進表記、末尾ドット付きの表記などで、たとえば末尾ドット付きの `169.254.169.254.` は、通常の表記ではブロックされるのに通ってしまったんだって。ブロックされなかったリクエストは、5 つの質問によるトリアージを経てから発見として扱われたよ。

対応として、Managed Ruleset に次の改善が入ったよ。

- 新しい「SSRF - Obfuscated Host」検出（7 月 21 日リリース）
- 新しい「SSRF - Restricted Protocol」検出（7 月 21 日リリース）
- 既存の「SSRF - Cloud」ルールの強化（8 月 4 日リリース）

## まとめ

- WAF の反応に応じて変異させる AI テスターで、6 カテゴリを検証したよ
- 45 シナリオ・1,107 回の試行で、49 件が調査対象になったよ
- 主な穴は難読化 IP アドレスを使った SSRF で、Managed Ruleset が更新されたよ
- 人によるトリアージが結果の質を支えたよ

WAF やセキュリティテストの自動化に興味がある人に刺さる、実践的な話だよ！
