警惕!MCP的安全风险

admin 2025年4月7日00:50:08评论21 views字数 2573阅读8分34秒阅读模式

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

警惕!MCP的安全风险

相关实体解释

  • 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、带有上下文内容的提示词泄露

警惕!MCP的安全风险

2、系统提示词泄露

警惕!MCP的安全风险

3.4.2 恶意Server RCE(Malicious MCP Server)

场景一:导入恶意MCP Server

1、在MCP Server中添加一些恶意的prompt注入语句

2、使用客户端请求任意的MCP server,客户端就会被RCE

警惕!MCP的安全风险

场景二:污染了MCP Server

1、注入恶意的内容在web的中(在添加email MCP Server后,攻击更容易)

2、Agent请求该web内容

3、在客户端打开Cursor的YOLO模式后,会被RCE

警惕!MCP的安全风险

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的安全风险

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月7日00:50:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   警惕!MCP的安全风险https://cn-sec.com/archives/3914119.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息