Axios高危漏洞:原型污染可致HTTP请求被劫持至恶意代理

Axios曝高危漏洞GHSA-gcfj-64vw-6mp9:原型污染结合请求拦截器克隆模式,可致Node.js HTTP请求被劫持至攻击者控制代理,泄露认证凭证与请求数据。提供缓解措施与检测指南。

🔓 High 漏洞利用

攻击者通过原型污染在Object.prototype上设置proxy属性,结合Axios请求拦截器返回普通对象克隆的常见模式,可劫持Node.js HTTP适配器发起的请求,将其路由到攻击者控制的代理服务器,导致认证凭证和请求数据泄露。

来源:OSV | 2026-07-20 | 原文链接

🔍 关键发现

  • Axios在合并配置时使用null-prototype对象防御原型污染,但请求拦截器返回的普通对象克隆(如{...config})会撤销该保护
  • Node.js HTTP适配器读取config.proxy时通过原型链解析,若Object.prototype.proxy被污染则请求被重定向
  • 攻击者控制的代理可获取显式Authorization头、Basic认证、请求方法、URL、Host头和POST正文内容

⚔️ 攻击链分析

1. 攻击者通过其他漏洞在进程中实现Object.prototype.proxy污染 2. 受害者应用使用Axios请求拦截器并返回普通对象克隆 3. Axios将未重新加固的配置传递给Node HTTP适配器 4. 适配器通过原型链读取到被污染的proxy配置,将请求发送至攻击者代理

🚩 失陷指标 (IOC)

  • Object.prototype.proxy 被设置为恶意代理对象
  • 请求实际发往非预期代理服务器IP/端口

🛡️ 缓解建议

  • ✅ 在请求或Axios实例上显式设置proxy: false(当不需要代理时)
  • ✅ 避免在请求拦截器中返回普通对象克隆,改用null-prototype对象或直接返回原始config
  • ✅ 使用Node fetch适配器替代HTTP适配器(若兼容)

涉及漏洞:[]


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

🤖 常见问题解答(FAQ)

❓ 如何检测应用中是否存在此漏洞?

检查所有Axios请求拦截器,看是否返回了{...config}或Object.assign({}, config)等普通对象克隆。同时检查是否使用Node HTTP适配器且未设置proxy: false。

❓ 攻击前提是什么?

攻击者需先通过其他漏洞(如JSON.parse、不安全的对象合并)在进程中实现Object.prototype.proxy污染。

❓ HTTPS请求是否受影响?

在正常TLS验证下,HTTPS请求的Header和Body不会被代理泄露,但请求仍可能被路由至恶意代理,导致连接失败或降级攻击。

[!] CONTACT_CHANNELS

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

> PING_AUTHOR (@A1RedTeam)