
Proof-of-Concept für CVE-2025-22870, der den HTTP-Proxy-Bypass in verwundbaren Versionen (<0.36.0) von golang.org/x/net/http/httpproxy demonstriert. Nutzt eine unsachgemäße IPv6-Zonen-ID-Analyse aus, um NO_PROXY-Beschränkungen zu umgehen, was Proxy-Bypass und potenzielles SSRF in fehlkonfigurierten Umgebungen ermöglicht.
Dieser Proof of Concept demonstriert die Ausnutzung von CVE-2025-22870, einer Sicherheitslücke im Paket golang.org/x/net/http/httpproxy (vor Version 0.36.0), die dazu verwendet werden kann, HTTP-Proxy-Einschränkungen zu umgehen, indem die Art und Weise missbraucht wird, wie IPv6-Zonen-IDs mit NO_PROXY-Mustern abgeglichen werden.
golang.org/x/net/http/httpproxyWenn die Umgebungsvariable NO_PROXY gesetzt ist, um bestimmte Domains davon abzuhalten, über einen Proxy geleitet zu werden (z. B. NO_PROXY=*.example.com), kann eine speziell präparierte Anfrage an einen Host mit einer IPv6-Zonen-ID (z. B. [::1%25.example.com]) fälschlicherweise übereinstimmen und den Proxy umgehen. Dies führt zu einer Proxy-Umgehung, die unter bestimmten Umständen Server-Side Request Forgery (SSRF) ermöglichen könnte.
Diese Sicherheitslücke kann ausgenutzt werden, um Anfragen direkt an interne oder lokale Dienste zu senden, während konfigurierte Proxys umgangen werden, selbst wenn Domains angeblich durch NO_PROXY geschützt waren.
Der PoC nutzt eine Sicherheitslücke im Paket golang.org/x/net/http/httpproxy aus, und zwar in der Art und Weise, wie es IPv6-Zonenkennungen beim Abgleich mit NO_PROXY-Regeln parst.
Die verwendete Payload ist:
[::1%25.example.com]:https://raw.githubusercontent.com/joshuaprovoste/cve-2025-22870/main/7777
Aufgrund des Parsing-Fehlers im anfälligen Paket umgeht diese Adresse den Proxy, obwohl sie mit NO_PROXY übereinstimmt.