
Apache Traffic Server 10.2.0 - Alta - Remota - SSRF - redirect 0.0.0.0/8
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-redirect-zero-net
Classe: SSRF Portata: Remota
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
Il valore predefinito di redirect.actions routable:follow classifica 0.0.0.0/8 (tranne INADDR_ANY) come FOLLOW. Il loopback è solo 127.0.0.0/8 e ::1. Il deny predefinito della destinazione CONNECT e IncludeUrlValidator di ESI rifiutano già 0.0.0.0/8. Il follow-redirect lo riapre.
Il valore predefinito di number_of_redirections è 0, quindi la mappa non viene valutata finché il follow non è attivo. Un plugin caricato che chiama TSHttpTxnRedirectUrlSet forza comunque un hop anche quando il contatore è 0 (il reset del contatore di CVE-2026-58189 è chiuso).
| ID | nessuna CVE al momento |
| Classe | SSRF (il follow-redirect manca 0.0.0.0/8) |
| Portata | Remota (Location dell'origine dopo l'attivazione del follow) |
| 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 |
| Prodotto | Apache Traffic Server |
| Affetto | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) riempimento routable di redirect.actions |
| Auth | nessuna. Il follow deve essere attivo (number_of_redirections=1 nel lab). |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1:18790 |
Ho fissato il tag pubblico 10.2.0 peel b1df7334. Il lab è un reverse proxy ats-10.2.0-lab:local compilato dai sorgenti su loopback. Loopback RETURN. 0.0.0.0 400. 0.0.0.1 FOLLOW. Remap saltato sull'hop di follow.
Far seguire ad ATS Location: http://0.0.0.1/ dopo number_of_redirections=1 (o dopo un plugin TSHttpTxnRedirectUrlSet). Su Linux, 0.0.0.1 è locale.
| Metodo | Sink | Privilegio |
|---|---|---|
GET non autenticata; origine 302 Location: http://0.0.0.1:18080/w con number_of_redirections=1 | riempimento ROUTABLE di parse_redirect_actions (HttpConfig.cc:1782-1787); mappa azioni OSDNSLookup | Recon / SSRF (dimostrato nel lab): ATS segue come ROUTABLE. Corpo del client ATS-REDIRECT-ZERO-NET-WITNESS. Remap saltato sull'hop di follow. |
Stesso hop; Authorization / Cookie copiati | HttpSM::redirect_request | Integrità (inferita): tali header non vengono rimossi sull'hop di follow. Non esercitato come scrittura. |
::ffff:0:0/96 mappato IPv4 | stesso riempimento di ::/0 | Recon (inferita): affine al deny della destinazione CONNECT. Non esercitato. |
Dimostrato nel lab vs inferito: follow di 0.0.0.1, loopback RETURN, routable FOLLOW, INADDR_ANY 400 sono da lab. IPv4-mapped e inoltro delle credenziali sono inferiti.
Richiede: redirect.actions routable:follow (predefinito compilato) e number_of_redirections > 0, oppure un plugin che imposta un URL di redirect. Il contatore predefinito è 0.
| Superficie | Lab |
|---|---|
Loopback 127.0.0.1 | RETURN. Il client non ha mai visto LOOPBACK-ONLY-SECRET. Rimasto 302. |
0.0.0.0 INADDR_ANY | 400 prima della mappa azioni |
number_of_redirections=0 predefinito | routable:follow non valutato |
RFC1918 / CGNAT / link-local / ::1 | RETURN tramite il riempimento DEFAULT |
Deny destinazione CONNECT 0.0.0.0/8 | già in ip_allow.yaml predefinito |
Validator include ESI 0.0.0.0/8 | già privato (CVE-2026-58178) |
| Reset contatore redirect del plugin | chiuso (CVE-2026-58189) |
Non CVE-2026-58189. Non CVE-2026-58178. Quei range sono stati nominati su CONNECT e ESI. Follow-redirect non li ha ricevuti.
python3 ats-redirect-zero-net-Abraxas-Labs.py
o
cd lab
./run.sh
Loopback 127.0.0.1:18790. Progetto Compose ats-redirect-zero-net. Immagine ats-10.2.0-lab:local. Witness ATS-REDIRECT-ZERO-NET-WITNESS. Ultima riga:
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
Contrassegnare 0.0.0.0/8 e ::ffff:0:0/96 mappato su IPv4 allo stesso modo in cui già fanno il deny predefinito della destinazione CONNECT e IncludeUrlValidator di ESI. Il loopback non è solo 127/8. Il fatto che ats_is_ip_any rifiuti 0.0.0.0 non è sufficiente.
Fino ad allora, lasciare number_of_redirections a 0, oppure impostare redirect.actions in modo che routable sia RETURN. Un plugin TSHttpTxnRedirectUrlSet forza comunque un hop.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc incremento di un hop di TSHttpTxnRedirectUrlSetconfigs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 privato (CVE-2026-58178)