CVE-2026-90885
Apache Camel:Camel-Saxon XML 外部实体处理 - XQueryBuilder 使用 Saxon 的默认解析器设置解析了一个已经是 javax.xml.transform.Source 的消息体,因此该消息体中声明的外部实体被解析
- 已发布
- 2026年10月26日
- 已更新
- 2026年10月26日
- 分配 CNA
- apache
- 观察到的证据
- 2026年10月30日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N低 · 未来 30 天
- 百分位
- 48.5%
- 型号日期
- 2026年10月29日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
Apache Camel Saxon 组件中存在 XML 外部实体引用限制不当漏洞。此问题影响 Apache Camel:4.0.0 至 4.18.5 之前、4.19.0 至 4.22.2 之前。camel-saxon 中的 XQueryBuilder 负责为 xquery 语言和 xquery 组件求值表达式,它构建默认 Saxon Configuration 时使用的解析选项仅设置了空白字符剥离规则,使 XML 解析器保持默认设置,而在默认设置下会接受 DOCTYPE 声明并解析外部实体。类型为 String 或 byte[] 的消息体,或任何以 InputStream 读取的消息体,会先由 Camel 自身的 XML 类型转换器转换为 javax.xml.transform.Source,这些转换器会针对外部实体对解析器进行配置,因此这些消息体不受影响。然而,已经是 Source 的消息体会被原样交给 Saxon,当该 Source 仍需被解析时(如基于流的 Source 那样),Saxon 会使用该 Configuration 对其进行解析,从而绕过了对其他消息体类型所施加的保护。此类消息体例如出现在路由使用 convertBodyTo(Source.class) 转换消息之后,或路由中较早的组件或处理器将消息体设置为基于流的 Source 时。因此,该消息体中声明的带有外部子集或外部实体的 DOCTYPE 会被解析并展开到表达式所针对的文档中。外部发送者的 XML 若以该形式到达 XQuery 表达式或 xquery 端点,便可读取 Camel 进程可读的文件,并导致该进程向文档中指定的主机发起请求。无需任何非默认选项,因为当路由未提供自己的 Configuration 时便会使用默认 Configuration。建议用户升级至 4.23.0 版本,该版本修复了此问题。如果用户处于 4.22.x 发布流,建议升级至 4.22.2。如果用户处于 4.18.x 发布流,建议升级至 4.18.5。4.14.x 发布流及更早版本,以及 4.15.x 至 4.17.x 和 4.19.x 至 4.21.x 发布线,在此问题解决之前已停止维护,将不会获得修复,因此部署在这些版本上的用户必须迁移至受支持的版本。对于无法立即升级的部署,当消息体携带来自不受信任发送者的 XML 时,不要对已经是 javax.xml.transform.Source 的消息体求值 XQuery,或将 xquery 端点或语言的 configuration 选项设置为一个 Saxon Configuration,其解析选项拒绝 DOCTYPE 声明并禁用外部实体和外部 DTD 加载,这正是修复后的版本现在默认应用的做法。
来源
针对 CVE-2026-90885 的可运行概念验证复现程序,该漏洞是 Apache Camel camel-saxon XQuery 中的 XXE(CWE-611),包含 Spring Boot 和 Quarkus 构建以及修复验证。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。