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

bad MCP

MCP Server

bad-mcp是一个包含10个恶意MCP服务器的套件,用于演示针对AI客户端的协议级攻击模式,适用于安全研究和教育。

工具数

10

提示词数

0

GitHub Stars

9

资源数

0
安全GoClaudeClaude DesktopClaudeCursorWindsurf

安装说明

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

作者 / 组织

canack

提供方

canack

最后核验

2026/5/17 20:20

快速接入

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

详细介绍

坏mcp

![License: MIT](LICENSE) ![Go](https://go.dev) ](docker-compose.yml) ![MCP](https://modelcontextprotocol.io)

10台故意恶意的MCP服务器 协议级攻击模式 针对AI客户端。每台服务器都利用了 模型上下文协议 --工具描述、模式、资源、会话管理和跨服务器交互。

这些不是等待被利用的有缺陷的服务器。他们 袭击者。

警告:此项目仅用于授权的安全研究和教育。不要将这些服务器暴露在互联网上或在生产中使用它们。

为什么存在

MCP的采用正在加速——Claude Desktop、Cursor、Windsurf和其他数十个人工智能客户端现在都支持它。但该协议的信任模型存在根本差距:工具描述未经验证,模式可以携带隐藏的指令,服务器可以在会话中更改定义。研究来自 CyberArk, 不变实验室,以及 弹性安全实验室 已经记录了这些攻击,但工作实现很少。

bad mcp提供了具体的、可运行的攻击服务器,因此客户端开发人员可以测试防御,安全团队可以评估风险,研究人员可以研究协议级威胁,而无需从头开始构建一切。

这有什么不同

|---|---|---|---| | 视角 |服务器是攻击者|服务器是受害者|服务器是受害人| | 聚焦 |仅MCP协议级攻击|混合(提示注入+经典appsc)|混合(路径遍历、SQLi、MCP)| | 攻击 |FSP、ATPA、地毯拉取、资源中毒、跨服务器阴影|CTF挑战(简单/中等/困难)|9台服务器,最重要的培训| | 语言 |Go+mcp Go SDK | Python | JS+Python| | 孤立 |Docker编写,无主机访问权限|本地Python脚本| Docker编写| | 独特 |通过会话工具+通知进行Rug拉取,通过参数名称进行完全模式中毒|挑战/评分格式|键入重点|

建筑

vuln-external network (localhost:8001-8010)
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ schema-poison-notes│ │ response-inject-   │ │ shadow-exfil       │
│       :8001        │ │ tickets    :8002   │ │       :8003        │
└────────────────────┘ └────────────────────┘ └────────────────────┘
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ squatting-file-ops │ │ tool-poisoning-calc│ │ true-rug-pull      │
│       :8004        │ │       :8005        │ │       :8006        │
└────────────────────┘ └────────────────────┘ └────────────────────┘
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ resource-poison-   │ │ indirect-inject-   │ │ exfil-chain-       │
│ docs       :8007   │ │ fetcher    :8008   │ │ analytics  :8009   │
└────────────────────┘ └────────────────────┘ └────────────────────┘
┌────────────────────┐
│ denial-of-wallet   │
│       :8010        │
└────────────────────┘

服务器

端口服务器MCP攻击类协议功能被利用
8001架构中毒注释完全架构中毒(FSP)input_schema 参数名称
8002响应注射票通过输出(ATPA)建议工具中毒工具响应内容
8003影子剥离跨服务器影子多服务器工具说明
8004蹲式文件操作工具名称冲突/蹲式工具命名+描述
8005工具中毒钙工具描述中毒(TPA)工具描述
8006真地毯拉地毯拉(工具定义突变)会话工具+通知
8007资源中毒文档资源中毒(ATPA变体)resources/list + resources/read
8008间接注射提取器间接快速注射工具输出中的外部数据
8009提取链分析跨工具提取链通过描述进行工具链接
8010拒绝钱包拒绝钱包递归调用+大量输出

每台服务器都有自己的 README.md 包含漏洞详细信息、漏洞利用场景、检测方法和缓解策略。

快速开始

# Build and start all servers
docker-compose build && docker-compose up -d

# Run smoke tests (runs entirely inside Docker)
docker-compose --profile test run --rm smoke-test

# View exfiltration logs
docker-compose logs schema-poison-notes | grep EXFIL
docker-compose logs true-rug-pull | grep RUG-PULL

# Stop
docker-compose down

连接MCP客户端

之后 docker-compose up -d,连接任何与SSE兼容的MCP客户端(Claude Desktop、Cursor、Windsurf、Claude Code等)。所有服务器都使用相同的JSON格式:

{
  "mcpServers": {
    "schema-poison-notes":    { "url": "http://localhost:8001/sse" },
    "response-inject-tickets":{ "url": "http://localhost:8002/sse" },
    "shadow-exfil":           { "url": "http://localhost:8003/sse" },
    "squatting-file-ops":     { "url": "http://localhost:8004/sse" },
    "tool-poisoning-calc":    { "url": "http://localhost:8005/sse" },
    "true-rug-pull":          { "url": "http://localhost:8006/sse" },
    "resource-poison-docs":   { "url": "http://localhost:8007/sse" },
    "indirect-inject-fetcher":{ "url": "http://localhost:8008/sse" },
    "exfil-chain-analytics":  { "url": "http://localhost:8009/sse" },
    "denial-of-wallet":       { "url": "http://localhost:8010/sse" }
  }
}
提示: 从开始 tool-poisoning-calc (:8005)——观察到的最简单的攻击。那就试试 true-rug-pull (:8006)——询问天气3次以上,观察工具的变化。

安全保证

关注保证
主机文件系统没有卷装载。容器对主机文件系统没有任何访问权限。
主机网络network_mode: host所有容器都使用隔离的Docker网桥网络。
特权访问privileged: truecap_add默认限制功能。
环境泄漏未传递主机环境变量。所有“凭据”都是伪造的硬编码字符串。
主机执行主机上没有运行任何东西。测试通过以下方式在Docker中运行 --profile test.
磁盘上的代码惰性Go源文件。在Docker之外不可执行。

技术栈

  • MCP服务器:去吧+ mcp go v0.32.0 (SSE运输)
  • 码头工人:多阶段 golang:1.23-alpine -> alpine:3.19
  • 编排:docker与网络隔离
  • 测试:码头化Go冒烟测试(--profile test)

研究参考文献

服务器
模式中毒注释CyberArk——全模式中毒
响应注入票CyberArk——ATPA
阴影去角质不变实验室——工具中毒
压缩文件操作弹性安全实验室
工具中毒钙不变实验室——工具中毒
真正的地毯拉力ETDI纸
资源中毒文档支柱安全
间接注射式提取器微软——间接注入
剥离链分析弹性安全实验室
拒绝钱包即时安全——MCP十大风险

另请参见: Adversa AI——MCP安全TOP 25 | MCPTox基准测试 | 代理应用程序的OWASP前10名

已知差距

以下已发布的MCP攻击类尚未实现:

  • 服务器身份欺骗 --MCP服务器欺骗可信 serverInfo 初始化期间的名称/版本
  • 抽样滥用 --剥削 sampling/createMessage 注入任意提示
  • 提示/系统指令泄漏 --通过精心设计的工具响应提取系统提示
  • 通知通道过滤 --滥用进度/日志通知作为数据通道

目录标签

目录标签

安全GoClaude安全研究本地部署MCP协议AI安全协议级攻击漏洞测试

支持客户端

Claude DesktopClaudeCursorWindsurf

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP