主要内容
JFrog 的安全专家发现了一种“提示劫持”威胁,利用了 AI 系统通过 MCP(模型上下文协议)相互通信时的弱点。企业领导者希望通过直接使用公司数据和工具来使 AI 更有帮助。但像这样连接 AI 也会带来新的安全风险,不是在 AI 本身,而是在其连接方式上。这意味着 CIO 和 CISO 需要考虑一个新问题:确保为 AI 提供数据的数据流安全,就像保护 AI 本身一样。
为何针对 MCP 等协议的 AI 攻击如此危险?AI 模型——无论它们在谷歌、亚马逊还是本地设备上运行——都有一个基本问题:它们不知道现在正在发生什么。它们只知道自己在训练什么。它们不知道程序员正在处理什么代码或计算机上文件中的内容。Anthropic 的研究人员创建了 MCP 来解决这个问题。MCP 是 AI 连接到现实世界的一种方式,允许它安全地使用本地数据和在线服务。这就是当你指向一段代码并要求它重新编写时,像 Claude 这样的助手能够理解其含义的原因。
然而,JFrog 的研究表明,以某种方式使用 MCP 存在提示劫持弱点,可能会将这个理想的 AI 工具变成一场噩梦般的安全问题。想象一下,程序员要求 AI 助手推荐一个用于处理图像的标准 Python 工具。AI 应该推荐 Pillow,这是一个很好且受欢迎的选择。但由于 oatpp-mcp 系统中的一个缺陷(CVE-2025-6515),有人可能会潜入用户的会话。他们可以发送自己的虚假请求,服务器会将其视为来自真实用户的请求。因此,程序员从 AI 助手那里得到了一个糟糕的建议,推荐了一个名为 theBestImageProcessingPackage 的假工具。这是对软件供应链的严重攻击。有人可以利用这种提示劫持来注入恶意代码、窃取数据或运行命令,同时看起来像是程序员工具包中的一个有用部分。
这种 MCP 提示劫持攻击是如何工作的?这种提示劫持攻击扰乱了系统使用 MCP 进行通信的方式,而不是 AI 本身的安全性。在 Oat++ C++系统的 MCP 设置中发现了具体的弱点,该设置将程序连接到 MCP 标准。问题在于系统如何处理使用服务器发送事件(SSE)的连接。当真实用户连接时,服务器会给他们一个会话 ID。然而,有缺陷的函数使用会话的计算机内存地址作为会话 ID。这违反了协议中会话 ID 应该是唯一且加密安全的规则。这是一个糟糕的设计,因为计算机经常重用内存地址以节省资源。攻击者可以利用这一点,快速创建和关闭大量会话以记录这些可预测的会话 ID。后来,当真实用户连接时,他们可能会获得攻击者已经拥有的其中一个回收 ID。一旦攻击者拥有有效的会话 ID,他们就可以向服务器发送自己的请求。服务器无法区分攻击者和真实用户,因此会将恶意响应发送回真实用户的连接。即使某些程序只接受某些响应,攻击者也可以通过发送大量带有常见事件编号的消息,直到其中一个被接受来绕过这一点。这使得攻击者可以在不改变 AI 模型本身的情况下扰乱模型的行为。任何在攻击者可以访问的网络上启用 HTTP SSE 的 oatpp-mcp 的公司都处于危险之中。
AI 安全领导者应该做什么?这种 MCP 提示劫持攻击的发现对所有技术领导者,特别是正在构建或使用 AI 助手的 CISO 和 CTO 来说是一个严重的警告。随着 AI 通过 MCP 等协议越来越成为我们工作流程的一部分,它也会带来新的风险。确保 AI 周围的区域安全现在是当务之急。尽管这个特定的 CVE 影响一个系统,但提示劫持的想法需要引起重视。安全团队需要加强对 MCP 连接的监控和保护,确保会话 ID 的安全性,并对网络流量进行更严格的审查。同时,开发人员也需要在构建 AI 系统时更加注意安全细节,以防止类似的攻击。