
Proof-of-concept for CVE-2025-22870 demonstrating HTTP proxy bypass in vulnerable versions (<0.36.0) of golang.org/x/net/http/httpproxy. Exploits improper IPv6 zone ID parsing to evade NO_PROXY restrictions, enabling proxy bypass and potential SSRF under misconfigured environments.
Cette preuve de concept démontre l'exploitation de CVE-2025-22870, une vulnérabilité dans le package golang.org/x/net/http/httpproxy (antérieur à la version v0.36.0), qui peut être utilisée pour contourner les restrictions de proxy HTTP en abusant de la manière dont les identifiants de zone IPv6 sont mis en correspondance avec les motifs NO_PROXY.
golang.org/x/net/http/httpproxyLorsque la variable d'environnement NO_PROXY est définie pour restreindre certains domaines à ne pas être routés via un proxy (par exemple, NO_PROXY=*.example.com), une requête spécialement conçue vers un hôte avec un ID de zone IPv6 (par exemple, [::1%25.example.com]) peut correspondre incorrectement et éviter d'être proxifiée. Cela entraîne un contournement de proxy, ce qui pourrait permettre une falsification de requête côté serveur (SSRF) dans certaines conditions.
Cette vulnérabilité peut être exploitée pour envoyer des requêtes directement à des services internes ou locaux tout en contournant les proxies configurés, même si les domaines étaient censés être protégés par NO_PROXY.
La PoC exploite une vulnérabilité dans le package golang.org/x/net/http/httpproxy, plus précisément dans la manière dont il analyse les identifiants de zone IPv6 lors de la mise en correspondance avec les règles NO_PROXY.
La charge utile utilisée est :
[::1%25.example.com]:https://raw.githubusercontent.com/joshuaprovoste/cve-2025-22870/HEAD/7777
En raison du bogue d'analyse dans le package vulnérable, cette adresse contourne le proxy malgré la correspondance avec NO_PROXY.