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

CVE-2026-42037 Axios CRLF注入漏洞

披露日期: 2026-04-24

漏洞信息

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

相关标签

CRLF注入AxiosNode.jsHTTP请求体注入CVE-2026-42037

漏洞概述

Axios是一个流行的HTTP客户端。在1.0.0至1.15.1之前的版本中,lib/helpers/formDataToStream.js的FormDataPart构造函数在处理Blob对象的type属性时,未正确过滤CRLF字符。攻击者可利用此漏洞在multipart/form-data请求体中注入任意MIME头,从而绕过Node.js v18+的内置HTTP头保护机制。

技术细节

该漏洞的核心在于Axios库中`lib/helpers/formDataToStream.js`文件的`FormDataPart`构造函数实现存在缺陷。当Axios处理FormData对象时,如果其中包含Blob或File类型的对象,它会读取该对象的`type`属性并将其直接拼接到multipart/form-data请求体中对应部分的`Content-Type`头部字段中。关键问题在于,代码未对`type`属性中的特殊字符(特别是回车符` `和换行符`
`)进行过滤或转义。攻击者若能控制上传文件的元数据(例如作为代理服务处理用户上传),即可构造恶意的`type`值(如`image/png
X-Attacker: injected`)。当Axios构建请求体时,这些CRLF字符会被解析为换行,从而在multipart边界内插入任意伪造的头部字段。由于Node.js v18及以上版本仅对HTTP请求头进行规范化处理以防止CRLF注入,而该漏洞发生在HTTP消息体内部,因此能够成功绕过浏览器的安全防护,可能导致请求走私、缓存投毒或绕过后端安全检查。

攻击链分析

STEP 1
1. 攻击准备
攻击者准备一个包含恶意数据的Blob对象,并在其type属性中注入CRLF(\r\n)序列及后续的伪造头部字段。
STEP 2
2. 发起请求
攻击者通过Web应用将恶意的Blob对象作为文件上传,该应用后端使用Axios作为代理转发请求。
STEP 3
3. 漏洞触发
Axios在构建multipart/form-data请求体时,直接将未经过滤的type属性值拼接到Content-Type头部,导致CRLF生效。
STEP 4
4. 注入完成
恶意CRLF导致multipart请求体中生成额外的头部,攻击者利用注入的头部可能绕过安全检查或实施请求走私。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const axios = require('axios'); const FormData = require('form-data'); const { Blob } = require('buffer'); // PoC for CVE-2026-42037 // This demonstrates CRLF injection in the "type" property of a Blob async function exploit() { // Create a malicious Blob with CRLF characters in the type // This injects a fake header into the multipart body const maliciousContent = 'Hello World'; const injectedHeaders = '\r\nX-Injected-Header: pwned'; const maliciousType = `text/plain${injectedHeaders}`; const blob = new Blob([maliciousContent], { type: maliciousType }); const form = new FormData(); form.append('file', blob, 'exploit.txt'); try { // Send the request using the vulnerable Axios version const response = await axios.post('http://localhost:8080/upload', form, { headers: { ...form.getHeaders() } }); console.log('Request sent, check the raw request body for injected headers.'); } catch (error) { console.error('Error:', error); } } exploit();

影响范围

Axios >= 1.0.0, < 1.15.1

防御指南

临时缓解措施
如果无法立即升级,建议在代码层面拦截对Blob对象type属性的引用,或使用中间件在请求发送前清理multipart表单数据中的非法字符,防止CRLF注入。

参考链接

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