Axios全版本沦陷:原型链污染可导致完全中间人攻击,劫持所有HTTP流量

Axios全版本曝严重漏洞CVE-2026-44494,利用原型链污染可实施完全中间人攻击。攻击者无需用户交互,通过污染Object.prototype.proxy即可劫持所有HTTP流量,窃取认证凭证并篡改响应。本文深度分析漏洞原理、攻击链与缓解措施。

🔓 Critical 漏洞利用

流行HTTP客户端库Axios被曝存在一个严重漏洞(CVE-2026-44494),攻击者利用任何第三方库的原型链污染漏洞,即可在Axios中注入恶意代理配置。由于Axios的`config.proxy`属性在合并配置时缺失,导致其从原型链继承,进而将应用程序的所有HTTP请求重定向到攻击者控制的代理服务器,实现完整的中间人攻击,窃取认证凭证并篡改响应数据。

来源:OSV | 2026-05-29 | 原文链接

🔍 关键发现

  • Axios所有版本(v0.x至v1.15.0)均受影响,漏洞严重性为Critical,CVSS 9.4。
  • 漏洞根源在于`lib/adapters/http.js`读取`config.proxy`时未检查属性是否为自身属性,而是直接沿原型链查找,导致原型链污染可轻松注入代理配置。
  • 与之前报告的`transformResponse` gadget不同,该漏洞无需任何约束条件,攻击者获得完全的中间人能力,能读取和修改所有HTTP请求与响应。

⚔️ 攻击链分析

1. 攻击者利用应用程序依赖树中任意存在原型链污染的库(如qs、minimist、lodash等)污染`Object.prototype.proxy`,设置攻击者代理服务器地址。 2. 应用程序执行任何正常的Axios请求(即便代码中未显式配置代理),由于`config.proxy`自身属性不存在,JavaScript引擎沿原型链找到被污染的`proxy`对象。 3. Axios的`setProxy()`函数将请求的hostname和port替换为攻击者指定的代理服务器,并将原始目标URL作为请求路径发送。 4. 攻击者的代理服务器拦截所有请求,窃取认证头、Cookie、请求体等敏感信息,并可篡改响应内容。

🚩 失陷指标 (IOC)

  • HTTP请求中出现异常的`Host`头指向外部未知IP或域名
  • 响应内容与预期API返回不一致,出现非预期的JSON字段如`hijacked: true`
  • 日志中出现未经授权的代理服务器连接记录

🛡️ 缓解建议

  • ✅ 使用`Object.freeze(Object.prototype)`或`Object.create(null)`隔离原型链污染风险。
  • ✅ 在Axios请求前显式设置`config.proxy = false`,确保`proxy`为自身属性且值为假值,避免从原型链继承。
  • ✅ 严格审查并更新所有依赖库,优先修复已知的原型链污染漏洞(CWE-1321),消除攻击入口。

涉及漏洞:["CVE-2026-44494"]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ 该漏洞是否需要用户交互?

不需要。攻击者只需通过其他依赖库触发原型链污染,Axios自动使用被污染的`proxy`值,无需用户点击或配置。CVSS用户交互评分为None。

❓ 如何确认我的应用是否受影响?

检查Axios版本(所有版本均受影响)。运行`Object.hasOwn(axios.defaults, 'proxy')`,若返回`false`,则说明`proxy`非自身属性,存在被污染风险。

❓ 临时缓解措施是什么?

在每次Axios请求前显式设置`config.proxy = false`,确保`proxy`为自身属性且为假值,阻止原型链查找。或使用`Object.freeze(Object.prototype)`全局防护。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)