
CVE-2026-33267 — Apache Traffic Server: suplantación de metadatos internos mediante el encabezado @ (CVSS 10.0). Verificado: los encabezados @ se filtran a los plugins en 10.1.2 y se eliminan en 10.1.4
@ no confiable → suplantación de metadatos internosCVSS 10.0 (Crítico) · CWE-20 · GHSA-jrh6-9hgv-mqm7
Apache Traffic Server reserva las cabeceras con prefijo @ (@Ats-Internal, @ICAP-Status, @TCPInfo, ...)
para metadatos internos: viven en la estructura de cabeceras en memoria pero nunca se serializan
en la red. En las versiones vulnerables (9.2.0–9.2.14, 10.1.0–10.1.3), estas cabeceras provenientes de la
petición del cliente y de la respuesta del origen no se eliminan antes de que se ejecuten los hooks
de los plugins (TS_HTTP_READ_REQUEST_HDR_HOOK, TS_HTTP_READ_RESPONSE_HDR_HOOK, plugins de remap). Un
atacante remoto puede suplantar los metadatos internos de ATS; los plugins (cache, ACL, header_rewrite, ...)
pueden entonces confiar en estado interno controlado por el atacante — el impacto depende de los plugins en uso.
a9aee837db — "CVE-2026-33267: 9.2.x: Eliminar las cabeceras @ externas antes de los hooks de plugins"4ab63dbd93 — misma correcciónHttpTransact::strip_at_headers() se ejecuta antes de los hooks READ_REQUEST_HDR /
READ_RESPONSE_HDR; se añaden los contadores proxy.process.http.client_request_at_headers_stripped /
proxy.process.http.origin_response_at_headers_stripped.Plugin at_probe personalizado que registra las cabeceras @ en ambos hooks, además de un cliente de socket
crudo (curl descarta silenciosamente las cabeceras @):
| Compilación | @Ats-Internal suministrada por el cliente | @Origin-Test suministrada por el origen |
|---|---|---|
| ATS 10.1.2 (vulnerable) | 🟥 FILTRADA (el plugin la observó) | 🟥 FILTRADA (8 observaciones) |
| ATS 10.1.4 (corregida, compilada desde fuente) | ✅ ELIMINADA ("cabecera @ interna eliminada") | ✅ ELIMINADA |
Control negativo en la compilación corregida: 0 observaciones del plugin (el plugin nunca ve las cabeceras).
python3 at_headers_spoof.py 127.0.0.1 8080 /
Envía GET / con @Ats-Internal: pwned y @Another-At: test a través de un socket crudo e imprime la
cabecera de la respuesta. En ATS vulnerable, el plugin personalizado (o cualquier plugin que confíe en
metadatos @) recibe las cabeceras suplantadas; en las compilaciones corregidas se eliminan antes de los hooks.
@ en el despliegue objetivo (p. ej., directivas de header_rewrite/cache
que referencian campos @).a9aee837db · Corrección 10.1.x: 4ab63dbd93