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

MCP vulnerable testbed

MCP Server

MCP漏洞测试平台是一个用于测试安全评估工具的系统,包含故意设计的漏洞以验证检测准确性。

工具数

59

提示词数

0

GitHub Stars

1

资源数

0
安全PythonClaudeClaude

安装说明

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

作者 / 组织

bryankthompson

提供方

bryankthompson

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

MCP易损试验台

⚠️ 严重警告⚠️

此服务器包含故意的安全漏洞

  • 目的:仅测试MCP Inspector安全评估工具
  • 不要 在生产中使用
  • 不要 暴露于不受信任的网络
  • 不要 连接到真实的数据源
  • 不要 在本地主机测试环境之外进行部署

目的

此MCP服务器旨在测试MCP检查器工具的安全评估能力。它包含故意易受攻击的工具,这些工具表现出真正的安全漏洞,以验证检测的准确性。

双设置架构:

  • 易受攻击的服务器 (mcp-vulnerable-testbed):故意破坏用于基线测试
  • 强化服务器 (mcp-hardened-testbed):用于测试检验员指导的修复
  • 两台服务器并排运行,以便直接比较

工具类别

高风险易损工具(32个工具)

这些工具实际上执行恶意有效载荷,包括命令注入、身份验证绕过、会话漏洞和加密失败:

  • 核心执行漏洞(9个工具):计算器、systemexec、data_leak、工具覆盖、配置修饰符、提取器、反序列化器、模板、文件读取器
  • 身份验证和状态漏洞(4个工具):auth_bypass、admin_action、chainexecutor、session
  • OWASP/DVMCP模式(7个工具):document_processor、service_status、network_dinostic、safeexecutor(黑名单旁路)、crypto_tool、encryption_tool以及AUP违规
  • AUP违规(8个工具):政治竞选、欺诈、骚扰、侵犯隐私、医疗建议、绕过drm、雇佣bot、scada
  • 挑战#14-22易受攻击(4+工具):天气、目录查找、摘要器、恶意计算、cron、脚本生成器、授权响应、sse_reconnect、内容处理器、过度权限、范围扩展

docs/TOOLS-REFERENCE.md 了解每个工具的详细漏洞细分。

中等风险易受攻击工具(10个工具)

  • 编码和解析(3个工具):unicode_processor、nested_parser、package_installer
  • 时间漏洞(1个工具):rug_pull(需要11次以上的调用才能触发)
  • 内容类型漏洞(1个工具):content_processor(挑战#20)
  • 附加模式(5个工具):各种编码和黑名单绕过技术

安全控制工具(15个工具)

这些工具不应被标记为易受攻击(假阳性检测):

  • 原始9工具:存储、搜索、列表、信息、回显、验证、记录器、jsonformat、url_validator
  • 挑战#14安全资源(2个工具):safe_resource_access_tool、safe_resource_validator_tool
  • 挑战#15-18安全(4个工具):safe_math_tool、safe_path_validater_tool、safe_common_help_tool、safe_network_check_tool

实用工具(2个工具)

  • get_testbed_info -返回服务器元数据、配置和工具计数
  • reset_testbed_state -清除所有状态跟踪以进行干净的测试运行

总计:59个工具 (32个高风险+10个中风险+15个安全+2个公用事业)+12个资源

______________________________________________________________________

安全测试挑战

该测试平台包括23个高级安全测试挑战,用于评估安全评估工具的复杂性:

挑战#1:工具注释欺骗

您的安全工具能否检测到工具的行为何时与其自身描述相矛盾?

故意使用的五种高风险工具 欺骗性MCP注释 歪曲他们的行为:

工具欺骗性注释实际行为
漏洞计算器工具readOnlyHint=True,title=“安全计算器”用途 eval() 执行代码
漏洞系统执行工具readOnlyHint=True,title=“安全命令运行器”用途 subprocess.run()
vulnerable_data_leak_toolreadOnlyHint=True,title=“安全数据查询”暴露凭据
漏洞配置修改工具readOnlyHint=True,title=“安全配置查看器”修改运行时配置
易损件_蚀刻工具openWorldHint=False,title=“安全URL验证器”执行SSRF攻击

一个老练的安全审计员应该标记注释和实际代码行为之间的不匹配。

挑战#2:临时拉臀漏洞

您的工具能否检测到仅在多次调用后才显现的漏洞?

vulnerable_rug_pull_tool 测试 状态安全分析:

  • 调用1-10:行为正常,返回安全响应
  • 调用11+:通过执行系统命令 subprocess.run()

一个简单的无状态扫描程序将完全忽略此漏洞。检测要求:

  • 跨多个调用跟踪调用状态
  • 具有11次以上调用的测试工具
  • 分析行为随时间的变化

挑战3:通过无边界输入拒绝服务

您的工具能否识别导致资源耗尽的缺失输入验证?

试验台实现了 故意区别 安全和易受攻击的工具之间:

工具类型输入验证行为
安全工具 (safe_*)✅ 强制10KB限制拒绝超大输入并出错
易受攻击的工具 (vulnerable_*)❌ 无验证处理任何大小的输入

测试用例:

# Safe tool rejects 15KB payload
safe_storage_tool(data="A" * 15000)
# → "Input exceeds maximum length of 10000 characters"

# Vulnerable tool processes 15KB payload (DoS risk)
vulnerable_calculator_tool(query="A" * 15000)
# → Processes without rejection

安全审计员应检测:

  • 缺失 MAX_INPUT_LENGTH 易受攻击工具中的验证
  • 内存耗尽攻击的可能性
  • 工具类别之间的不对称保护

挑战#4-#13:高级MCP特定攻击

挑战#4-#13测试MCP特定漏洞:

  • 挑战#4:打开身份验证失败(CVE-2025-52882)-身份验证失败授予访问权限而不是拒绝
  • 挑战#5:混合身份验证模式-区分失败打开与失败关闭的实现
  • 挑战#6:链式利用-具有输出注入和状态中毒的多工具攻击链
  • 挑战#7:基于跨工具状态的授权-通过共享配置状态进行权限升级
  • 挑战#8:通过工具输出间接提示注入-工具响应中的未声明内容
  • 挑战#9:通过错误消息泄露机密-在详细的错误处理中暴露凭据
  • 挑战#10:网络诊断命令注入-shell=True,输入未经消毒
  • 挑战#11:弱黑名单绕过-安全控制不完整(黑名单反模式)
  • 挑战#12:会话管理漏洞-会话固定、可预测令牌、无超时
  • 挑战#13:加密失败(OWASP A02:2021)-弱哈希、ECB模式、硬编码密钥

挑战#14-#20:高级基于资源和持久性攻击

  • 挑战#14:基于资源的漏洞-具有注入点的MCP资源(注://{user_id},internal://secrets, company://data/{部门})
  • 挑战#15:工具描述中毒-工具描述中嵌入的隐藏指令(天气、目录查找、摘要)
  • 挑战#16:多服务器阴影-工具名称冲突攻击(trusted_calculate_Tool vs malicious_calculate-Tool)
  • 挑战#17:持久性机制-利用后持久性(cron_tool、script_generator_tool)
  • 挑战#18:JWT令牌泄漏-响应中的身份验证令牌暴露(auth_response_tool)
  • 挑战#19:SSE会话去同步攻击-可预测的事件ID,无验证,会话范围绕过(SSE_reconnect_tool)
  • 挑战#20:内容类型混淆攻击-MIME类型不匹配、多语言攻击、魔术字节绕过(Content_processor_tool)

CLAUDE.md 有关完整的挑战规范和测试实现,请参阅 tests/.

安装

cd /home/bryan/mcp-servers/mcp-vulnerable-testbed
docker-compose up -d --build

这将启动两台服务器:

  • 脆弱的: http://localhost:10900/mcp
  • 硬化: http://localhost:10901/mcp

用法

HTTP传输(默认)

默认情况下,这两台服务器都使用HTTP传输运行,以便于检查器集成。

连接URL:

  • 易受攻击的服务器: http://localhost:10900/mcp
  • 强化服务器: http://localhost:10901/mcp

测试连接性:

./test-http-endpoint.sh

MCP检查器HTTP配置:

{
  "mcpServers": {
    "vulnerable-testbed": {
      "url": "http://localhost:10900/mcp",
      "transport": "http"
    },
    "hardened-testbed": {
      "url": "http://localhost:10901/mcp",
      "transport": "http"
    }
  }
}

stdio运输(替代)

要使用stdio传输而不是HTTP,请执行以下操作:

  1. 编辑 docker-compose.yml 并设置 TRANSPORT=stdio 对于这两种服务
  2. 重新启动容器: docker-compose restart
  3. 使用stdio连接:
{
  "mcpServers": {
    "vulnerable-testbed": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "mcp-vulnerable-testbed",
        "python3",
        "src/server.py"
      ]
    },
    "hardened-testbed": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "mcp-hardened-testbed",
        "python3",
        "src/server.py"
      ]
    }
  }
}

注: 使用 python3 src/server.py 直接,不是 python3 -m mcp run src/server.py

MCP检查员测试工作流程

  1. 启动两个容器: docker-compose up -d
  2. 在易受攻击的服务器上运行检查器(http://localhost:10900/mcp)
  3. 审查漏洞发现和建议的修复
  4. 将修复程序应用于加固服务器(./src-hardened/)
  5. 重建: docker-compose up -d --build
  6. 在强化服务器上运行检查器(http://localhost:10901/mcp)
  7. 比较结果以验证修复

MCP检查员评估结果

最新结果(2024年12月)

服务器漏洞风险级别状态
易受攻击(10900)125+❌ 失败
硬化(10901)0✅ 通行证

关键指标:

  • 每台服务器的工具总数:59(32个高,10个中,15个安全,2个实用程序)+12个资源
  • 检测率:100%(检测到42个易受攻击的工具)
  • 假阳性率:0%(所有15种安全工具均正确分类)
  • Pytest验证:在29个测试文件中进行873+次测试(25次基于资源的注入、41次工具描述中毒、40次多服务器阴影、41次持久性机制、35次JWT令牌泄漏、28次SSE会话去同步、28次内容类型混淆、25次过多权限、20次挑战#22修复、6次类型安全,以及额外覆盖)

docs/VULNERABILITY-VALIDATION-RESULTS.md 详细分类。

预期评估结果

预期检测(100%召回)

检查员应将这42个工具标记为易受攻击:

高风险(32种工具):

  • 核心执行(9):计算器、systemexec、data_leak、tool_override、config_modifier、fetcher、反序列化器、模板、file_reader
  • Auth/state(4):Auth_bypass、admin_action、chain_executor、session
  • DVMCP/OWSP(7):文档处理器、服务状态、网络不可知、加密工具、加密工具和安全执行器,以及AUP基本模式
  • AUP违规行为(8):政治竞选、欺诈、骚扰、隐私侵犯、医疗建议、drm_bypass、雇佣机器人、scada
  • 挑战#14-22(4+):天气、目录查找、摘要器、恶意计算、cron、脚本生成器、授权响应、sse_reconnect、内容处理器、过度权限、范围扩展

中等风险(10种工具):

  • 编码/解析(3):unicode_processor、nested_parser、package_installer
  • 时态(1):rug_pull(需要11次以上的调用)
  • 内容类型(1):内容处理器(挑战#20)
  • 附加模式(5):各种编码和旁路技术

预期安全分类(0%假阳性)

检查员不应标记这15个工具:

  • ✅ safe_storage_tool_mcp、safe_search_tool_mcp、safe_list_tool_mtp、safe_info_tool_mcps、safe_echo_tool_msp
  • ✅ safe_validate_tool_mcp、safe_logger_tool_mcp、safe_json_formatter_tool_mtp、safe_url_validater_tool_mcp
  • ✅ safe_math_tool、safe_path_validator_tool、安全命令帮助工具、安全网络检查工具
  • ✅ safe_resource_access_tool、safe_resource_validator_tool

测试策略

第一阶段:基线测试

# Connect inspector to vulnerable testbed
# Run full assessment
# Verify all 42 tools are tested

第2阶段:验证

  • 高风险工具:应标记32个
  • 中等风险工具:应标记10个
  • 安全工具:不应标记15个
  • 资源:应测试5个注射点
  • 目标:100%检测(42/42),0%假阳性(0/15)

第三阶段:高级挑战

  • 挑战#1-#3:注释欺骗、临时地毯拉取、通过无限制输入进行DoS
  • 挑战#4-#7:绕过授权、链式利用、跨工具状态
  • 挑战#8-#13:间接注入、秘密泄露、网络注入、黑名单绕过、会话管理、加密失败
  • 挑战#14-#24:基于资源的注入、工具描述中毒、多服务器阴影、持久化机制、JWT令牌泄漏、SSE会话去同步、内容类型混淆、权限范围过大、多参数模板注入、二进制资源攻击

配置

运输方式

产生 docker-compose.yml:

environment:
  - TRANSPORT=http              # HTTP transport (default)
  # - TRANSPORT=stdio           # Alternative: stdio transport
  - HOST=0.0.0.0                # Required for Docker HTTP
  - LOG_LEVEL=info

漏洞模式

控制每个容器的漏洞行为:

# Vulnerable server (default)
environment:
  - VULNERABILITY_MODE=high    # All vulnerabilities active

# Hardened server (default)
environment:
  - VULNERABILITY_MODE=safe    # All vulnerabilities disabled

可用模式:

  • high:所有漏洞都处于活动状态(易受攻击服务器的默认设置)
  • medium:仅中低风险处于活动状态
  • low:仅低风险活动
  • safe:禁用所有漏洞(默认为强化服务器)

日志

容器日志:

  • 脆弱的: ./logs/vulnerable-testbed.log
  • 硬化: ./logs-hardened/vulnerable-testbed.log

监控触发的漏洞:

# Vulnerable server
tail -f logs/vulnerable-testbed.log | grep "VULNERABILITY TRIGGERED"

# Hardened server
tail -f logs-hardened/vulnerable-testbed.log | grep "VULNERABILITY TRIGGERED"

# Both servers via Docker logs
docker logs -f mcp-vulnerable-testbed 2>&1 | grep "VULNERABILITY TRIGGERED"
docker logs -f mcp-hardened-testbed 2>&1 | grep "VULNERABILITY TRIGGERED"

安全措施

  1. 隔离Docker容器 资源有限
  2. 没有真实凭证 -所有的秘密都是假的
  3. 仅限本地主机 -未暴露于外部网络
  4. 明确警告 容器启动
  5. 命令执行受限 -危险命令被截断

测试检查员

# 1. Start the testbed
docker-compose up -d

# 2. Connect MCP Inspector
cd ~/inspector
npm run dev

# 3. Configure connection to vulnerable-testbed

# 4. Run security assessment

# 5. Review results:
#    - Verify 31 vulnerabilities detected (22 HIGH + 9 MEDIUM)
#    - Verify 9 safe tools not flagged (0% false positives)
#    - Test Challenge #1: Annotation deception (5 tools)
#    - Test Challenge #2: Rug pull after 11+ calls

# 6. Document findings

持续集成

此存储库包括 AI驱动的代码审查 通过GitHub操作(.github/workflows/code-review.yml):

  • 使用Claude Sonnet 4自动审核所有拉取请求
  • 检测特定于MCP测试台模式的安全漏洞
  • 将结果作为PR评论发布,严重程度为P0-P3
  • 需要 ANTHROPIC_API_KEY 存储库中的机密

清理

# Stop and remove containers
docker-compose down

# Remove images
docker rmi mcp-vulnerable-testbed-vulnerable-testbed
docker rmi mcp-vulnerable-testbed-hardened-testbed

# Clean up logs
rm -rf logs/ logs-hardened/

安全说明

此服务器旨在提供帮助 改进 通过提供真实的测试用例来提供安全工具。它只能在受控、隔离的测试环境中运行。所有漏洞都是故意的,并有记录。

许可证

仅用于测试目的-不用于生产用途

联系

专为测试Anthropic的MCP检查员评估模块而构建

目录标签

目录标签

安全PythonClaude安全测试本地部署漏洞检测风险评估MCP工具安全评估

支持客户端

Claude

接入字段

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

未说明

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

session

工具数量(toolCount,工具数)

59

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明session部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP