CVE-2026-39825Go语言标准库中的ReverseProxy组件存在参数过滤绕过漏洞。当配合Rewrite函数使用时,ReverseProxy未正确处理url.ParseQuery的参数数量限制。攻击者可发送包含大量参数的请求,将恶意参数隐藏在限制之后,使其对Rewrite函数不可见,从而绕过安全检查并直接转发至后端服务器。
该漏洞源于Go标准库net/http/httputil中ReverseProxy在处理请求时的逻辑不一致。ReverseProxy组件常与Rewrite函数配合使用,用于修改或过滤请求参数,而Rewrite函数通常依赖url.ParseQuery来获取参数。Go的url解析器受GODEBUG=urlmaxqueryparams=N控制,存在最大解析数量限制。当攻击者发送包含大量参数(例如数万个)的请求时,一旦参数数量超过阈值,ParseQuery将停止解析并返回错误或截断结果,导致Rewrite函数无法感知到超出限制部分的参数。然而,ReverseProxy在将请求转发给后端服务器时,直接使用的是原始的HTTP请求对象,而非经过ParseQuery处理后的数据。因此,攻击者可以将恶意参数(如管理员标识或特殊指令)放置在参数列表末尾,使其成功绕过Rewrite函数的安全检查,被原样转发至后端,从而可能导致未授权访问或参数注入攻击。