CVE-2026-21697CVE-2026-21697是axios4go Go语言HTTP客户端库中的一个高危竞态条件漏洞。在0.6.4版本之前,该库使用全局共享的defaultClient处理所有HTTP请求。当多个goroutine并发调用GetAsync、PostAsync等异步方法时,会同时修改同一个http.Client实例的Transport、Timeout和CheckRedirect属性,而没有采用任何同步机制进行保护。这种不安全的并发访问导致竞态条件,可能造成请求配置混乱、超时设置错误或重定向逻辑冲突。攻击者可通过构造并发请求场景,触发内存数据竞争,从而获取其他请求中的敏感信息,包括认证凭据、API密钥、会话令牌等。该漏洞影响所有使用axios4go进行并发HTTP请求的应用,尤其是需要处理不同代理配置或敏感数据的系统。
漏洞根源在于axios4go库在初始化时创建了一个全局单例http.Client对象defaultClient,所有HTTP请求默认共享此客户端实例。在并发场景下,不同goroutine调用SetTimeout()、SetProxy()、SetCheckRedirect()等方法时,会直接修改共享http.Client的内部属性。Go语言的http.Client虽然本身是线程安全的,但其Transport、Timeout等字段的修改操作并非原子性。当两个请求几乎同时到达时,一个请求可能正在读取Transport配置,而另一个请求正在修改它,导致data race。具体表现为:1) 请求A读取了请求B设置的代理配置;2) 请求A的超时值被请求B覆盖;3) CheckRedirect函数指向错误的处理逻辑。攻击者可通过发起大量并发请求并监控响应特征,探测到配置混乱现象,进而利用此漏洞进行敏感数据窃取或中间人攻击。