fast-xml-parser 受数字实体扩展影响,绕过所有实体扩展限制(CVE-2026-26278 的不完整修复)
平台
nodejs
组件
fast-xml-parser
已修复版本
5.5.6
## 摘要 CVE-2026-26278 的修复添加了实体扩展限制(`maxTotalExpansions`、`maxExpandedLength`、`maxEntityCount`、`maxEntitySize`),以防止 XML 实体扩展拒绝服务 (Denial of Service)。但是,这些限制仅对 DOCTYPE 定义的实体强制执行。**数字字符引用**(`&#NNN;` 和 `&#xHH;`)和标准 XML 实体(`<`、`>` 等)通过单独的代码路径处理,该路径不强制执行任何扩展限制。 攻击者可以使用大量的数字实体引用来完全绕过所有配置的限制,从而导致过多的内存分配和 CPU 消耗。 ## 受影响的版本 fast-xml-parser v5.x 到 v5.5.3(以及 npm 上的 v5.5.5) ## 根本原因 在 `src/xmlparser/OrderedObjParser.js` 中,`replaceEntitiesValue()` 函数有两个单独的实体替换循环: 1. **第 638-670 行**:DOCTYPE 实体 - 使用 `entityExpansionCount` 和 `currentExpandedLength` 跟踪进行扩展计数。这是 CVE-2026-26278 的修复。 2. **第 674-677 行**:`lastEntities` 循环 - 替换标准实体,包括 `num_dec` (`/&#([0-9]{1,7});/g`) 和 `num_hex` (`/&#x([0-9a-fA-F]{1,6});/g`)。**此循环没有扩展
修复方法
暂无官方补丁。请查找临时解决方案或持续关注更新。