Skip to main content

HTTP Request Smuggling (CL.TE / TE.CL / CL.0 / H2.X)

Frontend y backend interpretan el largo del request HTTP de forma distinta.

Categoría: Web · Vectores avanzados 🎯 Trinchera — Frontend y backend interpretan el largo del request HTTP de forma distinta. Inyectas un request “fantasma” en el cuerpo del primero; el backend lo procesa como si fuera del siguiente cliente. Resultado: bypass de auth, robo de requests ajenos, cache poisoning. 🔗 Kill chain — Variantes:
  • CL.TE / TE.CL — clásicas con discrepancia Content-Length vs Transfer-Encoding.
  • CL.0 — backend ignora Content-Length, lo trata como 0.
  • H2.CL / H2.TE — frontend HTTP/2 → backend HTTP/1 con downgrade vulnerable. Ver PortSwigger HTTP/2 research.
  • TE.0 — descubierto 2024 afectando miles de sitios en GCP.
  • 2025 — DEF CON / Black Hat 2025: parser-discrepancy detection
    • browser-powered desync, decenas de CVEs (CVE-2025-32094, CVE-2025-55315, CVE-2025-43859). Cloudflare Pingora afectado en abril 2025 (squidhacker review).
📡 Huella defensiva — Logs con discrepancia entre lo que loguea el LB y lo que loguea el backend. Burp Smuggler extension lo detecta. ⚠️ Falso amigo — Confundir desync real con HTTP request pipelining benigno (problema reportado masivamente en bug bounties 2024-2025). 🛡️ Remediación — Frontend y backend hablando el mismo protocolo (HTTP/2 end-to-end), rechazar requests ambiguas (Content-Length + Transfer-Encoding presentes), validación estricta de chunked.
Volver al glosario completo Última actualización: 2026-06-11