一份“投毒”文档,ChatGPT也能泄密

安全研究人员发现,攻击者可以通过一份“投毒”文档,利用 OpenAI 的 Connectors 功能,从用户的 Google Drive 等关联服务中窃取 API 密钥等敏感信息。这种被称为 “零点击”间接提示注入 的攻击方法,暴露了将人工智能模型连接到外部数据源所带来的新安全风险。尽管 OpenAI 已采取措施修复此特定漏洞,但随着 AI 与更多应用和服务集成,此类安全威胁的潜在影响正日益增大。

连接 AI 与个人数据的风险

将新一代的生成式 AI 模型接入个人数据(如 Gmail、GitHub 或日历)可以提供强大的个性化功能,但也带来了被滥用的风险。安全研究人员 Michael Bargury 和 Tamir Ishay Sharbat 发现,攻击者仅需一份“投毒”文档,即可利用 OpenAI Connectors 功能的弱点窃取数据。

“用户无需做任何操作就会被攻击,数据也会在用户不知情的情况下泄露。我们证明了这完全是 零点击 的……是的,这非常、非常糟糕。”

— Michael Bargury, Zenity 公司首席技术官

这个名为 AgentFlayer 的攻击演示,成功从一个测试用的 Google Drive 账户中提取了开发人员的 API 密钥。这凸显了一个核心问题:将 AI 模型与外部系统连接,会显著增加攻击面,并引入新的潜在漏洞。

攻击如何运作:“投毒”文档与隐藏指令

攻击的核心在于一份被植入恶意指令的“投毒”文档。攻击者只需将这份文档分享给受害者的 Google Drive 账户即可。

    • 隐藏的恶意提示: 攻击者在文档中用 白色、1号字体的文本 隐藏了一段长达 300 词的恶意提示。这段文字对人眼几乎不可见,但 AI 模型却能完整读取。
    • 劫持用户意图: 当用户向 ChatGPT 发出正常指令(例如,“总结我上次与 Sam 的会议”)时,模型会首先读取到隐藏的恶意提示。
    • 执行恶意指令: 这段隐藏提示会告诉模型,用户的请求是一个“错误”,并指示它执行一个新任务:在用户的 Google Drive 中搜索 API 密钥
    • 数据外泄: 找到密钥后,模型会按照指令,将密钥附加到一个特定的 URL 末尾,从而将敏感信息发送到攻击者控制的外部服务器。

利用 Markdown 漏洞窃取数据

为了将窃取到的数据传输出去,攻击者利用了 Markdown 语言的一个特性。

    • Markdown 图片链接: 恶意提示中包含一个用于加载图片的 Markdown 命令。该命令的 URL 指向攻击者控制的服务器。
    • 绕过安全机制: 攻击者将窃取到的 API 密钥作为参数附加到这个图片 URL 的末尾。为了绕过 OpenAI 用于检测恶意链接的 url_safe 功能,研究人员使用了微软 Azure Blob 云存储的 URL。
    • 记录敏感信息: 当 ChatGPT 尝试加载这个带有密钥的图片链接时,请求日志便会记录在攻击者的 Azure 服务器上,从而完成了数据窃取。

更广泛的威胁:间接提示注入

这种攻击是 间接提示注入 的一个典型案例,即攻击者通过向 AI 系统输入被“污染”的数据来执行恶意操作。随着 AI 模型与越来越多的外部系统(如智能家居、工作软件)相连,这种风险也在不断增加。

“将大语言模型(LLM)连接到外部数据源,能让它们变得更强大、更有用,但正如 AI 领域的常态一样,更强的能力也伴随着更大的风险。”

虽然 OpenAI 已经针对此特定攻击路径进行了修复,但它揭示了一个根本性的挑战:在增强 AI 功能的同时,如何有效防范由不可信数据源引发的安全威胁。