
Prova de conceito para CVE-2025-22870 que demonstra bypass de proxy HTTP em versões vulneráveis (<0.36.0) de golang.org/x/net/http/httpproxy. Explora o parse incorreto do ID de zona IPv6 para contornar as restrições do NO_PROXY, permitindo o bypass de proxy e potencial SSRF em ambientes mal configurados.
Este Proof of Concept demonstra a exploração do CVE-2025-22870, uma vulnerabilidade no pacote golang.org/x/net/http/httpproxy (anterior à v0.36.0), que pode ser usada para contornar restrições de proxy HTTP abusando da forma como os identificadores de zona IPv6 são comparados com os padrões NO_PROXY.
golang.org/x/net/http/httpproxyQuando a variável de ambiente NO_PROXY está definida para restringir certos domínios de serem roteados através de um proxy (por exemplo, NO_PROXY=*.example.com), uma solicitação especialmente elaborada para um host com um ID de zona IPv6 (por exemplo, [::1%25.example.com]) pode corresponder incorretamente e evitar ser passada pelo proxy. Isso resulta em bypass de proxy, o que pode permitir Server-Side Request Forgery (SSRF) em determinadas condições.
Essa vulnerabilidade pode ser explorada para enviar solicitações diretamente a serviços internos ou locais contornando os proxies configurados, mesmo que os domínios estivessem supostamente protegidos por NO_PROXY.
O PoC explora uma vulnerabilidade no pacote golang.org/x/net/http/httpproxy, especificamente na forma como ele analisa os identificadores de zona IPv6 ao fazer a correspondência com as regras de NO_PROXY.
O payload usado é:
[::1%25.example.com]:https://raw.githubusercontent.com/joshuaprovoste/cve-2025-22870/main/7777
Devido ao bug de análise no pacote vulnerável, esse endereço contorna o proxy apesar de corresponder ao NO_PROXY.