+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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

恶意模型包在不安全加载期间可以执行代码。

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

阅读书面版(英文) ↗

本视频涵盖的内容

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

翻译的文字记录

译自英文原版旁白。可用音频和字幕由 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。 负责任地合并。

来源

  1. Data Scientists Targeted by Malicious Hugging Face ML Models with Silent BackdoorJFrog
  2. Malicious ML models discovered on Hugging Face platformReversingLabs
  3. AI Model Confusion: An LLM/AI Model Supply Chain AttackCheckmarx Zero
  4. Pickle ScanningHugging Face
  5. SafetensorsHugging Face
  6. Loading custom modelsHugging Face
  7. Serialization semanticsPyTorch

相关视频

under-the-hood · zh-CN · 2026年9月23日

模型“死亡”的幕后

人工智能模型不会死亡——它会有一个关闭日期,第二天早上,你的 API 调用将返回 404:“该模型已被弃用,点击此处了解更多信息。”幕后:四状态管道(活跃 → 遗留 → 弃用 → 退役)、通知窗口(OpenAI ≥ 6 个月 / 3 个月 / 预览版约 2 周;Anthropic ≥ 60 天)、开发者会遇到的问题(响亮的 404、静默的评估漂移、Claude 4.7+ 新的温度参数 400 错误

3:15 ↗
under-the-hood · zh-CN · 2026年9月19日

通行密钥,深入解析

通行密钥是您的设备生成的一个密码,它从不显示给您,也拒绝透露给任何人——包括您自己。深入解析:WebAuthn 仪式(每站点密钥对、挑战、签名)、浏览器写入的唯一能够阻止网络钓鱼的字段(来源)、设备绑定密钥与同步密钥、AAGUID,以及为什么“不可网络钓鱼”和“不可移动”是同一个属性——这也是“我不喜欢通行密钥”(在 Hacker News 上获得 616 积分)真正关心的。结论:NEEDS RE

3:12 ↗