IPBUF安全漏洞报告
English
CVE-2026-42036 CVSS 5.3 中危

CVE-2026-42036 Axios响应流大小限制绕过漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-42036
漏洞类型
资源耗尽
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Axios

相关标签

资源耗尽AxiosCVE-2026-42036限制绕过

漏洞概述

Axios是一个广泛使用的基于Promise的HTTP客户端。在1.15.1和0.31.1之前的版本中存在安全漏洞,当使用responseType参数设置为'stream'时,Axios在返回响应流时未强制执行maxContentLength配置。这一缺陷允许攻击者绕过预设的响应大小限制,导致下游系统面临无限制数据消耗的风险,可能引发资源耗尽或拒绝服务攻击,建议及时更新。

技术细节

该漏洞的根源在于Axios库在处理流式响应时的逻辑缺陷。开发者通常配置`maxContentLength`选项以防止服务器响应过大导致客户端内存溢出或带宽耗尽。然而,在受影响版本中,当`responseType`被明确设置为'stream'时,Axios内部代码逻辑会跳过对响应内容长度的检查机制。这意味着,即使配置了最大长度限制,恶意服务器或攻击者仍可通过响应超大文件流来绕过该限制。Node.js或浏览器端接收到流后,会持续读取数据直到连接关闭或系统资源耗尽。这种绕过行为直接破坏了预期的安全边界,使得应用程序容易受到资源耗尽攻击,特别是在处理不可信上游数据时风险极高,可能导致服务不可用。

攻击链分析

STEP 1
步骤1
攻击者诱导受害者使用易受攻击版本的Axios向攻击者控制的服务器发起HTTP请求。
STEP 2
步骤2
攻击者的服务器配置为响应一个巨大的数据流(例如无限大的文件)。
STEP 3
步骤3
受害者的客户端使用`responseType: 'stream'`接收响应,由于漏洞,Axios忽略了`maxContentLength`限制。
STEP 4
步骤4
客户端持续下载并处理数据流,导致内存耗尽或带宽被占满,最终引发拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const axios = require('axios'); // Simulate a request to an endpoint that returns a large stream const url = 'http://example.com/large-stream'; axios({ method: 'get', url: url, responseType: 'stream', // Vulnerable condition: triggers bypass maxContentLength: 1024, // Limit set to 1KB, but will be ignored }) .then(response => { const stream = response.data; let totalBytes = 0; stream.on('data', (chunk) => { totalBytes += chunk.length; // Vulnerability: Bytes are received despite the limit console.log(`Received ${totalBytes} bytes`); }); stream.on('end', () => { console.log(`Stream finished. Total: ${totalBytes} bytes`); }); }) .catch(error => { console.error('Error:', error); });

影响范围

Axios < 1.15.1
Axios < 0.31.1

防御指南

临时缓解措施
如果无法立即升级,请避免在处理不可信来源的请求时使用`responseType: 'stream'`,或者在应用层手动监控流的数据量,一旦超过预设阈值立即中断连接以防止资源耗尽。

参考链接

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