WAF 実測レポート

chaitin/blazehttp の公開コーパスにおける PingWAF WAF エンジンの実測結果 — 検知率、誤検知率、正確率、レイテンシ。

8 分で読めます GitHub でこのページを編集

結果サマリー

バージョン 0.32.4、テスト日 2026-11-02、公開コーパス chaitin/blazehttp:生 HTTP メッセージ 33 877 件(悪意ある 658 / 正常 33 219)。

指標結果
実効基準の検知率96.6%(616/638)
全量基準の検知率93.8%(617/658)
正常トラフィックへの影響0.06%(19/33 219)
正確率99.82%
静的ティアの p95≤ 2 ms

どの数字を使うべきか?96.6% の分母は 638 です:悪意ある 658 件のうち、プロキシ側 WAF には判定できない 20 件を除外しています — Content-Length / Transfer-Encoding のない POST/PUT 19 件(RFC 7230 によりリクエストボディは空)、および URL fragment にペイロードを隠した 1 件(HTTP パーサーはリクエストラインを構築する前に fragment を剥離します)。全量基準(93.8%)は参考として残しています。

他製品との比較

製品/モードサンプル数悪意ある検知率正常誤検知率正確率所要時間
PingWAF Strict+body33 87765893.8%(617)33 2190.06%(19)99.82%p95 2 ms(loopback)
PingWAF Normal33 87765860.2%(396)33 2190.01%(4)99.21%p95 2 ms(loopback)
SafeLine 無料版・厳格(strict)33 66957576.17%(438)33 0940.22%(73)99.38%64.34 ms(公衆網)
SafeLine 無料版・バランス(balanced)33 66957571.65%(412)33 0940.07%(23)99.45%70.05 ms(公衆網)
ModSecurity PL433 66957594.61%(544)33 09452.46%(17 362)48.34%28.89 ms(公衆網)
ModSecurity PL133 66957569.74%(401)33 09417.58%(5 819)82.20%31.15 ms(公衆網)
Cloudflare 無料版33 66957010.70%(61)32 7800.07%(23)98.40%288.96 ms(公衆網)

PingWAF の 2 行は自社測定(実効基準 96.6%、上節参照)。それ以外の数値は blazehttp README からの引用のままで、再計測はしていません。サンプル構成が異なり(33 877 vs 33 669 件、悪意ある 658 vs 570–575)、サードパーティの所要時間は公衆網の往復、PingWAF は loopback の判定レイテンシです — 比較するのは検知率と誤検知率であって、ミリ秒ではありません。

カテゴリ別検知率

カテゴリ件数Strict+bodyNormal
SQLインジェクション2085.0%85.0%
XSS3096.7%46.7%
パストラバーサル2596.0%80.0%
コマンドインジェクション1283.3%25.0%
SSRF13100%7.7%
デシリアライゼーション6100%16.7%
CRLF インジェクション5100%60.0%
SSTI5100%60.0%
XXE250.0%0%
Log4Shell1100%100%
スキャナー1100%0%
エンコード・難読化53893.9%61.9%

今回の改善

  1. 中国語の and 1=1 検索・計測値を SQLi と判定しないよう修正(7 件)、.github パスを dotfile 探査として扱わないよう修正(1 件)— 4 ティアの検知数は不変(396/473/500/617)で、正常サンプルへの影響は 12/20/12/27 から 4/12/4/19 に減少。
  2. 圧縮攻撃ボディのエンドツーエンド対応:悪意ある gzip 8/8 をブロック、良性 2/2 を通過。
  3. チャレンジ(503)とブロック(403)を分けて集計。
ティア検知計blockedchallenged正常への影響p95
Normal60.2%(396/658)39600.01%(4)2 ms
Normal+body71.9%(473)47300.04%(12)2 ms
Strict76.0%(500)490100.01%(4)2 ms
Strict+body93.8%(617)607100.06%(19)2 ms

数字の出所

release ビルド、静的 TOML データプレーン(pingwaf -c、オリジンはモック);生 33 877 件のメッセージを生の HTTP/1.1 ソケットで loopback 上にバイト単位で再生、16 並列・5 ms 間隔;検知は 403 ブロックページと 503 チャレンジページのみを数え、プロトコル層・メソッド層の拒否は数えません;エンジンのユニットテスト 250 件が合格;すべての数字は次節のコマンドで再現できます。

再現

git clone --depth 1 https://github.com/chaitin/blazehttp /tmp/blazehttp
export BLAZEHTTP_ROOT=/tmp/blazehttp
cargo build --release --bin pingwaf --features=full
./tools/waf-bench/run_suite.sh --conf tools/waf-bench/conf/level-strict-body.toml --suite full --group strict-body --out results/0.32.4/strict-body --concurrency 16 --delay-ms 5