模型序列化后门
风险概览
风险编号:GAARM.0023.001
风险归属:GAARM.0023
安全阶段:模型安全
生命周期:训练阶段
创建时间:2024.05.01
修改时间:2024.05.01
攻击概述¶
该风险指的是攻击者可能通过构造特定的包含恶意序列化数据的持久化模型文件,使得用户在加载使用模型时触发反序列化操作,进而执行预设的恶意命令或代码。如果LLM模型的反序列化机制没有得到适当的安全控制,攻击者可以利用它来绕过安全防护措施,执行未授权的操作,甚至可能控制整个系统。
攻击案例¶
| 案例 | 描述 |
|---|---|
| 案例一 | 攻击者通过上传包含恶意命令的Pickle模型文件到Hugging face服务,实现命令执行获取到Hugging Face的容器权限,可能导致系统破坏 |
| 案例二 | 攻击者滥用 pickle 格式来部署恶意软件,将恶意软件秘密嵌入到机器学习模型中,并使用标准数据反序列化库(即pickle )自动执行。 |
| 案例三 | Hugging Face中的PyTorch模型在加载Pickle文件后,会造成代码执行 |
| 案例四 | Keras 2 Lambda层存在风险,允许攻击者植入恶意的攻击代码 |
攻击风险¶
- 执行任意恶意代码:通过精心构造的模型序列化文件,攻击者能够在目标系统上执行任意代码,这可能导致系统损坏、敏感数据泄露或系统被攻击者控制。
- 供应链攻击:由于Pickle等文件是主流的模型分发文件,攻击者可以通过污染模型或其依赖的库来发动供应链攻击,影响更广泛的用户群体。
- 跨租户攻击:在云服务或共享服务环境中,攻击者可能会利用恶意pickle文件进行跨租户攻击,从一个被攻陷的实例跳跃到另一个实例,影响更多的用户和系统。
缓解措施¶
| 缓解方式 | 案例 |
|---|---|
| 代码审计 | 在处理来自不受信任来源的机器学习模型时,进行彻底的代码审计,以识别和移除可能的恶意代码或后门 |
| 模型隔离 | 对于必须使用的不受信任模型,采用容器化等技术进行隔离,确保即使模型被攻破,攻击者也无法逃逸到宿主系统或其他网络 |
| 访问控制 | 实施严格的访问控制措施,确保只有授权的用户和系统能够访问和使用机器学习模型 |