MCP测试平台
针对模型上下文协议(MCP)服务器的Docker隔离安全测试。
MCP Testbench 是一个全面的安全测试框架,它在隔离的 Docker 容器中运行 MCP 服务器,并执行自动化漏洞扫描、模糊测试(fuzzing)和渗透测试。
为何选择MCP测试平台?
随着像CVE-2025-6514(CVSS评分9.6)和CVE-2025-49596(CVSS评分9.4)这样的关键漏洞影响到MCP服务器,安全测试已不再是可选项。MCP Testbench提供:
- 🌐 全面测试与……配合使用 两者都使用标准I/O(stdio) (本地)和 HTTP(超文本传输协议) (远程) MCP 服务器
- 🔒 Docker 隔离安全地测试潜在恶意服务器
--network none - 🔍 CVE 扫描自动检测已知漏洞
- ⚡ 模糊测试引擎使用畸形输入进行协议一致性测试
- 🛡️ 注入测试提示注入、SQL注入、跨站脚本(XSS)攻击以及路径遍历测试
- 📊 安全评分简单的A-F等级评分,并在README文件中使用shields.io徽章展示
- 🚀 准备就绪,支持CI/CD(持续集成/持续交付)JSON报告与GitHub Actions集成
经证实的效果在流行的MCP服务器(如time-mcp和docker-mcp)中发现了具有重大影响的F级漏洞。
安装
CLI 安装
pip install mcp-testbench或者从源头:
git clone https://github.com/ubermorgenland/mcp-testbench
cd mcp-testbench
pip install -e .GitHub Action(GitHub 动作)
添加到 .github/workflows/security.yml:
- name: MCP Security Scan
uses: ubermorgenland/mcp-testbench@v1
with:
target: 'http://localhost:8000'见 以获取完整指南。
快速入门
测试Stdio MCP服务器(本地)
大多数MCP服务器使用stdio传输(npx命令)。测试任何stdio服务器:
# Test time-mcp
mcp-testbench run --stdio "npx time-mcp"
# Test docker-mcp
mcp-testbench run --stdio "npx @edjl/docker-mcp"
# Test GitHub MCP server
mcp-testbench run --stdio "npx @modelcontextprotocol/server-github"
# With verbose output
mcp-testbench run --stdio "npx time-mcp" --verbose
# Custom output directory
mcp-testbench run --stdio "npx time-mcp" --output ./security-reports真实成果我们测试了流行的MCP服务器:
time-mcp: F级 (5次崩溃,36%的失败率)docker-mcp: F级 (12次故障,86%的失败率)
两者均在基本输入验证上失败。 查看详细的碰撞分析报告。
测试HTTP MCP服务器(远程)
通过HTTP测试远程MCP服务器:
# Test local HTTP server
mcp-testbench run http://localhost:8000
# Test production deployment
mcp-testbench run https://mcp.yourcompany.com/
# With custom output
mcp-testbench run http://localhost:8000 --output ./security-reportsDocker 隔离测试(推荐)
为了最大程度的安全性,请在Docker中运行测试:
mcp-testbench run --docker --docker-path /path/to/mcp-server这将您的MCP服务器安装在一个隔离的容器中,其中包含:
--network none(无网络连接)--cpus 2(CPU限制)--memory 2g(内存限制)
输出
MCP 测试平台生成:
- JSON 报告详细的测试结果及漏洞详情
- 安全徽章为你的 README 文件添加 shields.io Markdown 徽章
- 终端摘要带有风险等级的易读结果
示例徽章
请将以下内容添加到您的MCP服务器的README文件中:
安全测试
CVE 扫描器
- 检查CVE-2025-6514(mcp-remote远程代码执行漏洞)
- 检查CVE-2025-49596(MCP Inspector远程代码执行漏洞)
- 识别出易受攻击的服务器版本
模糊测试引擎
- 无效的JSON有效载荷
- 超大输入(100KB+的字符串)
- 深度嵌套的对象(1000+层)
- Unicode漏洞和空字节
- 类型混淆攻击
- 协议一致性测试
注射测试
- 提示注入工具中毒攻击
- 命令注入尝试执行Shell命令
- 路径遍历文件系统访问测试
- SQL注入数据库查询操作
- XSS(跨站脚本攻击)跨站脚本攻击载荷
建筑
CLI → TestEngine → PluginRegistry → [CVEScanner, Fuzzer, PromptInjection]
↓
Reporter → JSON + Badge插件系统
MCP测试平台采用插件架构以实现可扩展性:
from engine import Plugin
import httpx
class CustomPlugin(Plugin):
async def run(self, client: httpx.AsyncClient) -> dict:
# Your test logic here
response = await client.get("/")
return {
"status": "completed",
"custom_metric": response.status_code
}保存至 plugins/custom_plugin.py 并且它将被自动发现。
安全评分
- A(鲜绿色)无漏洞,通过所有测试
- B(绿色)小问题,无重大漏洞
- C(黄色)中等风险,部分测试失败
- D(橙色)高风险,存在多个漏洞或插件错误
- F(红色)检测到关键漏洞
Docker 隔离
MCP 测试平台在隔离的容器中运行测试,使用:
docker run --network none --cpus 2 --memory 2g这防止恶意MCP服务器:
- 发起网络请求
- 消耗过多资源
- 访问主机文件系统
- 破坏测试环境
路线图/时间表
- \[x\] GitHub Action 用于 CI/CD ✅
- \[x\] Docker 隔离模式 ✅
- \[ \] 限流测试
- \[ \] 日志净化检查
- \[ \] 输入验证测试
- \[ \] 实时CVE信息集成
- \[ \] 可观测性指标
- \[ \] 注册表签名验证
做出贡献
我们欢迎投稿!详见 CONTRIBUTING.md 翻译为中文是:“贡献指南.md” 或 “贡献规范.md”。(注:在中文语境中,".md" 通常指的是 Markdown 格式的文件,因此在翻译时通常不需要对“.md”进行翻译,而是直接保留。) 作为指导方针。
许可证
MIT 许可证 - 请参阅 许可证 详情如下。
参考文献
- MCP 安全机制仍然存在漏洞(Reddit) - 345个点赞
- CVE-2025-6514:mcp-remote 中存在严重远程代码执行(RCE)漏洞(CVSS 评分 9.6)
- CVE-2025-49596:MCP Inspector 中存在远程代码执行(RCE)漏洞(CVSS 评分 9.4)
- 模型上下文协议规范
______________________________________________________________________
由ApInference团队构建 | 网站 | Twitter(推特)
