
Apache Traffic Server 10.2.0 - Alta - Remota - SSRF - redirección 0.0.0.0/8
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-redirect-zero-net
Clase: SSRF Alcance: Remoto
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
El valor predeterminado routable:follow de redirect.actions clasifica 0.0.0.0/8 (excepto INADDR_ANY) como FOLLOW. El loopback es solo 127.0.0.0/8 y ::1. La denegación predeterminada de destino CONNECT y el IncludeUrlValidator de ESI ya rechazan 0.0.0.0/8. El seguimiento de redirecciones lo vuelve a abrir.
El valor predeterminado de number_of_redirections es 0, por lo que el mapa no se evalúa hasta que el seguimiento está activado. Un plugin cargado que llama a TSHttpTxnRedirectUrlSet sigue forzando un salto incluso cuando el contador es 0 (el restablecimiento del contador de CVE-2026-58189 está cerrado).
| ID | aún sin CVE |
| Clase | SSRF (el seguimiento de redirecciones omite 0.0.0.0/8) |
| Alcance | Remoto (Location del origen tras activar el seguimiento) |
| CWE | CWE-918 |
| CVSS | Alto: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Producto | Apache Traffic Server |
| Afectado | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) relleno routable de redirect.actions |
| Autenticación | ninguna. El seguimiento debe estar activado (number_of_redirections=1 en el laboratorio). |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1:18790 |
Fijé la etiqueta pública 10.2.0 con el commit b1df7334. El laboratorio es un proxy inverso ats-10.2.0-lab:local compilado desde el código fuente sobre loopback. Loopback RETURN. 0.0.0.0 400. 0.0.0.1 FOLLOW. La reasignación de remap se omite en el salto de seguimiento.
Hacer que ATS siga Location: http://0.0.0.1/ después de number_of_redirections=1 (o después de un plugin TSHttpTxnRedirectUrlSet). En Linux, 0.0.0.1 es local.
| Método | Destino | Privilegio |
|---|---|---|
GET sin autenticación; origen 302 Location: http://0.0.0.1:18080/w con number_of_redirections=1 | relleno ROUTABLE de parse_redirect_actions (HttpConfig.cc:1782-1787); mapa de acciones OSDNSLookup | Reconocimiento / SSRF (probado en laboratorio): ATS sigue como ROUTABLE. Cuerpo del cliente ATS-REDIRECT-ZERO-NET-WITNESS. La reasignación de remap se omite en el salto de seguimiento. |
Mismo salto; Authorization / Cookie copiados | HttpSM::redirect_request | Integridad (inferido): esas cabeceras no se eliminan en el salto de seguimiento. No se ejercitó como escritura. |
::ffff:0:0/96 mapeado en IPv4 | mismo relleno de ::/0 | Reconocimiento (inferido): hermano de la denegación de destino CONNECT. No se ejercitó. |
Probado en laboratorio vs inferido: el seguimiento de 0.0.0.1, el RETURN de loopback, el FOLLOW routable y el 400 de INADDR_ANY son de laboratorio. El mapeo IPv4 y el reenvío de credenciales son inferidos.
Requiere: redirect.actions routable:follow (valor predeterminado compilado) y number_of_redirections > 0, o un plugin que establezca una URL de redirección. El contador predeterminado es 0.
| Superficie | Laboratorio |
|---|---|
Loopback 127.0.0.1 | RETURN. El cliente nunca vio LOOPBACK-ONLY-SECRET. Permaneció 302. |
0.0.0.0 INADDR_ANY | 400 antes del mapa de acciones |
number_of_redirections=0 predeterminado | routable:follow sin evaluar |
RFC1918 / CGNAT / link-local / ::1 | RETURN mediante el relleno DEFAULT |
Denegación de destino CONNECT 0.0.0.0/8 | ya presente en ip_allow.yaml predeterminado |
Validador de inclusión ESI 0.0.0.0/8 | ya privado (CVE-2026-58178) |
| Restablecimiento del contador de redirecciones del plugin | cerrado (CVE-2026-58189) |
No es CVE-2026-58189. No es CVE-2026-58178. Esos rangos fueron nombrados en CONNECT y ESI. Follow-redirect no los recibió.
python3 ats-redirect-zero-net-Abraxas-Labs.py
o
cd lab
./run.sh
Loopback 127.0.0.1:18790. Proyecto de Compose ats-redirect-zero-net. Imagen ats-10.2.0-lab:local. Testigo ATS-REDIRECT-ZERO-NET-WITNESS. Última línea:
SUCCESS ats-redirect-zero-net follow-0.0.0.1=yes loopback-return=yes routable-follow=yes inaddr-any=400 remap_required=1 ATS-REDIRECT-ZERO-NET-WITNESS
Marcar 0.0.0.0/8 y ::ffff:0:0/96 (IPv4 mapeada) de la misma manera que ya lo hacen la denegación predeterminada de destino CONNECT y el IncludeUrlValidator de ESI. Loopback no es solo 127/8. Que ats_is_ip_any rechace 0.0.0.0 no es suficiente.
Hasta entonces, dejar number_of_redirections en 0, o configurar redirect.actions para que routable sea RETURN. Un plugin TSHttpTxnRedirectUrlSet sigue forzando un salto.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc incremento de un salto de TSHttpTxnRedirectUrlSetconfigs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 privado (CVE-2026-58178)