Axios再曝原型污染漏洞:空auth对象可被注入Basic认证头
Axios存在原型污染读取侧漏洞CVE-2026-67314,攻击者通过污染Object.prototype.username/password,可注入Basic认证头。该漏洞影响Node和浏览器环境,需要配合主机端原型污染原语。文章分析技术细节、PoC及缓解措施,帮助开发者防范axios原型污染攻击。
🔓 Medium 漏洞利用
Axios在修复GHSA-q8qp-cvcw-x6jj后仍存在原型污染读取侧漏洞(CVE-2026-67314)。当主机应用存在原型污染时,攻击者可通过污染Object.prototype.username/password,影响axios发出的空auth请求,注入攻击者控制的Authorization头,造成请求篡改或下游认证失败。
来源:OSV | 2026-07-20 | 原文链接
🔍 关键发现
- axios在Node http适配器和resolveConfig.js中未对auth.username和auth.password使用hasOwnProp保护,导致继承自Object.prototype的污染值被读取。
- 利用前提是主机进程存在独立的原型污染漏洞,且应用采用auth: opts.auth || {}等模式传递空对象。
- 该漏洞影响Node、浏览器、React Native等多种环境,攻击者可篡改出站Basic认证头,可能引发凭证注入或请求重定向。
⚔️ 攻击链分析
1. 攻击者通过应用程序其他漏洞(如JSON解析)污染Object.prototype.username和password。 2. 受害者应用发起axios请求,使用auth: {}(空对象)作为配置。 3. axios读取原型链上的污染值,拼接生成Authorization: Basic header。 4. 出站请求携带攻击者控制的认证头,被发送到攻击者监听或可观察的服务器。
🚩 失陷指标 (IOC)
Object.prototype.usernameObject.prototype.password
🛡️ 缓解建议
- ✅ 避免传递空或部分auth对象,仅在应用拥有自己的username和password值时设置auth。
- ✅ 过滤用户输入中的__proto__、constructor和prototype,并对可选用户选项使用own属性检查,避免使用opts.auth || {}。
涉及漏洞:["CVE-2026-67314"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 如何检测此漏洞是否被利用?
检查应用是否存在原型污染漏洞,并审计axios请求中是否传入了空auth对象;若发现请求头Authorization值非预期,需排查Object.prototype污染。
❓ 漏洞影响浏览器端吗?
影响。resolveConfig.js在浏览器、web worker、React Native等环境共享,且采用相同的未保护读取逻辑。
❓ 利用此漏洞需要什么条件?
需要主机进程存在独立的原型污染漏洞(如JSON.parse),且应用使用空auth对象发起axios请求,二者缺一不可。