HugginingFace 和 GitHub 是AI开发人员的重要平台,因此我们决定对这些平台做更为深入的研究。在这项研究中,我们发现了数以千计的 API 令牌,这些令牌暴露给恶意行为者,使数百万最终用户可能受到攻击。
本文的主要内容包括:
-
研究动机和目标
-
研究方法
-
研究结果,以及一些更有趣的发现
-
如何修补这些安全漏洞
研究动机和目标
大型语言模型 (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 和专门用于保护这些变革性模型的代码审查。