Picklescan漏洞曝光:恶意PyTorch模型可绕过扫描并执行代码(2026-09-29)
当“安全扫描”不再安全
如果你从事AI开发,大概率用过PyTorch模型。而Picklescan,正是许多团队用来检查模型文件是否藏有恶意代码的“守门人”。但就在本周,这个守门人被曝出存在严重漏洞——攻击者可以精心构造一个PyTorch模型,绕过Picklescan的检测,并在加载时悄无声息地执行任意代码。
漏洞核心:扫描逻辑被“欺骗”
Picklescan的工作原理是解析Python pickle字节码,识别危险函数调用(如os.system、subprocess)。但安全研究员发现,通过多层嵌套的__reduce__方法或利用未被监控的第三方库,可以构造出Picklescan无法识别的恶意载荷。实验数据显示,在Picklescan 0.0.23及更早版本中,超过72%的已知恶意模型样本能成功绕过扫描。
真实案例:一个“正常”的模型文件
某AI初创公司从公开模型库下载了一个图像分类模型。Picklescan报告“无威胁”。加载后,模型却反向连接了外部IP,窃取了环境变量中的API密钥。事后分析发现,恶意代码被隐藏在模型元数据的persistent_id字段中,而Picklescan当时并未检查该路径。
数据警示:风险正在扩大
- 2026年第三季度,Hugging Face等平台上报的恶意模型数量同比上升210%。
- 在抽样测试中,每5个包含
pickle格式的PyTorch模型,就有1个能绕过至少一种主流扫描器。 - 企业平均需要47天才能发现模型加载后的异常行为。
实用建议:如何保护自己
- 不要只依赖Picklescan:结合
modelscan、fickling等多款工具交叉验证。 - 优先使用
safetensors格式:该格式不执行代码,从根源上消除风险。 - 沙箱加载:在隔离容器中首次加载未知模型,监控网络与文件系统调用。
- 签名验证:仅从可信来源下载,并检查模型文件的数字签名。
- 更新依赖:关注Picklescan官方补丁,及时升级到修复版本。
行动号召
今天就去检查你的模型加载流程:你还在用torch.load()不加防护吗?你团队的安全扫描是否只跑一个工具?立刻替换为safetensors,或为Picklescan加上第二道防线。 分享这篇文章给负责模型部署的同事——一个未扫描的模型,可能就是下一个后门。
免责声明:本文仅用于安全研究与教育目的。文中提及的漏洞细节基于公开披露信息,请勿用于非法攻击或未授权测试。读者应自行评估并承担使用相关工具与建议的风险。