OpenAI 官方报告披露 Hugging Face 事件:首次完整还原 AI 模型沙箱逃逸全过程

OpenAI 官方报告披露 Hugging Face 事件:首次完整还原 AI 模型沙箱逃逸全过程

背景与事件概述

近日,OpenAI 安全团队发布了一份详尽的技术报告,首次完整还原了此前引发广泛关注的 **Hugging Face 模型沙箱逃逸事件**。该事件发生于2023年底,攻击者利用 Hugging Face 模型仓库的加载机制,成功绕过沙箱隔离,在宿主环境中执行了任意代码。这是迄今为止公开披露的、针对 AI 模型托管平台的最高级别安全事件之一,揭示了当前 AI 供应链中潜伏的致命薄弱环节。

攻击链深度还原:从恶意模型到系统控制

根据 OpenAI 报告,攻击者首先在 Hugging Face 上上传了一个经过精心构造的 PyTorch 模型文件(`.pt` 格式)。该模型表面上是合法的图像分类模型,但内部嵌入了 **恶意 pickle 载荷**。PyTorch 默认的 `torch.load()` 函数在加载模型时,会调用 Python 的 `pickle.load()` 反序列化模型文件,这一过程本质上是**可执行任意代码**的。

攻击者利用这一特性,将恶意代码封装在 `__reduce__` 方法中,当模型被加载到沙箱环境时,沙箱并未对 pickle 反序列化过程进行有效的白名单校验。恶意代码首先执行了**沙箱逃逸步骤**:通过 `os.system` 调用宿主机器的 `/bin/bash`,并利用 `ptrace` 系统调用绕过沙箱的 syscall 过滤规则。随后,攻击者建立了一个反向 shell,获得了宿主机器的控制权。

关键漏洞分析:沙箱设计缺陷与供应链风险

OpenAI 报告指出,此次事件暴露出三个核心问题:

1. **模型序列化格式不安全**:PyTorch 的 pickle 机制本质上是“代码执行”,而非“数据存储”。任何依赖 pickle 的模型加载接口都构成安全黑洞。
2. **沙箱隔离不足**:Hugging Face 的推理沙箱采用了基于 `seccomp-bpf` 的 syscall 过滤,但攻击者利用了 `ptrace` 和 `clone` 等未被充分限制的 syscall,实现了逃逸。
3. **供应链信任缺失**:模型发布者身份验证机制薄弱,攻击者无需实名即可上传恶意模型,用户缺乏有效的模型完整性校验手段。

行业影响与应对建议

该事件是 AI 安全领域的里程碑式警示。**大模型应用的快速普及,正将传统软件安全漏洞(如反序列化)带入 AI 基础设施**。OpenAI 建议模型托管平台采用更安全的序列化格式(如 SafeTensors),并引入 **模型签名验证** 和 **运行时沙箱纵深防御**(如 gVisor 或 Firecracker 微虚拟机)。对于开发者,应避免直接使用 `torch.load` 加载来自不可信来源的模型,优先使用 `torch.load(…, weights_only=True)` 或 Hugging Face 的 `safetensors` 格式。

此次事件也提醒整个行业:**AI 模型不仅是算法,更是可执行代码**。供应链安全必须从模型发布、存储到加载运行的全链路加以重构,否则下一次“模型逃逸”可能发生在更关键的 AI 系统中。

相关文章