# Hugging Face 模型文件可运行隐藏代码

Published: 2026-10-12

恶意模型包在不安全加载期间可以执行代码。三个有据可查的示例解释了 Pickle 反向 Shell、损坏文件扫描器行为和研究证明的模型名称混淆，并明确限制了凭据窃取声明。

Canonical: https://thedailydiff.dev/zh-CN/video/2026-10-12-huggingface-model-malware/

## 本视频涵盖的内容

- 数值模型权重、可执行序列化和自定义仓库代码是不同的东西。
- JFrog 和 ReversingLabs 记录了反向 Shell 有效载荷；他们选定的报告并未证实从指定受害者那里窃取了凭据。
- Checkmarx 模型混淆是一项研究演示，需要匹配的远程模型和不安全的加载。
- 首选 safetensors 和修补的加载器，审查并固定自定义代码，并将不熟悉的包与个人机密和不必要的网络访问隔离开来。

## 章节

- 0:00 模型下载如何邀请客人？
- 0:35 加载器如何运行包裹的指令？
- 1:09 哪些秘密在进程的范围之内？
- 1:38 为什么缺少的本地路径会变成远程模型？
- 1:55 损坏的包如何逃避旧的扫描器？
- 2:44 是什么让钥匙在客人无法触及的地方？
- 3:12 我为什么要将此标记为 NEEDS REVIEW？

## 翻译的文字记录

译自英文原版旁白。可用音频和字幕由 YouTube 控制。

### 模型下载如何邀请客人？

0:00 模型文件只是磁盘上的数字。 加载一个恶意 Hugging Face 包打开了一个远程 Shell， 这是对本地 AI 的一个大胆解释。 加载如何变成执行？ 它能触及哪些秘密？ 到底是什么阻止了它？ 并记住一个谜题。 模型可能在危险部分已经发生后未能加载。

0:18 这是 The Daily Diff 的幕后。 Hugging Face 是一个共享机器学习模型的平台， 数据集和应用程序。 模型权重是学习到的数字。 仓库还可以包含配置和 Python 代码。 这里的危险是可执行打包在您加载时进入您的计算机。 Pickle 存储带有重建指令的 Python 对象。

### 加载器如何运行包裹的指令？

0:37 不安全的加载器可以遵循这些指令并在解包时调用函数。 下载字节将包裹放在您的磁盘上。 反序列化打开它。 某个地方，文件格式被提升为无偿系统管理员。 JFrog 于 2024 年 2 月报道了 Goober Two。 其 Pickle 有效载荷打开了一个反向 Shell，向外连接以提供远程命令访问。 该仓库已被删除。 JFrog 还发现了暗示研究人员参与的线索，

1:02 因此归因不确定。 不受欢迎的客人已被记录。 并未证实从实际受害者那里窃取凭据。

### 哪些秘密在进程的范围之内？

1:09 以您的用户身份运行的代码可以读取该进程可以读取的任何内容。 已挂载的云密钥或可访问的令牌成为可能的攻击目标。 将其发送出去还需要可用的网络路由。 单独的数值权重没有神奇的凭据能力。 您的权限提供了模型卡中有趣的部分。 还有另一扇门。 一些模型要求您信任远程代码，这授权了仓库中的 Python。 Safetensor 文件可以与该代码并存。

1:32 检查权重格式涵盖了一个入口，而仓库的代码仍在等待您向它颁发访客徽章。 仍然在等待您向它颁发访客徽章。

### 为什么缺少的本地路径会变成远程模型？

1:38 Checkmarx 演示了模型混淆。 缺少的本地模型路径可以解析为具有匹配名称的公共仓库。 将其与远程代码结合使用 启用后，错误的包可以执行。 这是一项研究演示，涉及一家未具名公司的样本， 在一天内得到纠正。 一个缺失的文件夹获得了房东。 ReversingLabs 于 2025 年 2 月报告了两个样本，

### 损坏的包如何逃避旧的扫描器？

1:58 称该技术为 nullify AI。 两者都包含反向 Shell。 它们的 7z 封装阻止了普通的 PyTorch 加载， 因此此路径需要提取和不安全的反序列化。 损坏的 Pickle 流也暴露了扫描器盲点。 在任何人打开包裹之前，失败的扫描值得调查。 在研究人员无害的测试中，指令 在加载器到达损坏部分并引发错误之前

2:18 写入了一个文件。 想象一下打开一个包裹，放出浣熊，然后注意到运输标签无效。 运输标签无效。 错误消息的语法非常出色，但时机糟糕透顶。 Hugging Face 在二十四小时内删除了报告的样本并更改了扫描器。 该特定发现促使了修复。 安全扫描是有用的证据，将每个扫描器错误视为完全健康 仍然是对失败的极其宽大的解释。

2:43 首选 safetensors 和当前的修补加载器。

### 是什么让钥匙在客人无法触及的地方？

2:46 PyTorch 从 2.6 版开始缩小了其默认加载器。 审查自定义代码并固定审查后的修订。 在隔离环境中运行不熟悉的包，不带个人密钥， 并限制网络访问。 装满挂载凭据的容器是一个带有命名空间的大礼包。 那个开头的谜题有答案。 加载失败会告诉您执行停止在哪里。 较早的指令可能已经运行。

3:08 在打开包裹之前，将秘密保持在其无法触及的范围之外。 Under the hood 的结论。

### 我为什么要将此标记为 NEEDS REVIEW？

3:16 加载器。免费下载应该附带一个模型，并且客人名单应该由我决定。 保持我的决定。 如果您宁愿阅读此内容而不是听我说，那么每天早晨 diff 会免费发送到您的收件箱， 在 the daily diff dot dev，链接如下。 这就是今天的 diff。 我是 Axrisi 的 Niko。 负责任地合并。

## 来源

- [Data Scientists Targeted by Malicious Hugging Face ML Models with Silent Backdoor](https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/) — JFrog
- [Malicious ML models discovered on Hugging Face platform](https://www.reversinglabs.com/blog/rl-identifies-malware-ml-model-hosted-on-hugging-face) — ReversingLabs
- [AI Model Confusion: An LLM/AI Model Supply Chain Attack](https://checkmarx.com/zero-post/hugs-from-strangers-ai-model-confusion-supply-chain-attack/) — Checkmarx Zero
- [Pickle Scanning](https://huggingface.co/docs/hub/en/security-pickle) — Hugging Face
- [Safetensors](https://huggingface.co/docs/safetensors/en/index) — Hugging Face
- [Loading custom models](https://huggingface.co/docs/transformers/en/models) — Hugging Face
- [Serialization semantics](https://docs.pytorch.org/docs/2.14/notes/serialization.html) — PyTorch
