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当时并未检查该路径。

数据警示:风险正在扩大

实用建议:如何保护自己

  1. 不要只依赖Picklescan:结合modelscan、fickling等多款工具交叉验证。
  2. 优先使用safetensors格式:该格式不执行代码,从根源上消除风险。
  3. 沙箱加载:在隔离容器中首次加载未知模型,监控网络与文件系统调用。
  4. 签名验证:仅从可信来源下载,并检查模型文件的数字签名。
  5. 更新依赖:关注Picklescan官方补丁,及时升级到修复版本。

行动号召

今天就去检查你的模型加载流程:你还在用torch.load()不加防护吗?你团队的安全扫描是否只跑一个工具?立刻替换为safetensors,或为Picklescan加上第二道防线。 分享这篇文章给负责模型部署的同事——一个未扫描的模型,可能就是下一个后门。


免责声明:本文仅用于安全研究与教育目的。文中提及的漏洞细节基于公开披露信息,请勿用于非法攻击或未授权测试。读者应自行评估并承担使用相关工具与建议的风险。