【メモ】WAFの効果検証アプローチ
なぜ「WAFの効果検証」は難しいのか
WAF(Web Application Firewall)の検証が難しくなりがちな理由は、単純な「攻撃を止めた/止めない」だけでは評価が成立しないためです。たとえば、(1) 誤検知(False Positive)の運用負荷、(2) 攻撃の回避(Evasion)に対する耐性、(3) API/ボット/ビジネスロジック攻撃のような“シグネチャだけでは薄い領域”のカバー、(4) レイテンシやCPU/メモリ制約の影響が、導入後に一気に顕在化します。1
さらに重要なのは、WAFが「見えているデータ」しか守れない点です。見えていない領域に攻撃が乗れば、WAFが高性能でも“そもそも検査できていない”可能性があります。2
前提:WAFが「どこまで検査しているか」を最初に確かめる
リクエストボディの「先頭だけ検査」は、回避されうる
一部のWAFでは、HTTPリクエストボディについて「先頭の一定サイズ(例: 8KB/16KB/64KB/128KB等)だけ検査する」仕様があり、この場合“先頭にゴミデータ(ダミーの長いパラメータ等)を置く”だけで、検査対象外に攻撃ペイロードを押し出せる、という指摘があります。3
クラウドWAFやマネージドWAFでも、リクエストボディ検査サイズに制約があること自体は珍しくなく、サービス/統合先(LBやゲートウェイ等)によって「上流がWAFに渡す範囲」が制限されるケースも明記されています。2
裏どり:React2Shell(CVE-2025-55182)と「ペイロードサイズ」問題
2025年末に話題となったReact Server Componentsの重大脆弱性(CVE-2025-55182、通称 React2Shell)は、国内外の複数機関が注意喚起しています(IPA、JPCERT/CC 等)。456
当時、WAFの検査可能なペイロードサイズが論点になり、Cloudflareは「React RCE(CVE-2025-55182)への検知能力向上」を目的に最大検査サイズを1MBへ拡張する告知を出した一方、ロールアウトで誤検知が急増し現実的でなかったため、最大検査サイズ方針を調整したことも公開しています(同日付の複数changelog)。78
ここから得られる実務的な教訓はシンプルです。
- “検査できるサイズを上げる”と、検知できる攻撃は増えるが、誤検知も増えやすい(運用が破綻しやすい)。8
- だからこそ、WAF評価の最初に「どの入力(body/headers/query/multipart等)を、どの条件で、どこまで検査できるか」を仕様と実測で固める必要がある。23
「シグネチャ以外」の評価軸:振る舞い検知を分解する
“振る舞い検知”は曖昧になりやすいので、評価可能な単位に分解します。
1) レート/頻度の異常(Bot・クレデンシャルスタッフィング・スクレイピング)
同一IP/同一AS/同一指紋/同一アカウントに対する試行回数、リクエスト間隔、ログイン失敗率の急増などは、シグネチャよりも“行動”で捉えます。Impervaなどは「行動データを収集して異常を特定し、機械学習で悪性ボット行動を識別する」アプローチを資料で説明しています。9
2) コンテキスト検知(アプリ/APIの“期待される形”からの逸脱)
APIであれば、エンドポイント単位の入力形状(Content-Type、JSON構造、パラメータの意味的制約)からの逸脱、想定外メソッド、過剰フィールド、異常なネストなど。NISTはAPI保護の観点整理を公開しており、APIのライフサイクル全体でのリスク分析と対策の必要性を示しています。10
3) ルール更新・自己調整(運用品質の差)
“振る舞い検知”を謳う製品の多くは、(a) 自動更新、(b) セルフチューニング、(c) スコアリング(アノマリースコア等)を組み合わせます。例えばAkamaiはAdaptive Security Engine(ASE)を「検知戦略の進化」「自己調整」等として説明しています。11
この手の機能は、検知精度だけでなく「変更管理(いつ何が変わったか)」「誤検知時の説明可能性(なぜ止めたか)」も評価対象になります。1
効果検証の設計:KPIを「検知率」だけにしない
最低限、次の4つをセットでKPI化すると評価が崩れにくいです。
- セキュリティ効果:検知率(True Positive)/ すり抜け(False Negative)
- 業務影響:誤検知率(False Positive)と、解除/例外運用に要する工数
- 性能:追加レイテンシ、スループット、ピーク時の挙動
- 回避耐性:入力変形(エンコード/分割/ダミー付与)に対する堅牢性
OWASP CRSのようなルールセットでは、パラノイアレベル(PL)を上げるほど検知が強くなる一方、誤検知が増えやすいことが明確に整理されています。1213
実施方法:評価を「再現可能」にする(追加調査)
1) テストハーネス(回帰テスト)を用意する
WAFは「設定変更」「ルール更新」「モデル更新」で挙動が変わります。手動テストだけだと、いつの間にか品質が劣化します。
- OWASP CRS周辺には、WAFをテストするためのFTW(Framework for Testing WAFs)という枠組みがあります。14
- 誤検知(FP)の定量評価フレームワーク研究もあり、正規トラフィック生成→感度変更→観測→統計分析、のように“手順化して比較”する方向性が示されています。15
2) 2系統のデータで測る(攻撃トラフィック+正規トラフィック)
- 攻撃トラフィック:OWASP Top 10相当、API特有攻撃、既知CVEのPoC“相当”(PoCそのものの配布はせず、パターンを模したテスト)
- 正規トラフィック:実アクセスのリプレイ(個人情報・機密をマスク)、負荷ピーク、アップロード等の大きいbody
ここで「ボディサイズ制限」「multipart」「圧縮」「chunked」など“見え方が変わる条件”を必ず含めます。23
3) 本番に近い“観測モード”→段階的ブロック
いきなりブロックにすると誤検知が事故になります。まず検知のみでログを溜め、例外設計・閾値設計を作ってから段階的にブロックへ移行します(Cloudflareも誤検知/誤検知調整の基本動線をドキュメント化しています)。1
すぐ使える「評価チェックリスト」(叩き台)
- 検査範囲
- body検査上限(仕様/実測)、上限超の扱い(ブロック/パス/部分検査)2
- multipart/form-data(ファイルアップロード)での検査範囲
- 回避耐性
- ダミー先頭付与、パラメータ順序変更、重複パラメータ、エンコード揺らぎ3
- 振る舞い
- レート制御(ログイン試行、API連打、スクレイピング)
- Bot判定の根拠(行動・指紋・ML)と誤検知時の説明9
- 運用
- ルール更新頻度、変更履歴の追跡、例外(allowlist/skip)作成のしやすさ1
- 誤検知が起きたときの切り戻し手段(即時停止/部分停止/段階制御)
まとめ
- WAFの効果検証は「検知率」だけでは成立せず、誤検知・性能・回避耐性・運用をセットで測る必要がある。1
- 特に最初に確認すべきは「WAFがどこまで検査できているか」。ボディ先頭のみ検査のような制約があると、シンプルな回避が成立しうる。32
- “振る舞い検知”は、レート異常・コンテキスト逸脱・自己調整/自動更新という要素に分解して、再現可能なテスト(回帰)で評価するのが現実的。1415