LLM(大型语言模型)模型安全是指在预训练的AI模型文件加载到环境之前,对其进行检查以排查其中是否嵌有恶意代码。pickle、PyTorch、TensorFlow和Keras等格式的模型文件在加载的瞬间即可执行代码,这使得它们带来的供应链风险与运行未经审查的软件相当。
简而言之 / 关键要点
- 从 Hugging Face、Kaggle 或 PyPI 下载的预训练模型是可执行代码,而非静态数据
- 根据JFrog发布的《Software Supply Chain 2026年行业现状报告》,53%的企业直接从公共注册表中获取模型,而研究人员在这些注册表中发现了约495个恶意模型,这些模型能够窃取凭证并完全控制系统
- 基于 Pickle 的格式(.pt、.pth、.bin、.pkl)在加载过程中会通过 REDUCE 指令执行任意函数,这与 TensorFlow 图和 Keras Lambda 层存在相同的结构性缺陷
- Safetensors 完全移除了执行引擎,但仍有数十万个旧格式的模型在流通,而且仓库中存在一个安全的文件,并不能保证该仓库的其余部分也是安全的
- MetaDefender Aether™ 会对模型文件进行五层分析,从而检测出诸如“堆叠式 pickle 有效载荷”之类的威胁——此类威胁在传统扫描器中通常会被判定为安全。
预训练的AI模型是跨越信任边界的可执行代码
从头开始构建大型语言模型需要数据、计算资源和时间,而大多数组织并不具备这些条件。因此,开发团队通常会从 Hugging Face、Kaggle 和 PyPI 等公共平台下载预训练模型。这种依赖性形成了一种供应链攻击途径,而许多安全项目至今仍对此视而不见。
各组织已经对其引入到自身环境中的开源库和容器镜像进行了审查。但很少有组织将同样的审查标准延伸到团队下载的人工智能模型上,尽管模型文件并非仅仅是一张数字表格。根据其格式不同,模型文件可能是一个在加载的瞬间就会运行的程序。
仅Hugging Face一个平台就托管着超过100万个模型,其中绝大多数从未经过安全审查。根据JFrog发布的《Software Supply Chain 2026年现状报告》,目前有53%的组织直接从公共注册库中获取模型,而研究人员在这些注册库中发现了大约495个恶意模型,这些模型能够窃取凭证、执行代码并完全控制系统。大型语言模型(LLM)是一种能够跨越信任边界的可执行软件。
基于模型的威胁如何从理论演变为规避手段
该威胁分阶段发展:学术警告、概念验证、现实世界中的供应链滥用,以及旨在规避扫描器的规避技术。
2018–2026年无人机威胁的发展演变
阶段 | 时间范围 | 发生了什么变化 | 代表性证据 |
理论 | 2018 | 学者警告称,来自不可信来源的、被重复使用的预训练模型可能会遭到篡改 | 针对深度学习系统的模型复用攻击 |
概念验证 | 2023–2024 | 真正的恶意模型浮出水面;研究表明基于pickle的格式会携带活跃有效载荷 | 名为 star23/baller13、携带反向壳的模型出现在 Hugging Face 上 |
在野外 | 2024–2025 | 业务量持续增长,通过包裹登记系统实现供应链配送 | 以“阿里巴巴”为名的PyPI包标志着大型语言模型(LLM)供应链攻击的出现 |
高级规避 | 2024–2025 | 分层、堆叠式有效载荷,旨在规避快速检查 | 一个基于Stacked Pickle的验证概念样本在VirusTotal上的评分为0/70 |
更安全的格式 | 2023–2026 | 虽然引入了一种无法承载代码的纯数据格式,但传统模型仍被广泛使用 | Safetensors 成为新机型发布的默认配置 |
Pickle 和 PyTorch 文件在加载的瞬间就会执行代码
Pickle 是 Python 的原生序列化格式,多年来一直是将模型保存到磁盘的标准方式。PyTorch 基于该格式构建了其 .pt、.pth 和 .bin 文件,许多模型也以这些格式发布。如今虽然已有更安全的替代方案,但这些方案被视为抽象的商业术语而被忽略。目前在公共模型库中流通的大部分模型仍然基于 Pickle,各团队每天都在加载这些模型。

Pickle 存储的不仅仅是数据。它是一条指令流,虚拟机在加载文件并重建 Python 对象时会执行该指令流。该指令流可以调用任意函数,因此加载基于 Pickle 的模型时,也会执行代码。
攻击者利用pickle的REDUCE指令,该指令会指示加载器在解序列化过程中,使用攻击者指定的参数调用某个指定函数。在此过程中,模型仍会像合法文件一样加载并运行,攻击者可借此启动反向shell、投放第二阶段有效载荷,或覆盖SSH密钥。
TensorFlow 和 Keras 都存在类似的风险。恶意的 TensorFlow 图可能会将文件写入或网络操作符偷偷植入计算图中,而 Keras 的 Lambda 层则可能携带经过序列化的 Python 字节码,这些字节码会在加载时反序列化。这两种格式都允许文件携带可执行行为。这种风险是结构性的,因此仅修复单个漏洞并不能消除它。这一局限性迫使业界寻找一种更安全的格式。

现实世界中的事件使这一理论演变为Supply Chain 的威胁
关于模型复用攻击的警告最早出现在2018年。随后,研究人员证实了这种风险在实际中确实存在。2024年1月,一个名为star23/baller13的模型出现在Hugging Face上,其PyTorch文件中嵌入了反向shell。该模型既能实现远程访问,又能伪装成有效的模型。



到2025年5月,该威胁已蔓延至传统的供应链领域。攻击者发布了一系列名为 aliyun-ai-labs-snippets-sdk、ai-labs-snippets-sdk 和 aliyun-ai-labs-sdk 的 PyPI 软件包,这些软件包冒充阿里巴巴的 AI 工具包,并在使用过程中悄无声息地加载恶意模型。这些包上线时间不足24小时,却已被下载约1,600次;这再次提醒我们,当下载过程由自动依赖项解析机制完成时,极短的暴露时间就已绰绰有余。

堆叠式Pickle有效载荷击败了传统扫描器
到2024年,攻击者开始将目标锁定在那些旨在检测恶意模型的扫描器上。最明显的例子就是“Stacked Pickle”技术,该技术通过嵌套多个pickle对象,将恶意指令分散到各层中,然后对其进行压缩和编码处理。
单独查看时,每一层似乎都无害,因此仅停留在表面层面的扫描和人工审查都无法发现任何异常。当模型加载时,各层会按顺序解压,并重新组装成有效载荷。使用该技术构建的一个概念验证样本在VirusTotal的所有引擎上均未被检测到。
仅检查可见层的扫描器可能会遗漏隐藏在文件更深处的有效载荷。这就是该样本能够通过所有扫描引擎检测的原因。

Safetensors 完全移除了执行引擎
Safetensors 在不依赖执行引擎的情况下存储模型权重。每个文件包含一个紧凑的元数据头,其中描述了每个张量的形状、数据类型和字节偏移量,随后是原始张量的字节数据。它没有指令流、虚拟机,也没有类似于 pickle 中 REDUCE 的功能,因此无法指示加载器调用函数。
Safetensors 文件是加载器读取的静态数据。即使是恶意构造的文件,在加载时也无法执行代码,因为该格式没有提供供代码运行的途径。

Safetensors为何诞生,以及为何得以普及
传统格式的症结从来不在于权重本身,而在于文件中还可能包含可执行指令。Hugging Face 与 EleutherAI 及 Stability AI 合作,开发了 Safetensors 这一专为替代传统格式而设计的解决方案,它在保留团队所需权重文件功能的同时,去除了该功能。
Safetensors 还非常实用。它通过内存映射的零拷贝访问实现快速加载,可在 PyTorch、TensorFlow、JAX 及其他框架中运行,并已成为大多数新模型发布的默认选择。这些优势使其在无需强制要求的情况下得以广泛普及。

独立审计结果证实了该安全声明的真实性
维护者并非安全声明的唯一依据。该库采用Rust语言编写,其编译器能够防止整类解析错误的发生。2023年,Hugging Face、EleutherAI和Stability AI联合委托Trail of Bits对该格式进行了独立审计。
审计未发现任何可能导致任意代码执行的严重漏洞。审计发现了一些规范上的不准确之处,以及一项缺失的验证机制,正是该机制导致了多语言文件的出现。维护者修复并发布了所有相关更新,随后将 Safetensors 设为默认选项。
此后的记录印证了审计报告的结论。自2024年以来,旧格式已引发多起实际安全事件,而同期尚未发现针对Safetensors格式本身的任何代码执行攻击。Safetensors并未为攻击者提供任何执行机制,使其无法实施那种导致基于pickle格式的文件存在安全隐患的攻击。剩余的风险源自仍被广泛使用的旧格式。
Supply Chain 型号仍需安装检修门
风险源于模型文件格式能否在存储权重的同时携带代码。Pickle、PyTorch、TensorFlow 和 Keras 格式可以做到这一点;而 Safetensors 则因设计原因无法做到。安全人员需要将可执行模型格式视为风险,检查进入环境的每个模型,并尽可能引导团队采用安全的格式。
公共模型库中仍存有数百万个旧版格式的模型,开发团队仍在下载这些模型。此外,一个代码库可能同时包含基于pickle格式的文件和安全的文件,因此即使存在Safetensors权重,也不能保证整个代码库都是安全的。在旧版格式被淘汰之前,模型供应链仍需设置一个审查环节。
实际上,这变成了一份简短且假阳性率较低的核对清单:
- 建议优先使用 Safetensors,并将旧版格式视为使用前需进行检查。任何来自未经审核发布者的 .pt、.pth、.bin、.pkl、.pb 或 .h5 模型,在加载前都应进行扫描。
- 将加载旧版格式的模型视为一个执行事件。如果模型加载过程中会创建一个shell、从Python解释器建立出站连接,或者向敏感路径写入数据,则这是一种行为信号,应像任何代码执行一样纳入主机遥测数据中。
- 应扫描整个工件,而不仅仅是权重文件。分析单位是交付时的模型包,因为在经过验证之前,存储库的格式仅是一种声明,而非保证。
MetaDefender :Aether的五层管道如何检查LLM模型文件
MetaDefender Aether™ 是OPSWAT 推出的统一零日漏洞检测解决方案,通过五层检测管道实现 99.9% 的零日漏洞检测效率。每次提交首先进行文件类型分析,该分析通过识别文件本身而非依赖其扩展名来判定文件类型。每个分析层均可独立得出判定结果。一旦某一层得出明确结论,分析即告终止,因此大多数文件可避免进入更深入、资源消耗更大的后续阶段。
- 威胁声誉。 系统会将文件的哈希值 及相关指标与OPSWAT 的全球威胁情报库进行比对,该数据库包含超过 500 亿条指标。若哈希值已被关联到已知的恶意上传文件,该文件将在一秒内被拦截;而已知安全的文件同样能迅速通过验证,因此只有未知文件才能继续通过。
- 静态分析。在任何程序运行之前,Predictive Alin AI 会结合静态分析和杀毒引擎扫描对文件进行评估。 Predictive Alin AI 无需沙箱触发即可在毫秒内给出基于机器学习的判定结果。该系统基于经过精心筛选且符合隐私保护标准的企业级数据集进行训练,并通过由MetaDefender Aether 确认的检测结果驱动的零日漏洞再训练循环持续优化。对于模型文件而言,可疑的 pickle 文件(其中包含可识别的有效载荷操作码)会在任何仿真时间被消耗之前,就在此阶段被拦截。
- 动态分析。指令级仿真通过在无需为每个样本启动完整虚拟机的情况下揭示文件的行为,从而解决了“堆叠腌菜”(Stacked Pickle)问题。它能够规避反虚拟机检测机制和用于绕过传统沙箱的定时延迟,将分析时间从数分钟缩短至数秒,其速度可达传统沙箱工具的20倍,处理量可达其100倍。
- 威胁评分。该层整合了前三个层级中调用的函数、尝试建立的连接、信誉信号以及其他分析结果。它基于900多个行为指标,生成一个可操作的评分以及用于最终阶段的相似性指纹。
- 威胁狩猎。机器学习相似性搜索会将指纹与OPSWAT 的威胁情报数据库以及MITRE映射的行为进行关联分析,从而识别变种和攻击活动。即使经过重新打包或重命名的恶意模型可能具有新的哈希值,该层仍能检测出其与已知恶意祖先之间的相似性。
整个流程自动运行。它会生成一份综合结论和一份证据报告,该报告将每个指标与其产生的原因关联起来。
MetaDefender Aether 会在每个入口点检查模型文件
模型可通过网络下载、电子邮件、文件传输平台以及自动化管道等方式获取。检查点必须覆盖所有传输路径,同时不强制组织重新设计承载流量的基础设施。
对于网络通道,MetaDefender Aether 通过ICAP 进行集成,该标准协议已被代理服务器、电子邮件网关和文件传输平台广泛采用,用于将文件传递给检查服务。当流量从未经过网络设备时,则可通过 REST 接口API 进行相同的分析。
- Web 下载。当开发人员从 Hugging Face 或 Kaggle 下载模型时,代理或安全 Web 网关会通过ICAP 将下载请求转发至MetaDefender Aether,从而在恶意 pickle 文件到达端点之前将其拦截。
- 电子邮件。作为附件共享的模型文件和AI工具将通过与其他附件相同的处理流程进行提取和分析,从而堵住了绕过注册表级控制的社会工程学攻击途径。
- 文件传输。与合作伙伴及供应商交换的文件,或通过托管文件传输在内部区域之间传输的文件,都会在传输过程中接受扫描,因此即使文件从未接触过公共枢纽,信任边界依然有效。
- 自动化管道和注册表。构建能够通过编程方式获取模型,并通过API 提交模型的构建任务和机器学习平台,确保在将任何内容推广到内部注册表之前完成上述操作,从而彻底封堵了阿里巴巴PyPI包所利用的漏洞——在该漏洞中,依赖项解析过程会自动完成下载,且无人会注意到任何可疑文件。
每条路由都使用相同的检查流程和判定逻辑,因此不存在任何未受监控的通道供攻击者利用。
保障安全,同时不拖慢开发者的工作节奏
安全团队通常无法有效管理模型风险,因为禁止从公共枢纽下载模型并不现实。MetaDefender Aether 允许开发人员保留现有工作流程,同时让构建管道以仿真速度对模型进行在线扫描。被拦截的下载会附带一份说明判定结果的证据报告。
了解MetaDefender Aether如何在大型语言模型(LLM)文件跨越您的信任边界之前对其进行检查。
常见问题
什么是 LLM 模型安全?
LLM 模型安全是指在预训练的 AI 模型文件加载到环境之前,对其进行检查以排查其中是否嵌有恶意代码的实践。该方法将从公共平台下载的模型视为跨越信任边界的可执行软件,而非无害数据。
为什么 pickle 文件对 AI 模型构成威胁?
虚拟机在加载 pickle文件时会执行其中的指令流。REDUCE 指令允许攻击者在此过程中调用任意函数,因此加载基于 pickle 的模型可能会在毫无预警的情况下执行攻击者控制的代码。
什么是 Safetensors,它与 pickle 有什么区别?
Safetensors 是一种仅用于存储模型权重的纯数据文件格式,包含元数据头和原始张量字节,既没有执行引擎,也没有类似于 pickle 中 REDUCE 指令的功能。pickle 文件是加载器运行的程序,而 Safetensors 文件则是加载器读取的静态数据。
Safetensors 文件是否仍可能具有恶意?
Safetensors 文件在加载时无法执行代码,因为该格式不提供任何执行路径。不过,一个仓库中可能同时包含基于 pickle 的旧版文件和安全的 Safetensors 权重文件,因此仍需对整个仓库进行检查。
MetaDefender 的Aether是如何检测恶意LLM模型的?
MetaDefender Aether通过五个层级对模型文件进行检查:威胁声誉、静态分析、动态分析、威胁评分和威胁狩猎。它能在大多数文件进入更深层、成本更高的阶段之前将其拦截,并能检测到那些能绕过传统单层扫描器的嵌套pickle有效载荷。
在每个模型跨越您的信任边界之前,请对其进行检查
如今,各团队都依赖于可复用的预训练模型,但每次从公开来源下载模型时,都会引发同一个疑问:该文件是否仅包含数据,还是能够执行代码?MetaDefender Aether 在模型加载之前便给出答案,针对网络下载、电子邮件、文件传输和自动化管道进行五层分析。
- MetaDefender ,
- 威胁分析 ,
- 威胁情报
