CVE-2026-39825
ReverseProxy Query Parameter Forwarding Bypass via url.ParseQuery
Publication date: 2026-05-07
Last updated on: 2026-05-08
Assigner: Go Project
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| golang | go | From 1.26.0 (inc) to 1.26.3 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-UNKNOWN |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
CVE-2026-39825 is a vulnerability in Go's net/http/httputil package, specifically in the ReverseProxy component. The issue arises because ReverseProxy forwards HTTP requests containing more query parameters than the limit set by url.ParseQuery (controlled by GODEBUG=urlmaxqueryparams=N). When used with Rewrite or Director functions that parse query parameters, ReverseProxy attempts to sanitize the request by removing unparsed parameters. However, it does not respect the limit on the total number of query parameters, allowing it to forward hidden query parameters that the Rewrite function cannot see.
For example, a request with 10,000 parameters could include a hidden parameter like "hidden=y" that is forwarded by ReverseProxy but remains invisible to the proxy's Rewrite function. This means that some parameters can be forwarded without being inspected or modified by the proxy's rewriting logic.
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
The provided information does not specify any direct impact of this vulnerability on compliance with common standards and regulations such as GDPR or HIPAA.
How can this vulnerability impact me? :
This vulnerability can impact you by allowing hidden query parameters to be forwarded by the ReverseProxy without being visible or processed by Rewrite or Director functions that parse query parameters. This can lead to unexpected or unauthorized parameters reaching backend services, potentially bypassing security controls or input validation implemented in the proxy.
Such hidden parameters could be used to manipulate backend behavior, cause incorrect processing of requests, or introduce security risks such as injection attacks or unauthorized access if the backend relies on the proxy for sanitization.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability involves the ReverseProxy forwarding hidden query parameters that are not visible to Rewrite or Director functions due to exceeding the url.ParseQuery limit controlled by GODEBUG=urlmaxqueryparams=N.
To detect this vulnerability on your system or network, you can monitor HTTP requests handled by ReverseProxy for unusually large numbers of query parameters, especially requests with query strings containing thousands of parameters.
You can use network traffic inspection tools or logs to identify requests with a very high number of query parameters, and verify if any hidden parameters are being forwarded unexpectedly.
For example, you might capture HTTP requests and analyze query strings with commands like:
- Using tcpdump or tshark to capture HTTP traffic: `tcpdump -i <interface> -A 'tcp port 80 or tcp port 443'`
- Extract and count query parameters from captured requests using tools like grep, awk, or custom scripts to identify requests with an unusually high number of parameters.
- If you have access to Go application logs, enable detailed logging around ReverseProxy request handling to detect discrepancies between parsed and forwarded query parameters.
What immediate steps should I take to mitigate this vulnerability?
The primary mitigation is to update the Go version used in your environment to a patched release where this vulnerability is fixed.
Specifically, upgrade to Go version 1.25.10 or later, or if using Go 1.26.x, upgrade to at least 1.26.3, as these versions include the fix that prevents ReverseProxy from forwarding hidden query parameters beyond the url.ParseQuery limit.
Additionally, review and audit any Rewrite or Director functions in your ReverseProxy setup to ensure they correctly handle query parameters and do not rely solely on url.ParseQuery without considering the parameter limit.
As a temporary measure, consider limiting the maximum number of query parameters accepted by your proxy or application to prevent abuse.