shiichan

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

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

Cloudflare Blog blog.cloudflare.com

今日は 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 やセキュリティテストの自動化に興味がある人に刺さる、実践的な話だよ!