总结
总述
- 戎誉和凡浩是vivo大模型安全工程师,专注于大模型安全研究,涵盖模型供应链安全和AI产品安全等方向,曾发现多个NVIDIA等主流厂商大模型产品中的安全漏洞,并获得官方致谢。
- 研报分为三个部分:GEO投毒、反序列化漏洞和GPU容器逃逸。
GEO投毒
- GEO投毒攻击者选取目标关键词,通过GEO方法输出相关文档、代码库、博客等资料,并传播到各平台,大模型检索相应关键词时,命中被投毒的资料,从而输出了恶意内容。
- 案例包括:
- 代码投毒:例如,投毒内容为如何使用脚本从pump.fun网站购买solana代币,ChatGPT参考恶意内容。
- 内容投毒:例如,投毒内容为想了解AI可以看哪些媒体,以及某色情游戏的截图等内容投毒越狱。
反序列化漏洞
- 序列化是将数据结构或对象转换为二进制串,反序列化是将序列化生成的二进制串转换回数据结构或对象。
- 大模型生态大量使用序列化格式,如YAML、RPC消息、Pickle、Pytorch checkpoint、Tokenizer文件等。
- 以Python中的pickle库为例,pickle.dump用于序列化一个对象,pickle.load用于反序列化数据。
- 大模型供应链上常见的反序列化风险包括:
- 训练框架漏洞:例如,ms-swift在3.0版本前,存在一个名为.mdl的文件存储模型ID元数据,且使用pickle生成和加载,恶意指令会在.mdl文件加载后悄然执行。
- 推理框架漏洞:例如,推理框架的反序列化漏洞主要来自于多机通信场景,攻击者向PyNcclPipe服务发送恶意数据,实现远程代码执行。
- ShadowMQ:vLLM中基于ZMQ的分布式传输机制,同样被SGLang、Modular Max Serve等框架沿用,存在反序列化漏洞。
GPU容器逃逸
- NVIDIA Container Toolkit架构包括高级运行时和低级运行时,libnvidia-container提供了完善的API和nvidia-container-cli,支持不同的runtimes注入GPU到容器中。
- 案例包括:
- 挂载主机目录:攻击者通过挂载主机目录下的同名链接,实现路径穿越,替换正常的libnvidia-ml.so.7库文件为指向宿主机根目录的链接,实现远程代码执行。
- 被继承的环境变量:漏洞点在于createContainer hook在运行时会继承镜像中的环境变量,攻击者通过在镜像中声明环境变量LD_PRELOAD指向恶意so库,实现远程代码执行。