剖析PickleScan零日漏洞:恶意PyTorch模型如何实现任意代码执行

本文详细分析了PickleScan工具中三个被标记为CVE-2025-10155至10157的零日漏洞。攻击者可通过修改文件扩展名、破坏ZIP存档完整性或利用子类导入等方式绕过安全扫描,在加载PyTorch模型时执行恶意代码,对AI供应链构成严重威胁。

PickleScan零日漏洞分析:恶意PyTorch模型实现任意代码执行

2025年12月4日 - 安全研究人员披露了流行开源工具PickleScan中存在的多个关键零日漏洞。该工具被广泛用于扫描机器学习模型中的恶意代码,包括Hugging Face在内的AI社区都依赖它来检查使用Python的pickle格式保存的PyTorch模型。

漏洞背景:Pickle格式的双刃剑特性

Python的pickle模块虽然灵活,但其加载过程可以执行任意Python代码,这带来了显著的安全风险。这意味着,一个模型文件可能暗藏窃取数据、安装后门或接管系统的恶意指令。

漏洞详情:三种绕过技术

1. 文件扩展名绕过 (CVE‑2025‑10155)

攻击者只需将恶意pickle文件重命名为PyTorch风格的扩展名(如.bin.pt),即可混淆PickleScan,导致其无法分析文件内容。而PyTorch在加载时仍会执行其中包含的代码。

2. ZIP存档CRC绕过 (CVE‑2025‑10156)

此漏洞利用了ZIP存档的处理方式。攻击者通过破坏ZIP文件内部的CRC(循环冗余校验)值,可以导致PickleScan崩溃或扫描失败,而PyTorch仍可能从受损的存档中加载并执行模型,形成一个恶意软件可以藏身的盲点。

3. 不安全全局变量绕过 (CVE‑2025‑10157)

攻击者针对PickleScan对“不安全”模块的阻止列表,利用危险模块(如asyncio)的子类或内部导入来绕过检测。这使得恶意代码仅被标记为“可疑”而非“危险”,尽管任意命令仍可被执行。

影响与风险

CVE ID 漏洞名称 CVSS 分数 严重等级
CVE-2025-10155 文件扩展名绕过 9.3 严重
CVE-2025-10156 ZIP存档CRC绕过 9.3 严重
CVE-2025-10157 不安全全局变量绕过 9.3 严重

由于众多平台和公司将PickleScan作为主要的防御层,这些漏洞对AI模型构成了严重的供应链风险

时间线与修复

JFrog团队于2025年6月29日向PickleScan维护者报告了这些漏洞。修复已在2025年9月2日发布的0.0.31版本中完成。用户被敦促立即升级。

安全建议

  1. 立即升级:将PickleScan更新至0.0.31或更高版本。
  2. 避免使用不安全的Pickle模型:尽可能选择更安全的格式,如Safetensors
  3. 采用分层防御:结合使用沙箱、安全模型仓库等其他安全措施。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计