CVE-2026-42039Axios是一个广泛使用的基于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应用构成了严重的可用性威胁。