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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-10036-speechbrain-rce — SpeechBrain < 1.1.1 检查点元数据 RCE,通过不安全地解析 CKPT.yaml 中的 PyYAML 实现。 | Kitploit
工具/GitHubGitHub/saiteja-erukude/cve-2026-10036-speechbrain-rce
漏洞分析代码分析漏洞利用论文与研究学习与教育
GitHubsaiteja-erukude/cve-2026-10036-speechbrain-rce

CVE-2026-10036-speechbrain-rce

SpeechBrain < 1.1.1 检查点元数据 RCE,通过不安全地解析 CKPT.yaml 中的 PyYAML 实现。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
1020天前尚未审核
分享

CVE-2026-10036:SpeechBrain 通过 CKPT.yaml 解析实现任意代码执行

严重性: 高危,CVSS 4.0 8.7,CVSS 3.1 8.8(由 CNA VulnCheck 分配)

向量(v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

向量(v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

受影响版本: SpeechBrain < 1.1.1

修复版本: 1.1.1 / 提交 22a6166

CWE: CWE-502(不可信数据的反序列化)

报告者: Sai Teja Erukude

CNA: VulnCheck

发布时间: 2026 年 8 月 27 日


摘要

SpeechBrain 在 1.1.1 之前的版本中,于检查点恢复期间解析 CKPT.yaml 检查点元数据时使用了 PyYAML 的不安全加载器。

能够提供或修改 SpeechBrain 检查点目录的攻击者可以在 CKPT* 检查点目录中放置恶意的 CKPT.yaml 文件。当受害者调用 Checkpointer.recover_if_possible() 时,SpeechBrain 会列出检查点候选并解析每个候选元数据文件,使用以下代码:

root@kitploit:~
yaml.load(fi, Loader=yaml.Loader)

由于 yaml.Loader 支持诸如 !!python/object/apply 之类的 Python 对象构造标签,攻击者控制的检查点元数据可以在检查点发现过程中执行 Python 代码。

恶意检查点无需被选中或恢复。代码执行发生在 SpeechBrain 枚举检查点候选时。

影响

攻击者可以在运行 SpeechBrain 的 Python 进程上下文中执行任意 Python 代码。

这可能影响用户从不受信任的检查点目录、模型工件或归档中下载、解压、恢复或运行训练/推理的工作流程。

根据宿主进程的不同,这可能允许:

  • 读取或修改进程可访问的文件。
  • 访问环境变量和应用程序机密。
  • 调用主机可访问的内部服务。
  • 中断训练、推理或自动化任务。

技术细节

受影响的组件是 SpeechBrain 的检查点恢复/列出流程:

root@kitploit:~
Checkpointer.recover_if_possible()
  -> list_checkpoints()
  -> _construct_checkpoint_objects()

在检查点列出期间,SpeechBrain 扫描包含 CKPT.yaml 的名为 CKPT* 的子目录。每个候选元数据文件在最终检查点选择之前被解析。

不安全的解析发生在 speechbrain.utils.checkpoints.checkpoints.py 中:

root@kitploit:~
meta = yaml.load(fi, Loader=yaml.Loader)

PoC 创建了两个检查点:

  • CKPT+poisoned-metadata:一个较旧的恶意检查点,其 CKPT.yaml 包含 PyYAML 对象应用载荷。
  • CKPT+benign-newer:一个较新的良性检查点,应按时间新近度被选中。

良性检查点会被选中,但恶意检查点元数据在候选列出期间仍会执行。这证明了元数据解析时代码执行与检查点恢复无关。

概念验证

package_builder.py 创建攻击者控制的检查点布局。

run_poc.py 运行验证,调用 Checkpointer.recover_if_possible(),并打印执行证据。

仅在本地测试环境中运行:

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py

在受影响版本上的预期证据:

root@kitploit:~
speechbrain_version: 1.1.0
installed_package: True
recovery_error: None
benign_checkpoint_selected: True
marker_before_recovery: False
marker_after_recovery: True
marker_contents:
speechbrain_checkpoint_yaml_loader_rce_triggered
success: True

重要证据是 benign_checkpoint_selected: True 和 marker_after_recovery: True 同时出现。这表明恶意旧检查点未被选中用于恢复,但其元数据在 SpeechBrain 列出检查点候选时仍被解析并执行。

该载荷故意设计为无害。它仅写入以下本地标记字符串:

root@kitploit:~
speechbrain_checkpoint_yaml_loader_rce_triggered

它不会启动 shell、连接网络服务、读取机密、删除数据或修改 PoC 目录之外的文件。

修复方案

升级到 SpeechBrain 1.1.1 或更高版本。

持久的代码修复是使用 PyYAML 的安全加载器解析检查点元数据:

root@kitploit:~
yaml.safe_load(fi)

或:

root@kitploit:~
yaml.load(fi, Loader=yaml.SafeLoader)

检查点元数据仅需要 unixtime 和 end-of-epoch 等标量值,因此不应为此解析路径启用 Python 对象构造。

如果无法立即修补或升级:

  • 不要使用来自不受信任来源的检查点目录、模型工件或归档。
  • 以最小权限隔离 SpeechBrain 训练和推理任务。
  • 验证或拒绝 CKPT.yaml 中的意外标签和字段。
  • 避免自动从外部提供的检查点目录恢复。

致谢

由 Sai Teja Erukude 发现并报告,通过 VulnCheck 协调。

参考

  • CVE 记录:https://www.cve.org/CVERecord?id=CVE-2026-10036
  • VulnCheck 公告:https://www.vulncheck.com/advisories/speechbrain-arbitrary-code-execution-via-ckpt-yaml-parsing
  • 发布说明:https://github.com/speechbrain/speechbrain/releases/tag/v1.1.1
  • 拉取请求:https://github.com/speechbrain/speechbrain/pull/3067
  • 补丁提交:https://github.com/speechbrain/speechbrain/commit/22a616646a493871401461f80b2d5cf564cb2850
  • PyYAML 文档:https://pyyaml.org/wiki/PyYAMLDocumentation
  • 本地演练:exploit_walkthrough.md
下载工具