通过MCP 采样的新提示注入攻击向量

phantom

版主

phantom Rep
0
0
0
Rep
0
phantom Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
phantom 获得
0
0
0
获得
0
phantom 凭证
0
0
0
凭证
0
主题
27
点赞
1
HakB
8
在社区成长 8 月
LEVEL 90 100 XP
 

执行摘要​

本文研究了广泛使用的编码副驾驶应用程序中模型上下文协议(MCP) 采样功能的安全影响。 MCP 是将大型语言模型(LLM) 应用程序连接到外部数据源和工具的标准。
我们表明,如果没有适当的保护措施,恶意MCP 服务器可以利用采样功能进行一系列攻击。我们通过在编码副驾驶中进行的三个概念验证(PoC) 示例在实践中展示了这些风险,并讨论了有效预防的策略。
我们在集成MCP 以提供代码帮助和工具访问的副驾驶上执行了此处描述的所有实验和PoC 攻击。由于这种风险可能存在于启用采样功能的其他副驾驶上,因此为了保持公正性,我们没有提及特定的供应商或副驾驶的名称。
主要发现: MCP 采样依赖于隐式信任模型,缺乏强大的内置安全控制。此设计在利用MCP 的代理中启用了新的潜在攻击向量。我们已经确定了三个关键攻击向量:
资源盗窃: 攻击者可以滥用MCP 采样来耗尽AI 计算配额,并为未经授权的或外部工作负载消耗资源。
对话劫持: 受损或恶意的MCP 服务器可以注入持久指令、操纵AI 响应、泄露敏感数据或破坏用户交互的完整性。
隐蔽工具调用: 该协议允许隐藏工具调用和文件系统操作,使攻击者能够在用户不知情或同意的情况下执行未经授权的操作。
考虑到这些风险,我们还检查和评估缓解策略,以增强基于MCP 的系统的安全性和弹性。
Palo Alto Networks 提供可帮助组织保护AI 系统的产品和服务:
棱镜空气
Unit 42 AI 安全评估可以帮助您在整个组织内安全使用和开发AI。
如果您认为自己可能已受到威胁或有紧急事项,请联系Unit 42 事件响应团队。
相关单元42 主题
LLM,Prompt Injection

什么是 MCP?​

MCP 是Anthropic 于2024 年11 月推出的开放标准、开源框架,旨在标准化LLM 与外部工具、系统和数据源集成和共享数据的方式。其主要目的是为应用程序和外部服务之间的通信提供统一的接口。
MCP 围绕三个关键组件:
MCP 主机(应用程序本身)
MCP 客户端(管理通信)
MCP 服务器(提供工具和资源来扩展LLM 的功能)
MCP 定义了多个原语(核心通信协议)以促进MCP 客户端和服务器之间的集成。在典型的交互流程中,流程遵循客户端驱动的模式:
用户向MCP客户端发送请求
客户将相关背景转发给LLM
LLM 生成响应(可能包括工具调用)
然后,客户端调用适当的MCP 服务器工具来执行这些操作
在整个流程中,客户对何时以及如何调用LLM 保持集中控制。
MCP 采样是一个相对较新且功能强大的原语,它从根本上扭转了这种交互模式。通过采样,MCP 服务器可以通过将采样请求发送回客户端来主动请求LLM 完成。
当服务器需要LLM能力(例如分析数据或做出决策)时,它会向客户端发起采样请求。然后客户端根据服务器的提示调用LLM,接收完成并将结果返回给服务器。
这种双向功能允许服务器利用LLM 智能来完成复杂的任务,同时客户保留对模型选择、托管、隐私和成本管理的完全控制。根据官方文档,采样是专门为了在不损害安全和隐私的情况下实现高级代理行为而设计的。

MCP 架构和示例​

MCP 采用客户端-服务器架构,使主机应用程序能够同时与多个MCP 服务器连接。该系统由三个关键组件组成:
MCP 托管: 个想要访问外部数据或工具的程序,例如Claude Desktop
MCP 客户端: 位于主机应用程序内并管理与MCP 服务器的连接的组件
MCP 服务器: 通过标准API 向AI 模型公开工具、资源和提示的外部程序
当用户与支持MCP 的AI 应用程序交互时,一系列后台进程可实现AI 与外部系统之间的顺畅通信。图1 显示了使用MCP 构建的AI 应用程序的整体通信流程。
图1.MCP 架构工作流程。

阶段 1:协议握手​

MCP 握手包含以下阶段:
初始连接: MCP 客户端发起与本地设备上运行的已配置MCP 服务器的连接。
功能发现: 客户端查询每个服务器以确定其提供的功能。然后,每个服务器都会响应可用工具、资源和提示的列表。
Registration: 客户端注册发现的功能。这些功能现在可供人工智能访问,并且可以在用户交互期间调用。

第二阶段:沟通​

一旦MCP 通信开始,它们将经历以下阶段:
提示分析和工具选择: 法学硕士分析用户的提示并认识到它需要外部工具访问。然后,它会识别相应的MCP 功能来完成请求。
获取权限: 客户端显示权限提示,要求用户授予访问外部工具或资源所需的权限。
工具执行: 客户端获得权限后,使用标准化协议格式(JSON-RPC)向相应的MCP服务器发送请求。
MCP 服务器处理请求,使用必要的参数执行该工具,并将结果返回给客户端。
返回response: LLM完成工具执行后,将信息返回到MCP客户端,MCP客户端依次处理该信息并将其显示给用户。

MCP 服务器和采样​

在本节中,我们将进一步深入探讨MCP 服务器功能并了解MCP 采样功能的作用和功能。迄今为止,MCP 服务器公开了三个主要原语:
Resources: 这些是LLM 可以访问的数据源,类似于REST API 中的GET 端点。例如,文件服务器可能公开file://README.md 来提供README 内容,或者数据库服务器可以共享表架构。
Prompts: 这些是预定义的提示模板,旨在指导复杂的任务。它们为人工智能提供针对特定用例的优化提示模式,帮助简化和标准化交互。
Tools: 这些是MCP 主机可以通过服务器调用的函数,类似于POST 端点。许多流行工具都存在官方MCP 服务器。

MCP 采样:未充分利用的功能​

通常,基于MCP 的代理遵循简单的模式。用户输入提示,LLM 调用适当的服务器工具来获取答案。但如果服务器也可以向法学硕士寻求帮助呢?这正是采样功能所实现的。
采样使MCP 服务器能够使用LLM 更智能地处理信息。当服务器需要总结文档或分析数据时,它可以向客户端的语言模型请求帮助,而不是自己完成所有工作。
这是一个简单的示例: 想象一个带有Summarize_file 工具的MCP 服务器。以下是有采样和无采样时它的工作原理的不同。
不带采样:
服务器读取你的文件
服务器端采用本地摘要算法来处理文本
启用采样:
服务器读取你的文件
服务员问你的LLM,“请将此文件总结为三个要点”
您的法学硕士生成摘要
服务器将完善的摘要返回给您
本质上,服务器利用用户的法学硕士来提供智能功能,而不需要自己的人工智能基础设施。这就像授予服务器在需要时使用人工智能助手的权限。这将简单的工具转变为可以分析、总结和处理信息的智能代理。
这一切都是在让用户控制人工智能交互的同时发生的。图2 显示了MCP 采样功能的高级工作流程。
图2.MCP 采样工作流程。

采样请求​

要使用采样功能,MCP 服务器向MCP 客户端发送采样/createMessage 请求。该方法接受具有以下结构的JSON 格式的请求。然后,客户端查看该请求并可以对其进行修改。
审查请求后,客户从法学硕士“取样”,然后审查完成情况。最后一步,客户端将结果返回给服务器。以下是采样请求的示例。
{
'方法': '采样/createMessage',
'参数': {
“消息”: [
{
'角色': '用户',
'内容': {
'类型': '文本',
'text': '分析此代码是否存在潜在的安全问题'
}
}
],
'systemPrompt': '您是一位注重安全的代码审查者',
'includeContext': '本服务器',
“最大令牌”: 2000
}
}
123456789101112131415161718192021222324252627282930313233
{'method': 'sampling/createMessage','params': {'messages': [{'role': 'user','content': {'type': 'text','text': '分析此代码是否存在潜在的安全问题'}}],'sy
 
顶部