Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
docling-core-CVE-2026-24009 — CVE-2026-24009 的技术分析文章与 PoC,演示 docling-core 中不安全的 YAML 加载问题及实用的缓解路径。 | Kitploit
工具/GitHubGitHub/biranperetz/docling-core-cve-2026-24009
漏洞分析代码分析漏洞利用论文与研究学习与教育
GitHubbiranperetz/docling-core-cve-2026-24009

docling-core-CVE-2026-24009

CVE-2026-24009 的技术分析文章与 PoC,演示 docling-core 中不安全的 YAML 加载问题及实用的缓解路径。

查看仓库
6个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-24009 — docling-core 不安全的 YAML 反序列化(PoC + 说明)

本仓库包含一个概念验证(PoC)和一个简单扫描器,用于演示 CVE-2026-24009,该漏洞中 docling-core 在特定依赖条件下加载攻击者控制的 YAML 时可能实现代码执行。

摘要

影响: YAML 解析期间可能发生远程代码执行(RCE) 易受攻击的依赖链(全部必需):

  • docling-core >= 2.21.0 且 < 2.48.4
  • PyYAML < 5.4(与 CVE-2020-14343 相关的上游行为)
  • 应用程序对不受信任的 YAML 调用 DoclingDocument.load_from_yaml(...)

修复: 将 docling-core 升级至 >= 2.48.4(改用 yaml.SafeLoader)
替代修复: 将 PyYAML 升级至 >= 5.4


背景 / 根本原因

DoclingDocument.load_from_yaml() 会反序列化一个 YAML 序列化的 DoclingDocument。在易受攻击的版本中,当 PyYAML 存在漏洞时,它会使用不安全的加载器(yaml.FullLoader)加载 YAML,从而允许恶意 YAML 构造函数在解析期间执行代码(更多信息请参阅 CVE-2020-14343)。


测试环境(PoC)

  • 操作系统:Ubuntu 24.04
  • Python:3.12.3
  • docling-core:2.48.3(易受攻击)
  • PyYAML:5.3.1(易受攻击)

复现(PoC)

1) 创建虚拟环境

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "docling-core==2.48.3" "PyYAML==5.3.1"

2)(可选)确认易受攻击的加载器

运行:

root@kitploit:~
python check_loader.py

在易受攻击的版本中,load_from_yaml() 使用:

root@kitploit:~
data = yaml.load(f, Loader=yaml.FullLoader)

3) 运行 PoC

root@kitploit:~
python repro_docling_load.py

预期行为:

  • repro_docling_load.py 抛出 ValidationError(预期行为)
  • 创建本地标记文件:/tmp/docling_cve_poc_marker

这证明代码执行发生在 YAML 解析期间,早于 DoclingDocument.model_validate(...) 失败之前。


缓解措施 / 补丁验证

缓解措施 1 — 升级 docling-core(推荐)

root@kitploit:~
python -m pip install --upgrade "docling-core==2.48.4"
python check_loader.py
python repro_docling_load.py

预期结果:

  • check_loader.py 显示 yaml.SafeLoader
  • PoC 因 YAML 构造函数错误而失败,且不会创建标记文件

缓解措施 2 — 升级 PyYAML

将 PyYAML 升级至 >= 5.4 可缓解与 CVE-2020-14343 相关的上游行为。

缓解措施 3 — 强制使用安全加载

如果无法升级,请避免使用不安全的加载器加载不受信任的 YAML。在反序列化不受信任的 YAML 时,强制使用 yaml.SafeLoader。


关于下游 docling 暴露的说明(依赖映射)

虽然此 CVE 存在于 docling-core 中,但最常见的消费者是 docling。docling 中宽泛的依赖范围本身并不能证明存在漏洞;关键在于解析后的环境(锁文件 / 已安装的包)以及是否使用了 YAML 导入路径。

本仓库包含 collect_versions.py,用于映射:

  • pyproject.toml 中声明的 docling-core 约束
  • uv.lock(或旧标签中的 poetry.lock)中固定的 docling-core 版本

根据提取的数据,可能易受攻击的 docling 版本(约束允许易受攻击版本 + 锁文件固定为易受攻击版本)为:

  • >= v2.27.0 且 <= v2.57.0

这是依赖解析的指示器,并非证明默认的 docling 工作流会在不受信任的输入上调用 load_from_yaml()。


仓库内容(概览)

  • repro_docling_load.py — 最小 PoC 运行器
  • check_loader.py — 打印 load_from_yaml() 使用的 YAML 加载器
  • scanner/ — 一个简单的基于依赖的扫描器(可选的直接接收点检查)
  • collect_versions.py — 用于将 docling 标签映射到固定的 docling-core 版本的辅助工具
下载工具