CVE-2026-40682Apache OpenNLP 的 DictionaryEntryPersistor 类在解析 XML 字典文件时存在安全配置缺陷。由于未禁用 DTD 处理且未开启安全处理特性,攻击者可诱导应用加载包含恶意 DOCTYPE 声明的字典文件,从而触发 XXE 漏洞。该漏洞可能导致敏感文件泄露或服务端请求伪造(SSRF),对系统机密性和完整性构成严重威胁。
该漏洞源于 Apache OpenNLP 中 `DictionaryEntryPersistor` 类的静态 `SAXParserFactory` 初始化方式不安全。在类加载时,该 Factory 既未启用 `FEATURE_SECURE_PROCESSING` 标志,也未禁用 DTD 处理。当调用 `create(InputStream, EntryInserter)` 方法解析用户提供的字典输入流时,仅设置了命名空间支持,而完全保留了外部实体解析和 DOCTYPE 声明的功能。这一行为与项目中其他路径正确配置的 `XmlUtil.createSaxParser()` 助手不一致。攻击者可构造包含恶意 DOCTYPE 声明的 XML 字典文件(如停用词列表),利用 `file://` 协议读取服务器本地敏感文件,或利用 `http://` 协议发起 SSRF 攻击。攻击发生在应用处理字典条目之前的 SAX 解析阶段,由于公开的 `Dictionary(InputStream)` 构造函数直接代理此方法,且文档建议加载用户提供的字典,因此无需用户交互即可远程利用。