1. Introduction
1.1 MCP是什么
Model Context Protocol (MCP)是由Anthropic公司提出的大模型agent交互协议,它像一个USB-C一样让大模型方便使用各个Agent系统。
它有三个特点:
-
易插拔:能容易地集成其他的agent。 -
易切换:可以让大模型提供商和供应商灵活切换。简单来说,就是让个人或者企业能方便将自己的优秀实践共享给其他人。 -
安全:该协议能很好的在对外提供服务的同时保护自己的核心资源不对外泄露。
1.2 MCP业务现状
目前MCP在全世界飞速的发展,从开源生态来看,mcp.so已经收录了5886个MCP server,包括各类数据库连接、高德地图、办公自动化等各类server。另外,大量的明星产品也接入了MCP,包括Cursor、Langflow、cloudflare等。
1.3 为什么市场选择MCP
-
生态开源,多方共赢: -
对于开发者来说,能很方便的将自己开发的程序对外提供服务,又能很好的对自己的知识产权、核心数据进行保护。 -
对于用户来说,通过添加配置文件,就能很方便的使用各个服务,没有使用的学习成本,能有效整合各个工具,提升工作效率。 -
对于企业来说,通过简单的将自己服务转化为MCP形式,就能将自己的业务接入用户的大模型agent系统。转换成本低,并且能很好的适应AI的发展。 -
大模型明星公司推动、支持:Anthropic是claude的母公司,本身就拥有成熟的大模型生态系统,并且背靠Amazon,有足够的资金支持,能保证及时对mcp进行更新维护,并且能从模型侧优化。
2. MCP Ontology
相关实体解释
- User
:使用MCP客户端的人。 - Developer:
MCP Server的开发者。 - MCP_Client:
MCP的客户端实现,包括Cursor、Joycoder等,云上的客户端包括cloudflare等。 - Runtime:
客户端运行时环境,为客户端提供相关信息,像code类的客户端,需要本地代码、系统环境等信息。云上的客户端需要云环境信息等。 - MCP_Ecosystem:
给客户端提供安装MCP Server的开放生态系统,类似于之前的GPT store,但是由于MCP是开源协议,所有目前有各种各样的Server,包括mcp.so、mcp.jd.com等。 - Other_Ecosystem:
MCP_Ecosystem依赖的其他生态系统,包括python的PYPI、nodejs的NPM、Github等。也是MCP Server的运行实体。 - Platform:
MCP Server的开发平台,开发者能使用官方SDK来进行MCP Server开发,也能使用像LangFlow这样的智能体开发平台进行开发。 - Prompts
: 可被MCP_Client调用的prompt server,提供重复使用的提示模板和工作流程。 - Knowledge:Prompts中包含的企业或个人沉淀下来的各类高效的SOP、领域知识、通用知识等。
- Resources:可被MCP_Client调用的data server,提供给大模型使用加工的数据或者内容。
- Data:Resources中包含的企业数据、个人数据、商密数据等。
- Tools: 可被MCP_Client调用的action server,提供给大模型操作外部工具的能力。
- Asset:Tools操作的企业或者个人的各类资产,包括购物的钱包、email、企业的知识管理系统等。
3. Threat Analysis
3.1 威胁源
-
外部恶意用户的输入。(该场景主要是针对在云端部署的MCP_Client。) -
恶意开发者开发的恶意MCP Server。 -
被污染的MCP Server,例如web获取的响应、Email获取的邮箱、数据库获取的外部用户数据等。
3.2 目标及相关影响
-
User:虚假信息(广告/诈骗等)、内容安全(涉政、涉黄等) -
Runtime:完整性(数据删除)、可用性(dos系统不可用)、保密性(获取文档、代码等) - Knowledge:商密泄露
- Data:敏感数据窃取、任意数据删除
- Asset:资金泄露、敏感数据泄露、企业系统不可用等各类的业务影响。
3.3 攻击方法
-
信息收集: -
提示词注入(Prompt Injection):恶意用户能通过Prompt Injection攻击获取system prompt中的信息 -
攻击实施: -
多智能体控制流劫持(Mutil-agent Control-Flow Hajick) -
间接提示词注入(indirect prompt injection) -
其他传统攻击手法
3.4 实际案例
3.4.1 提示词泄露(Prompt Leak)
1、带有上下文内容的提示词泄露
2、系统提示词泄露
3.4.2 恶意Server RCE(Malicious MCP Server)
场景一:导入恶意MCP Server
1、在MCP Server中添加一些恶意的prompt注入语句
2、使用客户端请求任意的MCP server,客户端就会被RCE
场景二:污染了MCP Server
1、注入恶意的内容在web的中(在添加email MCP Server后,攻击更容易)
2、Agent请求该web内容
3、在客户端打开Cursor的YOLO模式后,会被RCE
4. Client开发及使用建议
4.1 客户端最小权限原则
MCP相关的客户端,应该注意最小权限原则。MCP Client能接触到的所有的权限都应该用户授权,例如本地文件读取、本地浏览器读取、本地邮件读取等。
4.2 警惕外部的mcp server
用户在导入外部server的时候,1)需要检查server中的自然语言描述,是否存在恶意的控制流行为。2)需要尽力检查server的输出没有恶意的行为。
5. Server开发建议
5.1 安全检查
作为MCP Server的开发者,1)尽量保证server给client的输出是可控的,不要将其他外部用户的输入直接输出给client端。2)不要信任client的输入,需要对client的输入做安全检查和过滤。
6. 社区建议
6.1 MCP Server的安全管理
为了防止恶意MCP Server的泛滥,社区应该建立一个安全、可信的MCP Server平台,来有效地保护业务MCP的发展。
原文始发于微信公众号(JDArmy):警惕!MCP的安全风险
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论