Hugging Face 任意大模型仓库劫持 - 无声的破坏

图片

摘要

在这篇博客中,我们展示了攻击者如何攻击Hugging Face的Safetensors转换空间及其相关的服务机器人。这些服务是一个在Hugging Face上广受欢迎的服务,专门用于将不安全的机器学习模型转换为更安全的版本。我们随后展示了如何通过Hugging Face自身的服务,发送带有攻击者控制数据的恶意拉取请求到平台上的任何仓库,以及如何劫持通过转换服务提交的任何模型。我们使用一个被劫持的模型来证明了这一点,这个模型是设计用来测试转换服务的,该服务允许攻击者通过冒充Hugging Face转换机器人来请求对平台上的任何仓库进行更改。我们还展示了如何可能在服务中持久化恶意代码,以便在模型转换时自动劫持模型。

尽管转换服务的代码在Hugging Face服务器上运行,但系统是在Hugging Face Spaces中容器化的 — 这是一个平台,任何用户都可以在其中运行代码。因此,大部分风险不是针对Hugging Face本身,而是针对托管在该网站上的仓库及其用户。我们的团队感到有义务将这项研究公之于众,以便在造成任何损害之前找到任何可能被破坏的模型。在我们的公开报告漏洞之后,我们还联系了Hugging Face,以便在发布之前给他们时间关闭转换服务或实施安全措施。

介绍

任何人工智能系统的核心都是一个机器学习模型 — 是在给定数据集上进行大量计算的结果,经过训练、调整和优化,以执行特定任务或一般的应用程序。在模型可以部署到产品中或作为服务的一部分使用之前,它必须被序列化(保存)到磁盘上,这被称为序列化格式。通过有效地将模型简化为二进制表示,我们可以在它被训练的系统之外部署模型,或者与我们希望的任何人共享。在行业中,这些模型通常被称为“预训练模型”,并且它们已经风靡全球。

预训练的开源模型是人工智能广泛采用的主要推动因素之一,使数据科学团队能够共享、下载和重用现有模型,以适应他们的特定应用程序,而无需从头开始创建所需的庞大资源。事实上,模型的共享已经变得如此普遍,以至于围绕这一前提创建了公司。Hugging Face拥有一个强大的社区,迄今为止已经上传了超过500,000个预训练模型到平台。

模型即代码

如果您一直在关注我们的研究,您会知道模型其实就是代码,一些广泛使用的序列化格式在某种程度上允许执行任意代码,并且正在被野外利用。最大的罪魁祸首是Pickle,尽管它是最脆弱的序列化格式,但却是最广泛使用的。Pickle是PyTorch库的基础,并且是Hugging Face上最普遍的序列化格式。

为了缓解由易受攻击的序列化格式带来的供应链风险,Hugging Face团队开始开发一种新的序列化格式,这种格式从一开始就以安全为考虑构建,以便不能用于执行恶意代码 — 他们称之为Safetensors。

理解转换服务

Safetensors正如其名,允许安全的反序列化机器学习模型,主要是因为它只存储模型权重/偏移,而不存储可执行代码。为了帮助用户基础转向这个更安全的替代方案,公司创建了一个转换服务,通过拉取请求将仓库中的任何PyTorch模型转换为Safetensors版本。转换服务的代码(convert.py)直接来自Safetensors项目,并通过Hugging Face Spaces运行,这是一个在浏览器中运行Python代码的云计算产品。

在这个空间中,一个Gradio应用程序与convert.py捆绑在一起,提供了一个Web界面,用户可以在其中指定要转换的仓库。该应用程序只允许针对PyTorch二进制文件进行转换,并要求仓库中存在名为pytorch_model.bin的文件才能启动转换过程,如下图所示:

图片

要转换的huggingface存储库

用户可以导航

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星尘安全

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值