IPBUF安全漏洞报告
English
CVE-2026-31247 CVSS 7.5 高危

CVE-2026-31247 Docling XXE漏洞致拒绝服务

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-31247
漏洞类型
XXE注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Docling

相关标签

XXE拒绝服务DoclingXML解析DoS

漏洞概述

Docling项目的JATS XML后端在处理XML文件时存在严重安全漏洞。该漏洞影响2.61.0及之前的版本,由于未正确配置XML解析器以禁用实体解析,攻击者可利用恶意的XML文件进行XML实体扩展攻击。这种“XML Bomb”会导致系统资源被过度消耗,最终使运行Docling解析器的服务陷入拒绝服务状态,严重影响系统可用性。

技术细节

该漏洞的核心原因在于Docling的JATS XML后端使用了`etree.parse()`函数处理用户提供的XML文件时,未禁用外部实体或内部实体的解析功能。攻击者利用XML规范中的实体定义机制,构建一个包含递归或指数级嵌套实体的恶意XML文件(即“XML Bomb”)。例如,定义一个实体`&lol;`,它包含多个`&lol9;`,以此类推形成十层嵌套。当Docling尝试解析该文件时,解析器会展开所有实体,生成巨大的数据量(例如几GB的字符串)。这种指数级扩展会瞬间耗尽目标服务器的CPU计算能力和内存资源,导致进程挂起或崩溃,从而实现拒绝服务攻击,且无需用户交互或身份认证即可通过网络触发。

攻击链分析

STEP 1
侦察
攻击者识别出目标系统正在使用Docling工具处理JATS XML文件,且版本在2.61.0及以下。
STEP 2
载荷构造
攻击者编写一个包含恶意DTD(文档类型定义)的XML文件,其中定义了多层嵌套的实体引用(即XML Bomb)。
STEP 3
载荷投递
攻击者通过网络将恶意XML文件上传至Docling解析接口,或诱导系统解析该文件。
STEP 4
漏洞利用
Docling后端使用`etree.parse()`解析XML,触发递归的实体扩展,导致内存和CPU资源呈指数级消耗。
STEP 5
达成影响
系统资源耗尽,Docling进程崩溃或系统无响应,导致针对合法用户的拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?xml version="1.0"?> <!DOCTYPE data [ <!ELEMENT data (#ANY)> <!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;"> ]> <data>&d;</data> <!-- Explanation: This XML PoC defines nested entities. When parsed, the entity 'd' expands to 10^4 characters, consuming excessive memory and CPU, leading to a Denial of Service (DoS). -->

影响范围

Docling <= 2.61.0

防御指南

临时缓解措施
建议立即升级Docling至修复了该漏洞的最新版本。如果无法立即升级,应在代码层面修改XML解析逻辑,例如在Python中使用`defusedxml`库替代标准库,或者配置解析器禁止解析外部实体,同时限制输入文件的最大大小以防止资源耗尽。

参考链接

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