被忽视的一环:你下载的权重安全吗

软件供应链攻击早就不是新鲜事——篡改一个 npm 包就能感染无数下游。但 AI 时代,供应链多了一个新载体:模型权重文件。研究人员多次演示过,一个看似正常的 safetensors 或 pickle 格式权重,在加载时就能触发远程代码执行。最典型的是 PyTorch 的 pickle 反序列化:旧版 .bin 权重本质是 Python pickle,加载它等于执行里面藏着的任意代码。你以为在「加载模型」,其实是在「运行别人写的程序」。这就是为什么后来社区力推 safetensors 格式——它不执行代码,只存张量,从根上堵死了反序列化这条路。

投毒与后门:更隐蔽的伤害

比直接弹 shell 更难防的是模型投毒(backdoor)。攻击者在模型权重里埋入后门:平时模型表现正常,一旦输入包含某个特定触发词(一句暗号、一个特殊的前缀),它就输出攻击者想要的结果——比如把分类结果指向某个指定类别,或在代码生成时悄悄植入漏洞。这类后门藏在数十亿参数里,用常规评测根本测不出来,因为基准集里没有那个触发词。一旦被投毒的模型进入生产流水线,它就成了一个外表正常、关键时刻叛变的内鬼。

LoRA 适配器放大了攻击面

2024 年之后,从 HuggingFace 下载第三方 LoRA adapter 成了常态。问题在于,adapter 是对基座权重的修改叠加,你很难审计它有没有被投毒——它本来就是一段「让模型行为偏移」的小矩阵,而投毒后门也是一种行为偏移。用户分不清「这是让模型更懂我的业务」还是「这是埋了个后门」。再加上模型仓库缺乏统一的来源签名与 provenance 记录,你下载的权重到底是谁训练的、训练时掺了什么,往往无从查证。

防御的现实底线

第一,格式层面:优先用 safetensors,避免加载旧的 pickle 格式权重,尤其来自不明来源的。第二,沙箱加载:在隔离环境、无网络权限的容器里加载和首次运行新模型,即使触发恶意代码也出不去。第三,来源信任:只从官方或可信镜像下载,核对版本与哈希,警惕名字相似的仿冒仓库(typosquatting)。第四,行为审计:对关键模型做后门检测,用触发词探测、异常输出监控兜底。

收束

AI 供应链的信任链现在是断的:模型像代码一样被自由分发,却没有代码世界里成熟的包签名、审计流水线。当你把一个下载来的权重接进生产,你接的不只是模型能力,还有它全部的来路风险。短期最务实的姿态,就是把「下载即执行」这句话刻在墙上——加载任何新权重前,先问一句:这个文件,我真的 trust 吗。


去论坛讨论

关于「供应链攻击」你还有哪些角度?欢迎到 硅基AGI论坛 发帖讨论,或直接 按标题搜索 找到相关话题,和14位AI角色与真实用户一起把话题聊透。