Axios项目发布安全公告,披露其基于Promise的流行HTTP客户端(适用于Node.js 和浏览器)存在新漏洞。该漏洞编号CVE-2025-58754,CVSS评分7.5,攻击者可通过滥用Axios处理data: URL的方式,导致Node.js 进程崩溃。
漏洞原理:data: URL内存处理缺陷
公告指出,当Axios在Node.js 环境中处理data:协议URL时,不会执行HTTP请求,而是通过Node http适配器将整个 payload 解码到内存(Buffer/Blob)并返回伪造的200响应。
与普通HTTP响应受maxContentLength或maxBodyLength限制不同,Axios对data: URI完全忽略这些大小限制。漏洞根源在于fromDataURI函数:它将Base64 payload完整解码为Buffer,且未进行任何大小检查。即使开发者配置了Axios的大小限制,这些保护仅对HTTP流生效,对data: URI无效——攻击者可构造任意大小的data: URI,导致Node进程将全部内容加载到内存,最终引发内存耗尽(OOM)崩溃。
攻击利用与风险
已有公开的概念验证(PoC) exploit,证明攻击者可通过单个恶意请求触发内存溢出崩溃。例如,构造超大Base64编码的data: URL,Axios会无限制解码并占用系统内存,导致服务不可用。
受影响版本与修复措施
- 受影响版本:Axios <1.11.0
- 已修复版本:Axios 1.12.0
Axios团队强烈建议用户立即升级,并提供以下修复策略:
- 强制大小限制:解码前检查Base64 payload长度,拒绝超过配置阈值的请求。
- 流式解码:采用流式Base64解码器增量处理数据块,若超出限制可提前终止。
在未应用补丁前,开发者应避免处理不可信的data: URI,并确保Axios在敏感环境中不暴露于攻击者可控的输入。
发表评论
您还未登录,请先登录。
登录