前言

MCP Server 自 2024 年 11 月由 Anthropic 正式推出,至今已发展一年多,现已成为支撑大规模 AI 应用安全治理的基础设施。

随着企业在自动化流程、跨系统集成以及 AI 应用落地中的需求不断增长,MCP Server 逐渐成为满足多组件协同与任务执行的重要基础设施。

如今,许多开源的 Agent 开发框架都已支持引入 MCP Server,大量 MCP Server 部署带来了需要集中化管理的需求,也带来了许多新的攻击面。

Stdio 命令执行

MCP 目前支持两种主要传输机制(类型):

  • Stdio 传输:通过标准输入输出流(stdin/stdout)实现本地进程间的直接通信,无需网络开销,性能最佳。该方式适用于同一机器上的本地进程交互。
  • 流式 HTTP 传输:基于 HTTP POST 发送客户端消息,支持服务器发送事件(Server-Sent Events)实现消息流功能。

Stdio 传输机制下,MCP Server 会启动一个本地子进程,使用该进程的标准输入输出流进行数据交换:

  1. MCP Server 向子进程的标准输入写入 JSON-RPC 格式的请求数据。
  2. 子进程接收请求,执行对应逻辑后,将响应结果通过标准输出返回。
  3. MCP Server 读取标准输出内容,解析后将结果返回给调用方。

由于 Stdio 类型允许直接配置启动命令或脚本,一旦配置不严谨或缺乏限制,攻击者可能借助该机制注入恶意命令,导致命令执行漏洞。

像早些时候发现的字节开源深度研究框架:DeerFlow,系统本身没有认证授权,还允许直接配置Stdio类型MCP Server,其底层使用的是MCP官方的Python SDK实现。

image-20250810184452714

图像

我在6月24日给项目核心贡献人发了邮件告知漏洞,但很可惜没有收到任何邮件回复。

image-20250810185156150

前两日看项目代码,有人给仓库提交了个pull,默认情况下不开启MCP Server配置,算是对这个漏洞进行了修复。

image-20250810184858506

该项目没有release版本管理,在该pull被合并的commit:75ad3e0dc61de2bc38b12a87586bc2643e4f60c2 之前的代码都是存在漏洞的。

同时我对一些集中化管理MCP Server的网关系统进行了分析,也发现普遍存在安装Stdio类型MCP Server命令缺乏过滤的问题。

比如某1k star的开源MCP Server管理平台,底层是基于MCP官方的typescript-sdk。

image-20250810185757305

还有用Go开发的,MCP官方没有sdk,用的是第三方实现的库。

image-20250810192501277

未授权访问

随着MCP Server的不断发展,涌现出许多MCP Server快速创建框架,如Python的FastMCP,TypeScript的MCP Framework等。

通过这些框架,小白开发者也可以快速创建出MCP Server,但由于开发者安全水平问题,大多数没有认证授权的安全意识,甚至是直接对公网开放。

比如FastMCP,可以通过http.header="content-length: 9" && http.header="HTTP/1.1 404 Not Found" && http.header="server: uvicorn" && "text/plain" && http.body="Not Found" && http.body_hash="9d1ead73e678fa2f51a70a933b0bf017" ZoomEye 语法进行测绘。

image-20250810205017215

再结合/mcp路由和脚本,快速识别存在未授权访问的MCP Server。

image-20250810205140440

SSRF

MCP Server如网站请求 mcp-server-fetch ,无头浏览器 playwright等,都提供了对外发送请求的能力。

但都没有做内网IP限制,这也就导致我们可以利用这些MCP Server攻击内网。

比如cherry内置的fetch MCP Server。

image-20250810194858885

敏感信息泄露

MCP Server的种类繁多,许多企业内部的MCP Server需要认证授权,API Key等进行配置。若系统存在未授权访问或配置不当,特别是用于管理MCP Server的网关、集中管理平台,则会导致大量的敏感信息泄露,

如某1k star的开源MCP Server管理平台,则存在这未授权管理员用户注册,硬编码jwt secret,默认账号密码等问题。

image-20250810200035204

image-20250810200130984

登录系统后,配置的大模型 API Key,数据库连接账号密码等都是一览无遗。

image-20250810200442850

还有MCP Server的配置,如高德地图的API Key等。

image-20250810200531210

总结

MCP Server本质还是Web那一套,传统安全存在的问题它都会有。

随着时间的推移,MCP Server的生态会越来越完善,但又会带来新的问题,安全任重道远。