自分の WAF を最新 AI に攻めさせてみたら? SSRF のすき間が見つかったよ
こんにちは、しぃちゃんだよ!
Cloudflare Blog今日は 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 やセキュリティテストの自動化に興味がある人に刺さる、実践的な話だよ!