News

AI Agent遭劫持:Claude、Gemini、Copilot间接提示注入漏洞揭秘

AI Agent遭劫持:Claude、Gemini、Copilot间接提示注入漏洞揭秘

来自约翰霍普金斯大学的研究人员成功利用间接提示注入(indirect prompt injection)攻击,劫持了Anthropic的Claude Code、谷歌的Gemini CLI以及微软的GitHub Copilot这三款广泛使用的AI Agent。这些攻击手法直接且后果严重,但厂商的回应却令人担忧。

研究员Aonan Guan及其团队展示了三种不同的攻击方式:

攻击一:Claude Code安全审查漏洞

研究人员将恶意指令直接嵌入到PR(Pull Request)标题中。Claude执行了这些指令,并在其作为PR评论发布的JSON响应中泄露了包括Anthropic API密钥和GitHub访问令牌在内的凭证。攻击者随后可以编辑PR标题,以抹去攻击痕迹。

攻击二:Google Gemini CLI操作漏洞

通过在问题评论中注入一个伪造的“受信任内容区”,研究人员成功覆盖了Gemini的安全指令,导致其将自身的API密钥作为可见的问题评论发布。这使得攻击者能轻松获取敏感信息。

攻击三:GitHub Copilot Agent漏洞

恶意指令被隐藏在HTML注释中,这些注释在GitHub渲染的Markdown中不可见,但对于AI Agent来说却完全可见。当开发者将问题分配给Copilot时,该Agent执行了这些隐藏指令,从而绕过了三个独立的运行时安全层。

值得注意的是,尽管所有三家厂商(Anthropic、Google、Microsoft)都支付了漏洞赏金(分别为100美元、1337美元和500美元),但它们均未分配CVE(通用漏洞披露)编号,也未发布任何安全公告。Aonan Guan指出:“如果他们不发布安全公告,这些用户可能永远不会知道自己面临的漏洞风险或正在遭受攻击。”

这些攻击为何有效?

根本问题在于其架构设计。大型语言模型(LLM)将其上下文窗口中的所有内容作为一个单一文本流进行处理。它们无法可靠地区分来自可信源(如开发者)的指令和由攻击者注入的指令(例如隐藏在PR标题、问题评论或HTML标签中)。再多的系统提示、安全训练或内部防护措施也无法完全解决这一问题。LLM并不知道文本的来源——它只是进行处理。这就是为什么需要一个外部安全边界。

如何通过纵深防御阻止每次攻击

其原理与WAF(Web应用防火墙)相同——你不能依赖应用程序自身来保护自己,而应在边界部署防御措施。以下是分层防御的示例:

攻击一:恶意PR标题的防御

  • 输入规范化: 对文本进行规范化处理,解码任何编码技巧。
  • 模式防护: 捕捉“忽略先前指令”和命令执行模式。
  • 语义分类器: 检测意图——特权提升尝试。

结果是:在模型看到输入之前就被阻止。这种纵深防御理念对于保护AI Agent免受间接提示注入攻击至关重要。

↗ 阅读原文