从MCP Inspector 历史漏洞分析 MCP Hosts 攻击面
文章目录
【注意】最后更新于 September 13, 2025,文中内容可能已过时,请谨慎使用。
简介
MCP Hosts 指的是运行 MCP 服务的主机或环境,claudemcp 的一张图比较清晰地介绍了 MCP 的架构及其组成。

MCP Inspector 是一个由 Anthropic 官方推出的专为模型上下文协议(Model Context Protocol,MCP)服务器设计的交互式开发者工具,旨在帮助开发者高效测试和调试 MCP 服务器。
MCP Inspector 在 NPM 源的累计下载量已突破百万次,近一周下载超 6 万次,被广泛用于开发,构建、测试 MCP 工具中。

安装 MCP Inspector
MCP Inspector 使用 TyepScript 开发,需要安装 Node.js 环境,打开 Node.js 官方网站(https://nodejs.org/)下载对应操作系统的 LTS 版本进行安装。
安装完成后使用 Node.js 附带的命令行工具 npx 安装 MCP Inspector 并启动。
| |
如果需要安装特定版本则在包名后加上@版本号,如npx -y @modelcontextprotocol/inspector@0.16.5。

MCP Inspector 系统架构
MCP Inspector 采用三层架构,明确区分客户端界面、代理服务器和 MCP 服务器

其中界面默认部署在6274端口,代理默认在6277端口,开发者在界面上进行调试,实际是发送请求到6277端口,并由代理在服务端与MCP Server进行交互。
MCP Inspector 漏洞剖析
CVE-2025-49596
2025年6月27号,国外安全研究员披露了 MCP Inspector 的未授权命令执行漏洞,并写了一篇深度分析文章。 https://www.oligo.security/blog/critical-rce-vulnerability-in-anthropic-mcp-inspector-cve-2025-49596
本质是 MCP Inspector 安装 Stdio MCP Server 时允许执行任意命令。
由于缺乏身份认证机制,导致任何能访问 MCP Inspector的攻击者可通过此功能执行任意命令。
也就是开放在0.0.0.0的话,攻击者可直接构造恶意 Payload 执行系统命令。
又由于其启动端口固定,且执行安装Stdio MCP Server的请求为GET请求,缺乏CORS保护。部署在本地的情况,攻击者也可通过CSRF的方式进行攻击。

文章给出的 Payload 较为简单,简单在服务器上创建了一个文件。
如果要对此漏洞进行检测的话,想到的应该是用命令执行OOB的方式,但还有其它更加优雅的方式吗?写文件到静态文件?
在构造命令执行时,由于命令执行错误,我发现MCP Inspector 会返回标准错误。

我们能执行命令,是否可以利用重定向,将标准输出重定向到标准错误中,实验告诉我们确实是可以的,最终实现直接回显。
| |
但此路由只在 0.11.0 版本及以后可用,在 0.11.0版本以前用的是另外一个路由。
| |
此变化是由于 0.11.0 开始支持 Streamable HTTP Server,官方将路由进行了拆分。
https://github.com/modelcontextprotocol/inspector/compare/0.10.2…0.11.0-amended

让我们回到这个漏洞,该漏洞在0.14.0.1版本进行了修复,官方增加了认证机制,默认会生成一个32位的随机Session token,并限制了来源 Origin和增加 DNS 重绑定,启动默认绑定在 localhost。
https://github.com/modelcontextprotocol/inspector/compare/0.14.0…0.14.1

CVE-2025-58444
当 MCP Inspector 连接不可信 MCP Server,在处理 OAuth 认证流程时,由于没有正确验证 MCP Server 返回的授权服务器(authorization_endpoint)地址,存在 XSS 漏洞,攻击者可通过 XSS 漏洞获取 Session token,利用安装 Stdio MCP Server 功能远程执行任意命令,获取系统权限。
也就是利用 XSS 窃取 Session Token 绕过身份认证,最后利用 Stdio MCP Server 来执行命令。
漏洞触发点实际出现在 OAuth Flow a 标签 href 属性上。

也就是实际利用需要点击,属于 1 Click RCE。
漏洞条件为 < 0.16.6 版本,先部署一个恶意的MCP Server。
恶意 MCP Server 代码:https://gist.github.com/r00tuser111/ef66e2b03bf6187f5067975df0787320,在构造发送命令执行的请求时,发现并非是简单在 GET 请求中带上 MCP_PROXY_AUTH_TOKEN 参数,Session Token 是通过 x-mcp-proxy-auth 请求头传输的。
验证代码只适配 Mac 环境,触发 XSS 后会打开计算器。
选择一个通信类型如 Steamable HTTP,不需要 connect ,点击Open Auth Settings展开再点击Quick Auth Flow进行触发。


效果可看 X 上的视频:https://x.com/_r00tuser/status/1966020715481829675。
authorization_endpoint 这个利用点最早应该是 MCP-Remote 漏洞中的(https://jfrog.com/blog/2025-6514-critical-mcp-remote-rce-vulnerability/),而后被广大安全研究员应用挖掘。
Cherry Studio 也曾受这个影响:https://github.com/CherryHQ/cherry-studio/security/advisories/GHSA-gjp6-9cvg-8w93
Oauth 的实现应该是一个通用类库的实现,导致许多基于 Node.js 开发的MCP Hosts 都存在这个问题,我曾在 Github 通过简单的代码搜索过,发现此问题只出现在 Node.js 开发的应用中。
此漏洞的修复较为简单,官方对 authorization_endpoint 在前端展示的所有地方进行了校验,只能是 http 和 https 协议的 URL,详情参考前文的 commit 链接。
总结
基于 MCP Inspector 的历史漏洞,结合MCP-Remote,Cherry Studio等多个历史漏洞。
我们可以总结出在对MCP Hosts 的安全审计中应特别留意的两个攻击面:
Stdio MCP Server 安装限制不严带来的命令执行
Oauth 认证缺乏过滤带来的 XSS 或 RCE
随着时间的推移,安全的需求,跨平台的需求,MCP协议可能会进行各方面的扩展,势必也会带来更多的安全风险。