
Apache Traffic Server 10.2.0 – Hoch – Remote – SSRF – Weiterleitung 0.0.0.0/8
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-redirect-zero-net
Klasse: SSRF Reichweite: Remote
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
Die Standardeinstellung redirect.actions routable:follow klassifiziert 0.0.0.0/8 (außer INADDR_ANY) als FOLLOW. Loopback ist nur 127.0.0.0/8 und ::1. Das standardmäßige CONNECT-Ziel-Deny und der ESI IncludeUrlValidator lehnen 0.0.0.0/8 bereits ab. Follow-Redirect öffnet es erneut.
Der Standardwert von number_of_redirections ist 0, daher wird die Map erst ausgewertet, wenn Follow aktiviert ist. Ein geladenes Plugin, das TSHttpTxnRedirectUrlSet aufruft, erzwingt dennoch einen Hop, selbst wenn der Zähler 0 ist (der Zähler-Reset von CVE-2026-58189 ist geschlossen).
| ID | noch keine CVE |
| Klasse | SSRF (Follow-Redirect verfehlt 0.0.0.0/8) |
| Reichweite | Remote (Origin Location, nachdem Follow aktiviert ist) |
| CWE | CWE-918 |
| CVSS | Hoch: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Produkt | Apache Traffic Server |
| Betroffen | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) redirect.actions routable fill |
| Auth | keine. Follow muss aktiviert sein (number_of_redirections=1 im Lab). |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1:18790 |
Ich habe das öffentliche Tag 10.2.0 gepinnt, Peel b1df7334. Das Lab ist ein aus dem Quellcode gebauter ats-10.2.0-lab:local-Reverse-Proxy auf Loopback. Loopback RETURN. 0.0.0.0 400. 0.0.0.1 FOLLOW. Remap wird beim Follow-Hop übersprungen.
ATS dazu bringen, Location: http://0.0.0.1/ nach number_of_redirections=1 (oder nach einem Plugin TSHttpTxnRedirectUrlSet) zu folgen. Unter Linux ist 0.0.0.1 lokal.
| Methode | Sink | Privileg |
|---|---|---|
Unauth GET; Origin 302 Location: http://0.0.0.1:18080/w mit number_of_redirections=1 | parse_redirect_actions ROUTABLE fill (HttpConfig.cc:1782-1787); OSDNSLookup-Action-Map | Recon / SSRF (im Lab nachgewiesen): ATS folgt als ROUTABLE. Client-Body ATS-REDIRECT-ZERO-NET-WITNESS. Remap wird beim Follow-Hop übersprungen. |
Gleicher Hop; Authorization / Cookie kopiert | HttpSM::redirect_request | Integrität (abgeleitet): Diese Header werden beim Follow-Hop nicht entfernt. Nicht als Schreibvorgang ausgeführt. |
IPv4-gemappt ::ffff:0:0/96 | gleicher Fill von ::/0 | Recon (abgeleitet): Gegenstück zum CONNECT-Ziel-Deny. Nicht ausgeführt. |
Im Lab nachgewiesen vs. abgeleitet: Follow 0.0.0.1, Loopback RETURN, routable FOLLOW, INADDR_ANY 400 sind Lab. IPv4-gemappt und Credential-Forward sind abgeleitet.
Erfordert: redirect.actions routable:follow (kompilierter Standard) und number_of_redirections > 0, oder ein Plugin, das eine Redirect-URL setzt. Standardzähler ist 0.
| Oberfläche | Lab |
|---|---|
Loopback 127.0.0.1 | RETURN. Client sah nie LOOPBACK-ONLY-SECRET. Blieb 302. |
0.0.0.0 INADDR_ANY | 400 vor der Action-Map |
Standard number_of_redirections=0 | routable:follow nicht ausgewertet |
RFC1918 / CGNAT / Link-Local / ::1 | RETURN über den DEFAULT-Fill |
CONNECT-Ziel-Deny 0.0.0.0/8 | bereits im Standard-ip_allow.yaml |
ESI-Include-Validator 0.0.0.0/8 | bereits privat (CVE-2026-58178) |
| Plugin-Redirect-Zähler-Reset | geschlossen (CVE-2026-58189) |
Nicht CVE-2026-58189. Nicht CVE-2026-58178. Diese Bereiche wurden auf CONNECT und ESI benannt. Follow-redirect hat sie nicht erhalten.
python3 ats-redirect-zero-net-Abraxas-Labs.py
oder
cd lab
./run.sh
Loopback 127.0.0.1:18790. Compose-Projekt ats-redirect-zero-net. Image ats-10.2.0-lab:local. Witness ATS-REDIRECT-ZERO-NET-WITNESS. Letzte Zeile:
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
Markiere 0.0.0.0/8 und das IPv4-gemappte ::ffff:0:0/96 auf dieselbe Weise, wie es die standardmäßige CONNECT-Ziel-Verweigerung und der ESI IncludeUrlValidator bereits tun. Loopback ist nicht nur 127/8. Dass ats_is_ip_any 0.0.0.0 ablehnt, reicht nicht aus.
Bis dahin belasse number_of_redirections bei 0 oder setze redirect.actions so, dass routable RETURN ist. Ein Plugin TSHttpTxnRedirectUrlSet erzwingt weiterhin einen Hop.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc TSHttpTxnRedirectUrlSet One-Hop-Erhöhungconfigs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 privat (CVE-2026-58178)