axios高危漏洞:请求拦截器使原型污染代理接管HTTP请求
CVE-2026-67320是axios Node.js HTTP适配器的高危原型污染漏洞。攻击者通过污染Object.prototype.proxy,利用请求拦截器返回普通对象的场景,可将HTTP请求劫持至恶意代理,泄露Authorization头、请求体等敏感信息。本文分析攻击链、影响范围及缓解措施,帮助开发者加固应用。
🔓 High 漏洞利用
axios Node.js HTTP适配器存在高危漏洞,当请求拦截器将加固后的配置对象转为普通对象时,攻击者可通过原型污染注入Object.prototype.proxy,劫持HTTP请求至恶意代理,导致Authorization头、请求体等敏感信息泄露。
来源:OSV | 2026-07-20 | 原文链接
🔍 关键发现
- axios请求拦截器返回普通对象(如{...config})会解除配置的null-prototype加固,使config.proxy可经原型链被污染属性覆盖。
- 攻击者只需原型污染Object.prototype.proxy,即可将受影响请求路由到任意代理服务器,无需直接控制目标URL。
- 明文HTTP请求的Authorization头、Basic Auth、请求体及绝对URL等信息会被代理窃取,且代理可返回伪造响应。
⚔️ 攻击链分析
攻击者利用应用中的原型污染漏洞设置Object.prototype.proxy;应用使用axios且请求拦截器返回普通对象克隆;axios将未加固的config传给HTTP适配器;适配器读取继承的proxy属性,请求被转发至攻击者代理,泄露敏感数据。
🚩 失陷指标 (IOC)
Object.prototype.proxy 被污染的对象属性攻击者控制的代理服务器地址(如IP:Port)
🛡️ 缓解建议
- ✅ 升级axios至修复版本,并关注官方安全公告。
- ✅ 在无需代理的请求或实例上显式设置proxy: false。
- ✅ 避免在拦截器中返回普通对象克隆,应返回原config或使用null-prototype对象。
涉及漏洞:["CVE-2026-67320"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 该漏洞是否影响浏览器端的axios?
不影响。漏洞只存在于Node.js HTTP适配器,浏览器适配器不读取config.proxy,且原型污染影响范围不同。
❓ 如何检测对象是否已被原型污染?
执行Object.prototype.proxy === undefined检查,或使用Object.hasOwn(Object.prototype, 'proxy')判断是否存在自有属性。
❓ 如果必须使用拦截器返回新对象,如何规避?
克隆时使用Object.create(null)创建无原型对象,并复制属性,或显式设置config.proxy为false来覆盖继承值。