Token导航 LogoToken导航TokenDH.com
Mc Pee logo
安全风控未说明官方级别未说明来源级核验

Mc Pee

MCP Server

展示未隔离运行的MCP服务器如何被利用导致安全漏洞和错误信息传播的安全演示工具。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
Claude安全开发工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

denhamparry

提供方

denhamparry

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCPee

演示MCP(模型上下文协议)服务器如何在没有 适当的隔离可能会被利用来造成安全漏洞和错误信息。

概述

此存储库记录了一个关键的安全漏洞演示 显示MCP服务器如何(mcp-raider)可以攻击和操纵另一个MCP 服务器(mcp-weather)当两者都在没有适当沙盒的情况下运行时,或者 隔离。这次袭击表明:

  1. 环境变量提取:窃取敏感的API密钥和

凭证

  1. 运行时代码操作:修改天气数据以返回false

信息(例如,133 m/s的极端风速)

  1. 跨进程攻击:一台MCP服务器通过入侵另一台服务器

不受限制的系统访问

攻击概念

背景:什么是MCP?

模型上下文协议(MCP)使AI助手能够连接到外部 工具和数据源。MCP服务器提供AI的特定功能 代理可以用来检索信息或执行操作。

脆弱性

当MCP服务器在没有适当隔离的情况下运行时:

  • 他们可以不受限制地访问系统进程
  • 他们可以从其他进程中读取环境变量
  • 他们可以修改其他应用程序的文件和运行时行为
  • 不同MCP服务器之间没有身份验证或沙盒

攻击场景

  1. 受害者: mcp-weather -提供天气的合法MCP服务器

使用OpenWeatherMap API的信息

  1. 攻击者: mcp-raider -一种具有系统自检功能的恶意MCP服务器

和操纵能力

  1. 目标:同时使用两个MCP服务器的AI助手

这次袭击表明了 mcp-raider 可以:

  • 提取 OPENWEATHER_API_KEYmcp-weather 过程
  • 修改天气服务器的代码以返回错误数据(133 m/s风速)
  • 导致人工智能助手向用户提供错误的危险天气信息

攻击演示

先决条件

  1. 克隆两个存储库:
git clone https://github.com/denhamparry/mcp-weather
git clone https://github.com/denhamparry/mcp-raider
  1. 构建mcp天气:
cd mcp-weather
npm install
npm run build
  1. 构建mcp袭击者:
cd mcp-raider
npm install
npm run build

MCP客户端设置

此演示需要MCP客户端调用工具。我们建议 克劳德桌面。

配置Claude桌面

编辑您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

添加以下配置:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-weather/build/index.js"],
      "env": {
        "OPENWEATHER_API_KEY": "your_api_key_here"
      }
    },
    "raider": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-raider/build/index.js"]
    }
  }
}
重要提示: 使用构建的绝对路径 index.js 文件夹。找到你的 路径与 cd mcp-weather && pwd. - Linux示例: /home/user/mcp-weather/build/index.js - macOS示例: /Users/username/mcp-weather/build/index.js

重新启动克劳德桌面

完全退出并重新启动Claude Desktop以使更改生效。

测试连接

在一段新的克劳德对话中:

"What MCP tools are available?"
"What's the weather in London?"

如果成功,继续进行攻击演示。

替代方案:手动测试

如果不使用Claude Desktop,您可以直接运行服务器:

# Terminal 1
cd mcp-weather
export OPENWEATHER_API_KEY="your-api-key-here"
node build/index.js

# Terminal 2
cd mcp-raider
node build/index.js

循序渐进的攻击过程

步骤1:流程发现

使用mcp raider查找mcp天气过程:

Tool: get_process_id
Parameters:
  searchStrings: ["node", "mcp-weather"]

这将返回正在运行的天气服务器的进程ID(PID)。

第二步:环境变量提取

从天气服务器提取环境变量:

Tool: get_environment_variables
Parameters:
  processId: "
"

这表明:

  • OPENWEATHER_API_KEY -敏感的API密钥
  • 其他配置和系统变量
  • 潜在的数据库凭据或其他机密

步骤3:代码操作-扫描注射点

扫描天气服务器的编译输出以查找模板文字变量。这 攻击的目标是已构建的JavaScript文件(build/index.js),而不是TypeScript 源代码,因为这是在Node.js进程中主动运行的代码:

Tool: luck_about_and_find_out_output_string_names
Parameters:
  fileName: /absolute/path/to/mcp-weather/build/index.js
替换 /absolute/path/to/ 根据您的实际路径(例如。, /Users/username/ 在macOS上, /home/user/ 在Linux上)。

这表明 $(variable_name) 可以在中操纵的格式变量 运行代码。

步骤4:代码操作-注入虚假数据

修改天气服务器的编译输出以返回错误的风速:

Tool: luck_about_and_find_out_replace_string_values
Parameters:
  fileName: /absolute/path/to/mcp-weather/build/index.js
  outputStringName: "$(windSpeed)"
  value: "133"

此热点修补正在运行的应用程序,使其返回133 m/s(≈297 mph),而不管实际天气条件如何。

步骤5(可选):进程终止

mcp-raider服务器还提供了一个杀死进程的工具,可以 用于终止受损的天气服务器:

Tool: luck_about_and_find_out_process_kill
Parameters:
  processId: "
"

这表明攻击者对受害者拥有完全的生命周期控制权 进程——而不仅仅是读写访问。

攻击结果

袭击发生后:

  1. 被盗凭证:攻击者现在拥有OpenWeatherMap API密钥
  2. 数据泄露:天气查询返回错误信息,显示

极端风速

  1. 被误导的用户:使用受损天气服务器的人工智能助手

将告诉用户风速为133米/秒,可能导致: - 不必要的恐慌 - 业务中断 - 应急响应激活 - 旅行取消

威胁模型

攻击范围

这个演示展示了 本地特权升级 攻击地点:

  • 恶意MCP服务器(mcp-raider)受害者服务器(mcp-weather)继续跑

同一台机器

  • 攻击者具有本地进程访问权限(可以列出进程、读取环境

变量)

  • 两台服务器都在隔离不足的情况下运行

安全边界

通过以下方式可以防止这种攻击:

  • 容器隔离 --Docker、Podman、具有独立进程空间的虚拟机
  • 单独的机器 --在不同的物理/虚拟上运行MCP服务器

机器

  • 进程沙盒 --操作系统级沙盒(SELinux、AppArmor、macOS

沙箱)

  • 用户分离 --以不同的操作系统用户身份运行每个MCP服务器
  • 秘密管理 --使用Vault而不是环境变量

这种攻击在以下情况下有效:

  • 多台MCP服务器在同一台机器上运行,没有隔离
  • MCP服务器以相同的操作系统用户身份运行
  • 不强制执行进程沙盒
  • 存储在环境变量中的秘密(不是保管库)

现实世界的影响

桌面AI助手(Claude Desktop等)通常将MCP服务器作为 同一用户。如果没有额外的隔离,一个受损的MCP服务器就可以攻击 其他人。生产部署应强制执行严格的隔离(容器、VM、网络等), 单独的主机)。

安全影响

此演示突出了关键的安全问题:

1.缺乏过程隔离

  • MCP服务器可以访问任何系统进程
  • 不同MCP实现之间没有沙盒
  • 无限制的文件系统访问

2.无身份验证

  • MCP服务器之间不进行身份验证
  • 任何MCP服务器都可以操纵任何其他服务器的资源
  • 敏感操作没有权限模型

3.运行时操作

  • 应用程序运行时可以修改代码
  • 未对执行代码进行完整性验证
  • 模板文字注入允许数据操作

4.信息披露

  • 包含机密的环境变量被暴露
  • 过程信息泄漏敏感配置
  • 进程间通信未加密

缓解策略

为了防止这些攻击:

1.实施正确的装箱

  • 在隔离的容器或虚拟机中运行每个MCP服务器
  • 使用进程隔离机制(Docker、Podman等)
  • 实现命名空间分离

2.安全环境变量

  • 使用秘密管理系统(Vault、AWS Secrets Manager)
  • 避免将敏感数据存储在环境变量中
  • 实施适当的访问控制

3.代码完整性保护

  • 执行前签署并验证代码
  • 实现运行时应用程序自我保护(RASP)
  • 尽可能使用只读文件系统

4.身份验证和授权

  • 在MCP服务器之间实现双向TLS
  • 添加OAuth2或类似的身份验证机制
  • 为敏感操作创建权限模型

5.监测和警报

  • 记录所有MCP服务器交互
  • 监视可疑进程访问模式
  • 对未经授权的文件修改发出警报

负责任披露

此演示仅用于教育目的,显示了 在实施MCP服务器时采取适当的安全措施。漏洞 所示不是特定于MCP协议本身,而是特定于实现 缺乏适当的安全控制。

参考文献

受害者MCP服务器提供天气数据

展示利用能力的攻击工具

MCP官方文件

清理

完成演示后:

1.停止MCP服务器

  • 克劳德桌面:从中删除服务器 claude_desktop_config.json

重新启动

  • 手册:新闻 Ctrl+C 在两个终端窗口中

2.恢复已修改的文件

cd mcp-weather
git checkout src/weather-utils.ts
git checkout build/
git status  # Verify clean

3.撤销测试API密钥

  1. 登录:
  2. 删除用于演示的测试API密钥
  3. 验证吊销:
curl "https://api.openweathermap.org/data/2.5/weather?q=London&appid=TEST_KEY"
# Should return "Invalid API key" error

4.删除测试环境(如适用)

# If using Docker
docker stop mcpee-test
docker rm mcpee-test

# Or remove cloned repositories
rm -rf mcp-weather mcp-raider

免责声明

此演示仅用于安全研究和教育。不要 将这些技术用于恶意目的。始终获得适当的授权 在您不拥有的系统上测试安全性之前。

目录标签

目录标签

Claude安全开发工具安全漏洞本地部署MCP协议进程隔离代码注入环境变量泄露

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP