axios4go竞争条件漏洞CVE-2026-21697
axios4go 是专为 Go 语言打造的、对标前端axios风格的 HTTP 客户端库,让 Go 开发者能用更简洁、更符合直觉的方式处理 HTTP 请求。
一、基本情况
axios4go是 Go 语言HTTP客户端库,并非替代 Go 原生net/http,而是对其进行优雅封装,解决原生net/http使用繁琐、配置分散的问题。

axios4go 把前端axios的易用性(比如链式调用、拦截器、统一配置)移植到了 Go 语言中,同时保留 Go 语言的类型安全和高性能特性。
栋科技漏洞库关注到 axios4go 中存在的关于共享HTTP客户端配置的竞态条件漏洞,追踪为CVE-2026-21697,漏洞的CVSS 4.0评分8.2。
二、漏洞分析
CVE-2026-21697漏洞是在版本 0.6.4 之前 axios4go 中存在的一个关于共享 HTTP 客户端配置的竞态条件漏洞,可能导致代理配置泄露。
该漏洞源于全局defaultClient在请求执行过程中被修改,但没有同步直接修改共享http.Client的Transport、Timeout和CheckRedirect属性。
受影响的应用程序包括使用 axios4go 进行并发请求的应用程序(多个协程、GetAsync、PostAsync等),
不同请求使用不同代理配置的应用程序,以及处理敏感数据(认证凭据、令牌、API 密钥)的应用程序。
受影响者:
任何使用axios4go并发请求(多个goroutine、GetAsync、PostAsync等)的应用程序
不同请求使用不同代理配置的应用程序
处理敏感数据(身份验证凭据、令牌、API密钥)的应用程序
攻击场景:
攻击者使用配置好的恶意代理发起并发请求
由于竞争条件,受害者的并发请求(预期直接连接)被路由到攻击者的代理服务器
攻击者拦截凭证、令牌以及敏感的请求/响应数据
严重性:高 - 在并发环境中,该漏洞可能引发凭证盗窃和中间人攻击。
变通方法:
如果不能立即进行升级:
1、避免同时使用具有不同配置的全局函数(如Get、Post、GetAsync等)
2、为每个协程创建单独的Client实例:
client := axios4go.NewClient("https://api.example.com")
// Use client.Request() instead of axios4go.Get()
3、在应用程序中的所有axios4go调用周围添加外部同步(互斥锁)
4、在并发场景中避免使用代理选项
三、影响范围
axios4go <= 0.6.3
四、修复建议
axios4go >= 0.6.4
五、参考链接
管理员已设置登录后刷新可查看