
Apache Traffic Server 10.2.0 - Alta - Remoto - SSRF - redirecionamento 0.0.0.0/8
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-redirect-zero-net
Classe: SSRF Alcance: Remoto
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
O padrão redirect.actions routable:follow classifica 0.0.0.0/8 (exceto INADDR_ANY) como FOLLOW. Loopback é apenas 127.0.0.0/8 e ::1. A negação de destino CONNECT padrão e o IncludeUrlValidator do ESI já rejeitam 0.0.0.0/8. O follow-redirect o reabre.
O padrão de number_of_redirections é 0, então o mapa não é avaliado até que o follow esteja ativado. Um plugin carregado que chama TSHttpTxnRedirectUrlSet ainda força um salto mesmo quando o contador é 0 (o reset do contador da CVE-2026-58189 está fechado).
| ID | ainda sem CVE |
| Classe | SSRF (follow-redirect ignora 0.0.0.0/8) |
| Alcance | Remoto (origem Location após o follow estar ativado) |
| 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 |
| Produto | Apache Traffic Server |
| Afetado | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) preenchimento routable de redirect.actions |
| Autenticação | nenhuma. O follow deve estar ativado (number_of_redirections=1 no laboratório). |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1:18790 |
Fixe a tag pública 10.2.0 peel b1df7334. O laboratório é um proxy reverso ats-10.2.0-lab:local compilado a partir do código-fonte em loopback. Loopback RETURN. 0.0.0.0 400. 0.0.0.1 FOLLOW. Remap ignorado no salto de follow.
Fazer o ATS seguir Location: http://0.0.0.1/ após number_of_redirections=1 (ou após um plugin TSHttpTxnRedirectUrlSet). No Linux, 0.0.0.1 é local.
| Método | Sink | Privilégio |
|---|---|---|
GET não autenticado; origem 302 Location: http://0.0.0.1:18080/w com number_of_redirections=1 | preenchimento ROUTABLE de parse_redirect_actions (HttpConfig.cc:1782-1787); mapa de ações OSDNSLookup | Recon / SSRF (comprovado em laboratório): o ATS segue como ROUTABLE. Corpo do cliente ATS-REDIRECT-ZERO-NET-WITNESS. Remap ignorado no salto de follow. |
Mesmo salto; Authorization / Cookie copiados | HttpSM::redirect_request | Integridade (inferido): esses cabeçalhos não são removidos no salto de follow. Não exercitado como escrita. |
::ffff:0:0/96 mapeado em IPv4 | mesmo preenchimento de ::/0 | Recon (inferido): irmão da negação de destino CONNECT. Não exercitado. |
Comprovado em laboratório vs inferido: follow 0.0.0.1, loopback RETURN, routable FOLLOW, INADDR_ANY 400 são de laboratório. IPv4 mapeado e encaminhamento de credenciais são inferidos.
Requer: redirect.actions routable:follow (padrão compilado) e number_of_redirections > 0, ou um plugin que defina uma URL de redirecionamento. O contador padrão é 0.
| Superfície | Laboratório |
|---|---|
Loopback 127.0.0.1 | RETURN. O cliente nunca viu LOOPBACK-ONLY-SECRET. Permaneceu 302. |
0.0.0.0 INADDR_ANY | 400 antes do mapa de ações |
Padrão number_of_redirections=0 | routable:follow não avaliado |
RFC1918 / CGNAT / link-local / ::1 | RETURN via preenchimento DEFAULT |
Negação de destino CONNECT 0.0.0.0/8 | já presente no ip_allow.yaml padrão |
Validador de include ESI 0.0.0.0/8 | já privado (CVE-2026-58178) |
| Reset do contador de redirecionamento de plugin | fechado (CVE-2026-58189) |
Não CVE-2026-58189. Não CVE-2026-58178. Esses intervalos foram nomeados em CONNECT e ESI. O follow-redirect não os recebeu.
python3 ats-redirect-zero-net-Abraxas-Labs.py
ou
cd lab
./run.sh
Loopback 127.0.0.1:18790. Projeto Compose ats-redirect-zero-net. Imagem ats-10.2.0-lab:local. Testemunha ATS-REDIRECT-ZERO-NET-WITNESS. Última linha:
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
Marque 0.0.0.0/8 e ::ffff:0:0/96 mapeado em IPv4 da mesma forma que a negação de destino padrão do CONNECT e o IncludeUrlValidator do ESI já fazem. O loopback não é apenas 127/8. O ats_is_ip_any rejeitar 0.0.0.0 não é suficiente.
Até então, deixe number_of_redirections em 0, ou defina redirect.actions para que routable seja RETURN. Um plugin TSHttpTxnRedirectUrlSet ainda força um salto.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc incremento de um salto em TSHttpTxnRedirectUrlSetconfigs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 privado (CVE-2026-58178)