← Todos los CVEs

CVE-2026-44982 7.2 HIGH

Bypass de la inspección de cuerpo del WAF en el componente AppSec de CrowdSec: una petición con Transfer-Encoding chunked o HTTP/2 sin content-length llega al backend con el cuerpo sin inspeccionar, saltándose todas las reglas que miran el cuerpo.

ProductoCrowdSec AppSec
Versiones Afectadas1.5.0 – 1.7.7
Versión Corregida1.7.8
Vector CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
CWECWE-693 (Fallo de mecanismo de protección)
Publicado2026-05-27
Hay un writeup para este CVEBypass del WAF de CrowdSec AppSec por chunked transfer encoding (CVE-2026-44982)Leer el writeup →

Descripción

El componente AppSec de CrowdSec es vulnerable a un Fallo de Mecanismo de Protección en las versiones 1.5.0 hasta la 1.7.7 incluida. La función NewParsedRequestFromRequest en pkg/appsec/request.go dimensiona el buffer del cuerpo con max(r.ContentLength, 0). El net/http de Go pone r.ContentLength a -1 para cualquier petición cuyo framing no lleve un content-length positivo, lo cual cubre peticiones HTTP/1.1 con Transfer-Encoding: chunked y peticiones HTTP/2 enviadas sin cabecera content-length. Para esas peticiones el buffer se asigna con longitud cero y io.ReadFull lee cero bytes con éxito, así que el cuerpo de la petición se descarta antes de que Coraza lo vea. Cualquier regla del WAF que apunte a REQUEST_BODY, BODY_ARGS, ARGS_POST, JSON o XML se evalúa contra un cuerpo vacío y falla en silencio. La versión 1.7.8 sustituye la lógica de dimensionado por un helper readRequestBody que lee hasta un máximo configurable y aplica una acción de oversize.

Impacto

Un atacante remoto no autenticado evita por completo la inspección de cuerpo de AppSec cambiando una sola cabecera de framing en una petición maliciosa (enviándola como Transfer-Encoding: chunked o por HTTP/2 sin content-length). Las reglas que apuntan al cuerpo y que habrían detectado inyecciones SQL, inyecciones de comandos, payloads de deserialización o ataques JSON o XML dejan de dispararse. Como Coraza recibe un cuerpo vacío, la petición evadida no deja registro en el WAF y se ve como una petición limpia en los paneles del operador. El origen protegido queda expuesto a la vulnerabilidad subyacente que el WAF debía bloquear.

Cronología

2026-04-22
Vulnerabilidad descubierta
2026-04-22
Reportada a CrowdSec a través de GitHub Security Advisories
2026-05-11
Parcheado por el fabricante en la versión 1.7.8
2026-05-27
CVE publicado