CVE-2025-22870

4.4 MEDIUM

📋 TL;DR

This vulnerability in Go's net/http package causes incorrect proxy pattern matching when IPv6 addresses contain zone identifiers. It allows requests that should be proxied to bypass proxy settings, potentially exposing internal traffic. Affects applications using Go's HTTP client with NO_PROXY environment variables containing wildcard patterns.

💻 Affected Systems

Products:
  • Go programming language
  • Applications built with Go that use net/http package
Versions: Go versions before 1.23.2 and 1.22.11
Operating Systems: All operating systems running affected Go versions
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when using NO_PROXY environment variable with wildcard patterns (*.example.com) and making requests to IPv6 addresses with zone identifiers.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Internal network traffic could be exposed to external networks when it should be proxied through controlled gateways, potentially leaking sensitive data or allowing unauthorized access to internal services.

🟠

Likely Case

Accidental bypass of proxy configurations leading to unexpected network routing, potentially causing connectivity issues or minor data leakage in specific configurations.

🟢

If Mitigated

Minimal impact if proper network segmentation and egress controls are in place, as the vulnerability only affects proxy bypass decisions.

🌐 Internet-Facing: LOW - This vulnerability primarily affects proxy configuration decisions rather than direct external exploitation.
🏢 Internal Only: MEDIUM - Internal applications using Go HTTP clients with NO_PROXY wildcards could experience unexpected proxy bypass.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: NO
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires control over request destination URLs and specific proxy configurations. Proof of concept is publicly available in the Go issue tracker.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Go 1.23.2 and Go 1.22.11

Vendor Advisory: https://go.dev/issue/71984

Restart Required: Yes

Instructions:

1. Update Go to version 1.23.2 or 1.22.11. 2. Recompile affected applications. 3. Restart services using the updated Go runtime.

🔧 Temporary Workarounds

Avoid wildcard NO_PROXY patterns

all

Replace wildcard patterns in NO_PROXY with explicit domain names

export NO_PROXY="example.com,sub.example.com" # Instead of *.example.com

Disable IPv6 zone identifiers

linux

Configure systems to not use IPv6 zone identifiers in network requests

🧯 If You Can't Patch

  • Audit and remove wildcard patterns from NO_PROXY environment variables
  • Implement network monitoring for unexpected direct connections bypassing proxies

🔍 How to Verify

Check if Vulnerable:

Check Go version with 'go version' and verify it's below 1.23.2 or 1.22.11. Also check if applications use NO_PROXY with wildcard patterns.

Check Version:

go version

Verify Fix Applied:

After updating Go, test proxy behavior with IPv6 addresses containing zone identifiers to ensure proper proxy matching.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected direct connections when proxy should be used
  • HTTP client logs showing connections to IPv6 addresses with % characters

Network Indicators:

  • Traffic to IPv6 addresses with zone identifiers bypassing proxy servers
  • Unexpected network flows matching NO_PROXY wildcard patterns

SIEM Query:

source="http_client" dest_ip="*%*" AND NOT proxy_used=true

🔗 References

📤 Share & Export