Informe de pruebas del WAF

Resultados medidos del motor WAF de PingWAF sobre el corpus público chaitin/blazehttp — intercepción, falsos positivos, precisión y latencia.

8 min de lectura Editar esta página en GitHub

Resultados de un vistazo

Versión 0.32.4, probada el 2026-11-02 sobre el corpus público chaitin/blazehttp: 33 877 mensajes HTTP crudos (658 maliciosos, 33 219 benignos).

IndicadorResultado
Intercepción con criterio efectivo96.6% (616/638)
Intercepción con criterio completo93.8% (617/658)
Tráfico benigno afectado0.06% (19/33 219)
Precisión99.82%
p95 del tier estático≤ 2 ms

¿Qué número usar? El denominador del 96.6% es 638: de las 658 muestras maliciosas se excluyen 20 que ningún WAF del lado del proxy puede decidir — 19 POST/PUT sin Content-Length / Transfer-Encoding (cuerpo de petición vacío según RFC 7230) y 1 muestra cuyo payload se esconde en un fragmento de URL, que el parser HTTP elimina antes de construir la línea de petición. La cifra con criterio completo (93.8%) se conserva como referencia.

Comparativa con otros productos

Producto / modoMuestrasMaliciosasDetecciónBenignasFalsos positivosPrecisiónTiempo
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 gratuito, estricto33 66957576.17% (438)33 0940.22% (73)99.38%64.34 ms (pública)
SafeLine gratuito, equilibrado33 66957571.65% (412)33 0940.07% (23)99.45%70.05 ms (pública)
ModSecurity PL433 66957594.61% (544)33 09452.46% (17 362)48.34%28.89 ms (pública)
ModSecurity PL133 66957569.74% (401)33 09417.58% (5 819)82.20%31.15 ms (pública)
Cloudflare gratuito33 66957010.70% (61)32 7800.07% (23)98.40%288.96 ms (pública)

Las dos filas de PingWAF son automedidas (criterio efectivo 96.6%, ver la sección anterior); las demás cifras se citan tal cual del README de blazehttp y no se volvieron a medir. Los conjuntos de muestras difieren (33 877 vs 33 669 muestras; 658 vs 570–575 maliciosas), y los tiempos de terceros son idas y vueltas por red pública mientras que los de PingWAF son latencia de veredicto en loopback — compare detección y falsos positivos, no milisegundos.

Detección por categoría

Categorían.ºStrict+bodyNormal
Inyección SQL2085.0%85.0%
XSS3096.7%46.7%
Path traversal2596.0%80.0%
Inyección de comandos1283.3%25.0%
SSRF13100%7.7%
Deserialización6100%16.7%
Inyección CRLF5100%60.0%
SSTI5100%60.0%
XXE250.0%0%
Log4Shell1100%100%
Escáneres1100%0%
Codificación y ofuscación53893.9%61.9%

Novedades de esta versión

  1. Las búsquedas y valores de telemetría en chino con and 1=1 ya no se juzgan como SQLi (7 muestras) y las rutas .github ya no se tratan como sondeo de dotfiles (1 muestra) — los conteos de las cuatro tiers no cambian (396/473/500/617) y las muestras benignas afectadas bajan de 12/20/12/27 a 4/12/4/19.
  2. Cobertura extremo a extremo de cuerpos de ataque comprimidos: 8/8 gzip maliciosos bloqueados, 2/2 benignos dejan pasar.
  3. Los desafíos (503) y los bloqueos (403) se contabilizan por separado.
TierIntercepciónblockedchallengedBenignas afectadasp95
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

De dónde salen los números

Build release del plano de datos TOML estático (pingwaf -c con un origen simulado); los 33 877 mensajes crudos se reproducen byte a byte por un socket HTTP/1.1 crudo en loopback, 16 conexiones concurrentes con 5 ms de separación; solo cuentan como intercepciones la página de bloqueo 403 y la de desafío 503 — los rechazos a nivel de protocolo y de método nunca cuentan; 250 pruebas unitarias del motor pasan; y todas las cifras se reproducen con los comandos de la sección siguiente.

Reproducción

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