警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

导语

近日,腾讯朱雀实验室发现著名AI社区Hugging Face开源组件datasets存在不安全特性,可引发供应链后门投毒攻击风险。AI开发者使用该组件加载攻击者构造的包含恶意代码的数据集时,会导致PC/服务器被入侵,同时在大模型预训练、微调等场景中,最终还可能导致大模型参数被窃取或篡改。

朱雀在此建议大家及时排查,同时也将持续进行大模型基础设施安全研究,分享团队在大模型时代下对于前沿安全攻防技术的思考与实践,保障大模型安全、可靠地落地应用,与行业共同提升大模型生态安全性。

关于Hugging Face

作为“AI领域的GitHub”,全球最具影响力的AI开源社区,Hugging Face 提供了大量高质量的开源模型、数据集以及AI应用托管服务,极大地降低了AI的技术门槛,该组织开源的transformers、datasets等组件也在AI领域被广泛使用。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

其中datasets组件(github.com/huggingface/datasets)为广大开发者提供了一种高效、易于使用的方法来处理各种数据集,能够更轻松地训练和微调 AI 模型,在Github上有17k+ Star,是目前最流行的AI数据集开源组件。截止2023年10月,Hugging Face平台托管了73763个公开数据集供开发者使用,开发者可以使用datasets直接加载平台所有公开数据集。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图1:Hugging Face 数据集托管服务

Datasets组件的不安全特性

朱雀在对datasets等AI开源组件进行安全研究时发现,开发者通常会使用datasets组件的load_dataset函数加载数据集,为了考虑支持更复杂的数据处理格式或流程,当加载的数据集下包含有与数据集同名的Python脚本时,将会默认运行该脚本。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图2:Datasets官方使用文档

由于Hugging Face平台上的数据集都由用户上传,如果数据集中的Python脚本包含恶意行为,那么会造成严重的安全风险,如下图所示,攻击者构造的恶意脚本会主动连接攻击者服务器,并等待攻击者下发执行系统命令,最终窃取受害者服务器上的敏感数据。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图3:Datasets加载恶意数据集风险

不安全特性可被利用于供应链攻击

利用该特性,攻击者可通过在Hugging Face、GitHub及其他渠道分发包含恶意后门代码的数据集,当开发者通过datasets组件加载恶意数据集进行训练或微调时,数据集里的恶意后门代码将会运行,从而导致AI模型、数据集、代码被盗或被恶意篡改。

攻击流程如下图所示:

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图4:恶意数据集攻击流程

作为AI领域的基础库,datasets拥有很大的下载量,根据pypistats网站统计,最近一天下载量将近10万。一旦有恶意数据集在网络上被大范围传播与使用,将会有大量开发者遭受这种供应链后门投毒攻击。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图5:Datasets下载量统计(pypistats)

厂商缓解措施

经与Hugging Face官方沟通,厂商认为datasets组件默认运行数据集内的Python脚本属于正常特性,表示已在GitHub开源项目中做过免责声明。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图6:Hugging Face datasets免责声明

朱雀进一步研究发现,相同的风险存在于Hugging Face官方平台所使用的datasets-server (https://github.com/huggingface/datasets-server)组件中,该组件主要用于对外提供数据集托管服务,可导致Hugging Face平台自身被攻击。

2023年10月20日,Hugging Face 确认并修复了朱雀报告datasets-server组件漏洞,并评级为严重(CVSS评分9.6)。同时,朱雀也协助官方提供尽可能详尽的安全修复建议,官方在平台上对所有可能存在风险的数据集做出了进一步的安全风险提示。

警惕 Hugging Face 开源组件风险被利用于大模型供应链攻击

图7:Dataset Viewer风险提示

安全建议

我们认为,随着大模型越来越普及,在未来一段时间里,恶意数据集或将成为APT组织或黑客的攻击利器,除了Hugging Face,其他外部来源(如GitHub)、甚至本地数据集也需要AI与大模型开发者们高度警惕。

为了进一步保障业务的安全,朱雀建议可采取以下措施:

1、使用datasets-server作为服务端组件的开发者或团队,请及时更新到包含以下commit的版本(c8f45f858ca71c2e66782c672bfbaa8d965eab02)。

2、对于使用datasets组件的广大社区开发者或团队,请确保数据集来源可信,检查数据集脚本中是否存在恶意Python代码,谨慎使用在Hugging Face上被提示存在安全风险的数据集。

本文转载自腾讯朱雀实验室,本文观点不代表墨知立场。

(0)
上一篇 2023年10月10日 下午7:51
下一篇 2023年11月21日 下午10:23

相关推荐

  • org.apache.avro:avro 组件安全漏洞及健康度分析

    文章更新时间:2023-09-18 16:30 组件简介 维护者 apache 组织 许可证类型 Apache-2.0 首次发布 2010 年 9 月 3 日 最新发布时间 2023 年 7 月 3 日 GitHub Star 2578 GitHub Fork 1517 依赖包 1,933 依赖存储库 15,858 描述:Avro 是一个独立于语言、基于架构…

    2023年9月18日
    0
  • org.slf4j:slf4j-api 组件安全漏洞及健康度分析

    文章更新时间:2023年8月23日 17:40 组件简介 维护者 qos-ch组织 许可证类型 MIT 首次发布 2009 年 8 月 21 日 最新发布时间 2023 年 3 月 22 日 依赖包 54,026 依赖存储库 309,657 Docker 依赖数 30,608 Docker 下载量 14,241,218,755 Java 的简单日志门面(SL…

    2023年8月24日
    0
  • com.beust:jcommander 组件安全漏洞及健康度分析

    文章更新时间:2023-09-22 12:00 组件简介 维护者 cbeust 个人 许可证类型 Apache-2.0 首次发布 2010 年 7 月 15 日 最新发布时间 2022 年 1 月 11 日 GitHub Star 1874 GitHub Fork 335 依赖包 1,232 依赖存储库 9,844 JCommander,由Cédric Be…

    2023年9月22日
    0
  • com.hankcs:hanlp 组件安全漏洞及健康度分析

    文章更新时间:2023-09-27 16:50 组件简介 维护者 hankcs 个人 许可证类型 Apache-2.0 首次发布 2015 年 5 月 2 日 最新发布时间 2023 年 2 月 25 日 GitHub Star 30340 GitHub Fork 8757 依赖包 41 依赖存储库 660 com.hankcs:hanlp 是一个面向生产环…

    2023年9月27日
    0
  • com.alibaba:fastjson 组件安全漏洞及健康度分析

    文章更新时间:2023年8月22日 17:40 组件简介 维护者 alibaba组织 许可证类型 Apache-2.0 首次发布 2015年5月10日 最新发布时间 2023年8月15日 依赖包 5,081 依赖存储库 117,744 Docker 依赖数 1,494 Docker 下载量 9,591,272 fastjson是阿里巴巴的开源JSON解析库,…

    2023年8月24日
    0