
Apache Traffic Server 10.2.0 - Alta - Remoto - Resto de privilegios - prefijo authproxy
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-authproxy-prefix
Clase: Residuo de privilegios Alcance: Remoto
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
--forward-header-prefix de authproxy copia campos de identidad desde un helper de autenticación 2xx a la petición del cliente. HttpSetMimeHeader encuentra y sobrescribe solo el primer campo con ese nombre. Las copias adicionales del cliente sobreviven. Un origen que aplica last-wins sobre la misma cabecera trata el valor del cliente como identidad.
El plugin.config de serie está vacío. Este residuo requiere el plugin en un remap con la opción de prefijo. El cliente aún debe pasar la autenticación (2xx). Un 403 de autenticación nunca llega al origen.
| ID | aún sin CVE |
| Clase | Residuo de privilegios (plantado de cabecera de identidad) |
| Alcance | Remoto (HTTP a través de authproxy con --forward-header-prefix) |
| CWE | CWE-444, CWE-863 |
| CVSS | Alto: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Producto | Apache Traffic Server |
| Afectado | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) overlay de prefijo de authproxy |
| Autenticación | cliente que ya obtiene un 2xx del helper de autenticación. Plugin activado. |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1:18760 |
Fijé la etiqueta pública 10.2.0 con peel b1df7334. El laboratorio es un proxy inverso ats-10.2.0-lab:local compilado desde código fuente en loopback. Helper de autenticación 2xx frente a 403. Origen con last-wins en X-Auth-User.
Alcanzar un remap de ATS que cargue authproxy.so con --forward-header-prefix=X-Auth-. Enviar dos líneas X-Auth-User en una petición que el helper acepta como 2xx.
| Método | Sumidero | Privilegio |
|---|---|---|
X-Auth-User duplicada tras un helper de autenticación 2xx | overlay StateAuthorized y luego HttpSetMimeHeader (authproxy.cc:660-690, utils.cc:87-102) | Integridad (probado en laboratorio): el origen aplica last-wins. Laboratorio: X-Auth-User-0: realuser más X-Auth-User-1: ATS-AUTHPROXY-PREFIX-WITNESS. CONTROL none/single permanecen en REALUSER-ONLY. |
| Mismo plantado | ACL del origen / búsqueda de usuario basada en esa cabecera | Reconocimiento (inferido): todo lo que esa identidad plantada pueda leer en el origen. No es un volcado de heap. No es la configuración de ATS. |
| Helper de autenticación 403 con los mismos duplicados | StateUnauthorized; origen no rehabilitado | Cerrado (probado en laboratorio): las peticiones al origen sin cambios. Cliente 403. El testigo no está en el cuerpo. |
Probado en laboratorio frente a inferido: el last-wins duplicado, la sobrescritura única, el none y el 403-no-alcanzado son de laboratorio. El privilegio en el origen tras el plantado se infiere a partir de la identidad last-wins.
Requiere: authproxy.so con --forward-header-prefix. El cliente debe pasar la autenticación (2xx). El origen debe tratar esas cabeceras de prefijo como identidad (la razón de ser de la opción). No se carga en el plugin.config por defecto.
| Superficie | Laboratorio |
|---|---|
| Sin cabecera de prefijo de cliente | CONTROL none: origen REALUSER-ONLY |
| Prefijo de cliente único | CONTROL single: primer campo sobrescrito; el testigo no sobrevive |
| Ayudante de autenticación 403 | origen no alcanzado (control-403=yes) |
| Plugin no cargado | el residuo no aplica |
Cabeceras hop-by-hop / @ | eliminadas antes de los hooks del plugin (CVE-2026-33267) |
| Lista vacía de cabeceras de respuesta de autenticación | ya no afirma (registro de cambios) |
SNI del certificador / url_sig C= | cerrado en este pin (CVE-2026-58162 / 58181) |
No es CVE-2026-58162. Solo SHA-256/SHA-512 en uri_signing. La falta del delimitador en url_sig C= sigue denegando.
python3 ats-authproxy-prefix-Abraxas-Labs.py
o
cd lab
./run.sh
Loopback 127.0.0.1:18760 (origen 18761, helper de autenticación 18762). Proyecto de Compose ats-authproxy-prefix. Imagen ats-10.2.0-lab:local. Testigo ATS-AUTHPROXY-PREFIX-WITNESS. Última línea:
SUCCESS ats-authproxy-prefix pin=10.2.0 control-none=REALUSER-ONLY control-single=REALUSER-ONLY control-403=yes dup-last-wins=yes ATS-AUTHPROXY-PREFIX-WITNESS
Eliminar todos los campos del cliente cuyo nombre comience con --forward-header-prefix antes de la superposición. HttpRemoveMimeHeader ya recorre TSMimeHdrFieldFind hasta que no quede ninguno (utils.cc:104-114). Úsalo en la solicitud del cliente para el prefijo configurado, y luego establece. Haz que HttpSetMimeHeader destruya los extras de TSMimeHdrFieldNextDup de la misma manera que ya lo hacen set_header de origin_server_auth y setHeader de access_control.
Hasta entonces, no apuntes la ACL de origen a los encabezados de prefijo de authproxy a menos que el origen dé prioridad al primero, o rechaza los nombres de prefijo duplicados en el origen.
b1df7334b39a878971c376da849e8da4984918b6)plugins/authproxy/authproxy.cc StateAuthorizedplugins/authproxy/utils.cc HttpSetMimeHeader / HttpRemoveMimeHeaderorigin_server_auth.cc set_header recorre NextDup