CVE-2026-33349fast-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”攻击向量),诱导解析器进行指数级或线性的内存分配。由于限制被绕过,服务器内存将迅速耗尽,导致服务崩溃或无响应。