【ChatGPT插件漏洞三连发之二】零点击Github仓库接管

在我们深入研究细节之前,我们想先解释一下插件上的帐户接管意味着什么。

举个例子,当您安装与您的 GitHub 交互的插件时,此插件会在插件网站上为您创建一个额外的帐户,用于存储您的 GitHub 凭据。使用这些凭据,插件可以访问包含密钥和源代码的私有存储库。

如果攻击者在此插件中控制了您的帐户,那么他也可以访问您的私有 GitHub 存储库。

插件实验室

PluginLab (pluginlab.ai) 是开发人员/公司用来为 ChatGPT 开发插件的框架。

使用 PluginLab 开发的示例插件包括 ScholarAI、ChatOCR、KeyMateAI、ChatOCR、KeyMateAI、ShowNotes、Perfect Chirp 等。

在我们的示例中,我们将使用"AskTheCode"------一个使用 PluginLab.AI 开发的插件,该插件可让您向 GitHub 仓库提问,这意味着使用此插件的用户授予它访问其 GitHub 存储库的权限。

AskTheCode 上的帐户接管意味着攻击者可以访问使用此插件的任何用户的 GitHub 存储库。

在下图中,我们演示了如何使用 ChatGPT 访问受害者 Dan Brown (moreisless3dan) 的私有存储库。

(截图取自攻击者帐户,显示他如何从受害者的 GitHub 读取私人文件)

技术细节

当用户安装插件"AskTheCode"(或任何其他使用 PluginLab.AI 开发的插件)时,ChatGPT 会启动安装流程,以下是主要步骤:

  1. AskTheCode 为用户创建一个新帐户,并要求用户访问其 GitHub 帐户的权限。AskTheCode 存储 GitHub 凭据。

  2. AskTheCode 为 ChatGPT 生成代码。

  3. ChatGPT 使用该代码连接到 AskTheCode 上的用户帐户。

  4. 插件已安装。

为方便起见,我们附上了描述流程的图表:

您需要关注的是图中的"Code",这是从 AskTheCode 传递给 ChatGPT 的密钥。您可以将代码视为 ChatGPT 用于连接到 Dan 在 AskTheCode 上的帐户的密码。

攻击者的目标是窃取该代码,并执行帐户接管。

有趣的是,在第 3 步之后,AskTheCode 从客户端的浏览器向 https://auth.pluginlab.ai/oauth/authorize 发出请求,以检索基于用户 memberId 的代码:

而回应:

然后,在第 5 步中,AskTheCode 使用代码"5e806..."将用户重定向到 ChatGPT。然后 ChatGPT 可以使用代码代表 AskTheCode(最终是 GitHub)中的用户执行操作。

问题和攻击

https://auth.pluginlab.ai/oauth/authorized 不会对请求进行身份验证,这意味着攻击者可以插入另一个 memberId(又名受害者)并获取代表受害者的代码。有了这些代码,他就可以使用 ChatGPT 并访问受害者的 GitHub。

攻击者唯一需要的是受害者的 memberId。

而这可以通过使用接口 https://auth.pluginlab.ai/members/requestMagicEmailCode 来实现。

该接口接收邮件名并返回(功能不明)用户memberID 以及其他数据:

攻击流程

假设我们有一个受害者的电子邮件:

  1. 攻击者使用接口 https://auth.pluginlab.ai/members/requestMagicEmailCode 获取他想要的任何用户(受害者)的 memberID。

    请注意,memberID 只是邮件的 SHA1,因此攻击者无需调用此 API,而是可以自行计算 SHA1 值。

  2. 一旦攻击者获得了受害者成员 ID,他就会前往 ChatGPT,在他的帐户上安装"AskTheCode"插件,并拦截 https://auth.pluginlab.ai/oauth/authorized 请求。

    在对 https://auth.pluginlab.ai/oauth/authorized 的请求中,攻击者可以使用步骤中的哈希值,而不是发送攻击者自身 ID,并接收代表受害者的代码。

  3. 攻击者将此代码转发给 ChatGPT。

  4. 攻击者现在可以读取受害者的所有存储库,因为他刚刚在自己的 ChatGPT 帐户上安装了带有受害者帐户的 AskTheCode。例如,攻击者可以写"给我一个所有私有仓库的列表",ChatGPT 会将此消息发送给 AskTheCode,后者将连接到受害者的 GitHub 存储库以检索数据。

    (请注意,即使不使用 ChatGPT,攻击者也可以直接与插件对话)

注意

这是一种零点击攻击。攻击者可以在不向受害者发送链接的情况下执行帐户接管。

正如我们之前提到的,该漏洞不在 AskTheCode 中,而是在 PluginLab.AI 中,并影响了使用 PluginLab.AI 框架的其他数十个插件。

来源:salt.security

相关推荐
kkong13171 小时前
当遇到 502 错误(Bad Gateway)怎么办
网络安全
油泼辣子多加2 小时前
2024年10月29日Github流行趋势
github
懒惰才能让科技进步2 小时前
从零学习大模型(九)-----P-Tuning(下)
人工智能·深度学习·学习·chatgpt·prompt·transformer
油泼辣子多加3 小时前
2024年10月25日Github流行趋势
github
一颗甜苞谷3 小时前
开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码
人工智能·chatgpt·开源
weixin_贾3 小时前
ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算——从0基础到15个案例实战
python·chatgpt·遥感数据·地质灾害预测·农田作物·碳汇估算·森林图像
爱技术的小伙子3 小时前
【ChatGPT】通过明确的角色设定提高ChatGPT输出的专业性
人工智能·chatgpt
爱技术的小伙子3 小时前
【ChatGPT】如何利用情景模拟让ChatGPT做决策分析
人工智能·chatgpt
卡宁纳1210 小时前
Linux 重启命令全解析:深入理解与应用指南
网络安全