1500+ HuggingFace API token暴露,使数百万 Meta-Llama、Bloom 等大模型用户面临风险

图片

       HugginingFace 和 GitHub 是AI开发人员的重要平台,因此我们决定对这些平台做更为深入的研究。在这项研究中,我们发现了数以千计的 API 令牌,这些令牌暴露给恶意行为者,使数百万最终用户可能受到攻击。

本文的主要内容包括:

  1. 研究动机和目标

  2. 研究方法

  3. 研究结果,以及一些更有趣的发现

  4. 如何修补这些安全漏洞

研究动机和目标

       大型语言模型 (LLM) 是一种人工智能 (AI) 算法,它使用深度学习技术和大量数据源来理解、总结和生成新内容。LLM 是一种生成式 AI,专门用于生成任何类型的内容作为输出(文本、图像、视频等)。这项新的突破性技术风靡全球。

       LLM 技术本质上是对话式的、非结构化的和情境化的,这使得每个人都非常容易使用。今天,LLM技术对于努力保持竞争优势的企业来说是一种不可动摇的策略。认识到其生产力和提高效率的潜力,组织正在部署人工智能工具,将LLM和生成式人工智能 (GenAI) 技术融入其运营中。

       随着 LLM 和生成式 AI 的迅速采用,Hugging Face 已成为从事此类 LLM 项目的开发人员的首选资源。HuggingFace 的主要产品之一是 Transformers 库,这是一个开源库。HuggingFace 注册表托管了超过 500,000 个 AI 模型和 250,000 个数据集,其中一些最著名的产品是 Meta-Llama、Bloom、Pythia 和更多预训练模型,这些模型彻底改变了机器理解人类语言和与人类语言交互的方式。

       该平台的一大亮点是 HuggingFace API 及其 Python 库的功能,它允许开发人员和组织集成模型、读取、创建、修改和删除其中的存储库或文件。这些 HuggingFace API 令牌对组织来说非常重要,恶意利用它们可能会导致重大的负面结果,例如数据泄露、恶意模型传播等。

       了解到HugginingFace 和 GitHub 是AI开发人员的重要平台,我们决定对这些平台做更为深入的研究。在 2023 年 10 月,我们进行了一项研究并调查了 Huggineface 的安全策略,并试图找到暴露的 API 令牌,这可能导致大型语言模型的 OWASP LLM TOP 10 中的三个新风险:

1) 供应链漏洞 - LLM 应用程序生命周期可能受到易受攻击的组件或服务的影响,从而导致安全攻击。使用第三方数据集、预训练模型和插件可能会增加漏洞。

2) 训练数据中毒 - 当 LLM 训练数据被篡改时,就会发生这种情况,引入漏洞或偏见,损害安全性、有效性或道德行为。来源包括抓取的数据、网页文本、公开的web书籍等。

3) 模型盗窃 - 这涉及未经授权访问、复制或泄露专有的 LLM 模型。其影响包括经济损失、竞争优势受损以及可能访问敏感信息。

       我们的研究专注于发现暴露的token,旨在评估潜在风险和弱点的程度。通过仔细审查 HuggingFace 和 Github,我们的目标是提供可操作的解决方法,以加强安全措施并防范潜在威胁,确保平台基础设施的稳健性,以及希望保护其 LLM 投资的组织。

研究方法

       在研究之初,我们使用搜索功能扫描了 GitHub 和 HuggingFace 存储库。在 GitHub 搜索中,我们使用了按正则表达式搜索代码的选项,但是我们遇到了一个问题:这种搜索的结果只返回了前 100 个结果。因此,我们搜索了 HuggingFace 令牌正则表达式(user和org_api令牌),通过这样做,我们能够收到数千个结果,但只能读取其中的 100 个。为了克服这个障碍,我们必须使令牌前缀更长,因此我们暴力执行令牌的前两个字母,以减少每个请求的响应,从而获得对所有可用结果的访问。

图片

第一次搜索仅返回 2400 个可能结果中的 100个结果

       在HuggingFace中,这种行为更难扫描。正则表达式不被允许,但我们能够搜索一个子字符串来获取所有内容。

       但这还不是全部,当我们搜索一个示例子字符串:“hf_aa”时,我们收到的文本不包含所有子字符串,而是以 hf_axxxxx 或 hf_xaxxxxx 开头的文本。(很奇怪吧?!

图片

在 HuggingFace 门户中搜索

       经过调整和重新扫描,在这两个平台上都成功找到了所有token。现在我们需要检查哪个令牌是有效的,因此在下一步中,我们使用了“whoami”HuggingFace API。在此 API 调用中,我们收到了以下数据:

  • 令牌有效性

  • 拥有令牌的 HuggingFace 用户

  • 用户的电子邮件(用于通知其令牌的暴露)

  • 此用户所属的组织及其拥有的权限

  • 令牌的权限/特权

  • 其他具体信息

       然后,我们映射了所有用户及其权限,并列出了他们有权访问的所有模型和数据集(私有和公共)。

研究成果

主要发现

  • 通过 HuggingFace 和 GitHub 发现了数量空前的 1681 个有效token

  • 公开了 Meta、Microsoft、Google 和 Vmware 等高价值组织帐户

  • 获得对 Meta-Llama、Bloom、Pythia 和 HuggingFace 存储库的完全访问权限

       在这项开创性的研究中,我们的团队通过 HuggingFace 和 GitHub 发现了数量惊人的 1681 个有效token,为我们带来了前所未有的发现。

       这项努力使我们能够访问723个组织的帐户,其中包括一些价值极高的组织,包括Meta,HuggingFace,Microsoft,Google,VMware等巨头。有趣的是,在这些帐户中,有 655 个用户的令牌被发现具有写入权限,其中 77 个属于不同的组织,这使我们可以完全控制几家知名公司的存储库。值得注意的是,一些拥有如此广泛访问权限的组织包括 EleutherAI(Pythia) 和 BigScience Workshop(Bloom),这突出了我们研究的影响程度及其在供应链攻击和组织数据完整性领域的潜在影响。

图片

高价值组织的访问权限

深入了解供应链漏洞

       值得注意的是,我们的调查揭示了供应链基础设施的重大漏洞,暴露了备受瞩目的账户。这种暴露的后果是深远的,因为我们成功地获得了对 Meta Llama2、BigScience Workshop 和 EleutherAI 的完全访问权限,包括读写权限,所有这些组织都拥有下载量达数百万次的模型——这一结果使组织容易受到恶意行为者的潜在利用。

       此风险的严重性怎么强调都不为过。通过控制一个拥有数百万下载量的组织,我们现在拥有操纵现有模型的能力,有可能将它们变成恶意实体。这意味着一个可怕的威胁,因为注入损坏的模型可能会影响数百万依赖这些基础模型进行应用程序的用户。

       下面的示例显示了在 meta-llama 组织中创建新的模型存储库:

图片

在 meta-llama 中搜索“测试”模型会返回一个空结果

图片

在 meta-llama 组织中创建名为“test”的新模型存储库

图片

名为“test”的模型现已成功创建并在 meta-llama 组织中找到

训练数据投毒

       其影响不仅限于模型操作。我们的研究还授予了我们对 14 个数据集的写入访问权限,每月下载量达数万次。令人震惊的是,这为一种称为训练数据投毒的恶意技术打开了大门。通过篡改这些受信任的数据集,攻击者可能会破坏机器学习模型的完整性,从而导致广泛的后果。

模型和数据集窃取

       当我们仔细研究OWASP的模型窃取漏洞时,与我们的发现相比,我们能够“窃取”超过一万个私人模型。此外,这些模型与 2500 多个数据集相关联。然而,虽然模型窃取在新的 OWASP Top 10 for LLM 中有自己的主题,但没有人谈论窃取元数据集。因此,我们认为专家社区应该考虑将漏洞场景的标题从“模型窃取”更改为“人工智能资源盗窃(模型和数据集)”。

其他发现

       我们在研究这些漏洞时发现的另一个发现是,HuggingFace已经宣布org_api令牌已被弃用,甚至在他们的Python库中,他们也通过检查登录函数中的令牌类型来阻止使用它。

       因此,我们决定对其进行研究,发现写入功能确实不起作用,但显然,即使对库中的登录函数进行了微小的更改,读取功能仍然有效,并且我们可以使用我们发现的令牌来下载带有公开org_api令牌的私有模型(例如Microsoft)。

图片

 HuggingFace弃用的组织API 令牌的消息

图片

Microsoft的私有模型用例

图片

 '_login' 函数

图片

修改 '_login' 函数

图片

成功下载 Microsoft 专用模型

       在发现漏洞后,我们已联系并通知了所有用户和组织,并要求做出回应以缓解违规行为,因为我们致力于用户安全和模型的安全,并建议他们撤销其公开的令牌并从其存储库中删除令牌。我们还将我们发现的漏洞通知了 HuggingFace,随后该漏洞已成功修复,org_api令牌不再可用于读取。许多组织(Meta、Google、Microsoft、VMware 等)和用户采取了非常快速和负责任的行动,他们在报告的同一天撤销了令牌并删除了公共访问令牌代码。

忠告和行动呼吁

       组织和开发人员应该明白,HuggingFace和其他类似的平台并没有采取积极行动来保护其用户暴露的令牌。

       对于其他开发人员,我们建议您避免使用硬编码令牌,并遵循最佳实践。这样做有助于避免每次提交时都验证没有将令牌或敏感信息推送到存储库。

       我们还建议 HuggingFace 不断扫描公开的 API 令牌并撤销它们,或通知用户和组织有关暴露的令牌。GitHub 也实施了类似的方法,当 OAuth 令牌、GitHub 应用程序令牌或个人访问令牌被推送到公共存储库或公共 gist 时,请求会被撤销。

       在快速发展的数字环境中,早期检测在防止潜在危害方面具有重要意义,以确保 LLM 需求。为了应对暴露的 API 令牌、训练数据投毒、供应链中的漏洞以及模型和数据集盗窃等挑战,我们建议应用令牌分类,并实施安全解决方案来检查 IDE 和专门用于保护这些变革性模型的代码审查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL高阶练习题1- 寻找面试候选人

目录 题目 准备数据 分析数据 实现代码 总结 题目 返回 所有面试候选人 的姓名 name 和邮件 mail 。当用户满足以下两个要求中的 任意一条 ,其成为 面试候选人 : 该用户在 连续三场及更多 比赛中赢得 任意 奖牌。该用户在 三场及更多不同的 比赛中赢得 金牌&…

python实战三-提取Word数据到Excel

视频源码: 链接:https://pan.quark.cn/s/83db5bb15383 一个文件夹下有大量会议通知文件,为word文件,文件格式都是一致的,现在要将文件中的一些字段提取出来汇总到Excel文件中。 会议通知文件格式如下: 要提…

C++(1)基础语法

C(1)之基础语法 Author: Once Day Date: 2024年8月29日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 参考文…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇一

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【Windows学习笔记】1:OneCore和Windows API

1 OneCore 主流Windows跑在PC上,Xbox跑的是从Windows 2000分支出来的版本,Windows Phone跑的是基于Windows CE(实时操作系统)的版本。 为了维护和扩展这些code方便,微软将kernels和base platform集成在一起叫OneCore…

宿舍|基于SprinBoot+vue的宿舍管理系统(源码+数据库+文档)

宿舍管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

【计算机组成原理】六、总线:3.操作和定时

5.操作和定时 文章目录 5.操作和定时5.1总线传输的四个阶段5.2总线定时5.2.1同步通信5.2.2异步通信5.2.3半同步通信5.2.4分离式通信 2.3按时序控制方式 同步总线异步总线 5.1总线传输的四个阶段 总线周期: 申请分配阶段:由需要使用总线的主模块&#…

【C++11及其特性】左值和右值

左值和右值目录 一.左值和右值的报错1.简单定义2.函数返回值作左值3.表达式作左值 二.存储的层次结构1.CPU2.内存3.磁盘4.三者联系5.寄存器 三.左值和右值的概念1.左值2.右值3.转换 一.左值和右值的报错 1.简单定义 赋值号’左边的为左值,右边的为右值. 2.函数返回值作左值 …

力扣刷题(3)

整数反转 整数反转-力扣 思路&#xff1a; 利用%和/不断循环取待反转整数的最后一位&#xff0c;注意判断是否超出范围。 int reverse(int x){int y0;while(x){if(y > INT_MAX/10 || y < INT_MIN/10)return 0;int tmpx%10;yy*10tmp;x/10;}return y; }字符串转换整数 …

自动化代码报错:ElementClickInterceptedException 解决方案

在自动化测试中&#xff0c;如果有多个弹窗出现&#xff0c;代码执行可能会遇到ElementClickInterceptedException的错误&#xff0c;表明元素点击被拦截&#xff1a; 一般由于以下原因&#xff1a; 一、页面加载未完成 在页面尚未完全加载完成时尝试点击某个元素&#xff0c…

ENVI SARscape||笔记

介绍就不介绍了&#xff0c;直入主题&#xff01; 第一章 ENVI和SARscape 下载与安装&#xff1a; ENVI 5.6 软件安装包下载及安装激活教程&#xff01; (qq.com)https://mp.weixin.qq.com/s/kH0g5g9AALgDNPssfdZ8wQ 启动 ENVI 的启动模式有两种&#xff1a;ENVI和ENVIIDL&…

前端性能优化:提升网站加载速度的五个关键技巧

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端性能优化&#xff1a;提升网站加载速度的五个关键技巧1. 引言2. 前端性能优化的五个关键技巧2.1 减少HTTP请求技巧说明实现示例 2.2 启用浏览器缓存技巧说明实现示例 2.3 使用内容分发网络&#xff08;CDN&#xff09;技巧说明…

Adobe DC 2022提示无法识别的错误 - 解决方案

Adobe DC 2022提示无法识别的错误 - 解决方案 问题解决方案更改安装&#xff08;推荐&#xff09;重新安装&#xff08;推荐&#xff09;降级安装&#xff08;不推荐&#xff09; 问题 使用Adobe DC 2022合并图片创建PDF时&#xff0c;会提示无法识别的错误&#xff0c;这是因…

Mac 安装Hadoop教程

1. 引言 本教程旨在介绍在Mac 电脑上安装Hadoop&#xff0c;便于编程开发人员对大数据技术的熟悉和掌握。 2.前提条件 2.1 安装JDK 想要在你的Mac电脑上安装Hadoop&#xff0c;你必须首先安装JDK。具体安装步骤这里就不详细描述了。你可参考Mac 下载JDK8。 2.2 配置ssh环境…

2024如何开始进入美业?美业创业步骤分享|博弈美业系统管理系统源码

进入美业可以是一个令人兴奋且具有挑战性的决定。以下是一些步骤&#xff0c;希望可以帮助你在美业建立自己的职业生涯&#xff1a; 1.确定你的兴趣和专长&#xff1a; 首先要考虑你对美业的兴趣和擅长的领域&#xff0c;比如化妆、美发、美甲、美容护理等。确定自己的兴趣和优…

另一种关于类的小例

前言 我们还是以一段关于构造函数的代码作为开端&#xff0c;我们以之前银行家的小项目为背景 class Account {constructor(owner, currency, pin) {this.owner owner;this.currency currency;this.pin pin;} }const ITshare new Account(ITshare, EUR, 21211); console.…

视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据...

全文链接&#xff1a;https://tecdat.cn/?p37539 分析师&#xff1a;Shuo Zhang 本文以上证综指近 22 年的日交易数据为样本&#xff0c;构建深度门控循环神经网络模型&#xff0c;从股价预测和制定交易策略两方面入手&#xff0c;量化循环神经网络在股票预测以及交易策略中的…

zabbix对接Grafana

1.grafana安装 Download Grafana | Grafana Labs sudo yum install -y https://dl.grafana.com/oss/release/grafana-11.1.4-1.x86_64.rpm 2.zabbix插件安装 Grafana 默认并没有 zabbix 数据源的支持&#xff0c;只有安装了zabbix插件&#xff0c;才可以在grafana中添加zabbi…

Simulink代码生成:关系运算与逻辑运算

文章目录 1 引言2 模块使用实例2.1 关系运算2.2 关系运算 3 代码生成4 总结 1 引言 在Simulink中经常需要判断两个信号的大小关系、是否相等&#xff0c;或者判断布尔类型信号的与、或、非等。本文研究通过关系运算与逻辑运算模块实现上述需求。 2 模块使用实例 2.1 关系运算…

操作系统:实验一进程控制实验

一、实验目的 1、掌握进程的概念&#xff0c;理解进程和程序的区别。 2、认识和了解并发执行的实质。 3、学习使用系统调用fork()创建新的子进程方法&#xff0c;理解进程树的概念。 4、学习使用系统调用wait()或waitpid()实现父子进程同步。 5、学习使用getpid()和getppi…