Axios 1.15.2补丁绕过:原型污染导致Proxy-Authorization头注入
Axios 1.15.2补丁绕过漏洞(CVE-2026-44489)详解:原型污染导致Proxy-Authorization头注入,影响所有配置代理的HTTP请求。分析攻击链、根因(utils.merge()创建普通对象、setProxy()缺少hasOwnProperty检查)及缓解措施。
🔓 Medium 漏洞利用
Axios 1.15.2对原型污染修复不完整,虽然顶层配置对象使用Object.create(null)防护,但嵌套对象(如config.proxy)仍为普通对象,攻击者可通过污染Object.prototype.username/password,在代理请求中注入恶意Proxy-Authorization头,导致代理身份被篡改。
来源:OSV | 2026-05-29 | 原文链接
🔍 关键发现
- Axios 1.15.2的补丁仅保护顶层config对象,未保护utils.merge()创建的嵌套对象。
- setProxy()函数在读取proxy.username、proxy.password、proxy.auth时未使用hasOwnProperty检查,易受原型污染。
- 攻击者无需用户交互,仅需应用程序配置了代理(config.proxy)即可触发,注入的凭证会出现在代理认证日志中。
⚔️ 攻击链分析
1. 攻击者通过依赖链污染Object.prototype.username和Object.prototype.password。 2. 开发者配置axios代理对象{ host: 'proxy.corp', port: 8080 }。 3. mergeConfig()调用utils.merge()创建普通对象,继承了污染的原型属性。 4. setProxy()读取污染属性,构造Proxy-Authorization头并注入到所有代理请求中。
🚩 失陷指标 (IOC)
请求头中出现异常的Proxy-Authorization: Basic ...(非预期凭证)代理服务器日志中出现未授权的用户身份认证条目
🛡️ 缓解建议
- ✅ 升级Axios至1.15.3或更高版本,其中已修复setProxy()的hasOwnProperty检查。
- ✅ 在应用程序启动时使用Object.freeze(Object.prototype)防止原型污染。
- ✅ 审查依赖链,确保无第三方库导致原型污染(如lodash.merge、jQuery.extend等)。
涉及漏洞:["CVE-2026-44489"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 为什么这个补丁绕过比原始漏洞严重性低?
原始漏洞(GHSA-q8qp-cvcw-x6jj)影响所有请求,无需代理配置;此绕过仅影响显式配置了config.proxy的请求,且攻击者无法劫持请求流量,仅能篡改代理身份。
❓ 如何确认我的Axios版本是否受影响?
检查package.json中axios版本是否为1.15.2。1.15.2之前的版本也存在原始漏洞,1.15.3及以上版本已完全修复此绕过。
❓ 攻击者如何实现原型污染?
通过依赖链中的第三方库(如不安全的深拷贝函数)或用户输入合并到对象时触发,无需直接操作Axios代码。