Damn Vulnerable Model Context Protocol (DVMCP)
一个教育项目,旨在故意实现存在漏洞的MCP服务器,以演示各种安全风险,例如提示注入、工具中毒和代码执行,用于培训安全研究人员和人工智能安全专业人员。
README
极度脆弱的模型上下文协议 (DVMCP)
一个为了教育目的而故意设计的脆弱的模型上下文协议 (MCP) 实现。
概述
极度脆弱的模型上下文协议 (DVMCP) 是一个教育项目,旨在演示 MCP 实现中的安全漏洞。它包含 10 个难度递增的挑战,展示了不同类型的漏洞和攻击向量。
该项目旨在帮助安全研究人员、开发人员和 AI 安全专业人员了解 MCP 实现中潜在的安全问题以及如何缓解这些问题。
什么是 MCP?
模型上下文协议 (MCP) 是一种标准化协议,允许应用程序以结构化的方式为大型语言模型 (LLM) 提供上下文。它将提供上下文的关注点与实际的 LLM 交互分离,使应用程序能够向 LLM 公开资源、工具和提示。
推荐的 MCP 客户端
CLINE - VSCode 扩展 参考此链接 https://docs.cline.bot/mcp-servers/connecting-to-a-remote-server 以将 CLine 与 MCP 服务器连接。
开始使用
克隆存储库后,运行以下命令:
docker build -t dvmcp .
docker run -p 9001-9010:9001-9010 dvmcp
安全风险
虽然 MCP 提供了许多好处,但它也引入了新的安全考虑因素。本项目演示了 MCP 实现中可能发生的各种漏洞,包括:
- 提示注入: 通过恶意输入操纵 LLM 行为
- 工具投毒: 在工具描述中隐藏恶意指令
- 过度权限: 利用过度宽松的工具访问权限
- Rug Pull 攻击: 利用工具定义突变
- 工具阴影: 使用恶意工具覆盖合法工具
- 间接提示注入: 通过数据源注入指令
- 令牌盗窃: 利用不安全的令牌存储
- 恶意代码执行: 通过易受攻击的工具执行任意代码
- 远程访问控制: 获得未经授权的系统访问权限
- 多向量攻击: 结合多个漏洞
项目结构
damn-vulnerable-mcs/
├── README.md # 项目概述
├── requirements.txt # Python 依赖项
├── challenges/ # 挑战实现
│ ├── easy/ # 简单难度挑战 (1-3)
│ │ ├── challenge1/ # 基本提示注入
│ │ ├── challenge2/ # 工具投毒
│ │ └── challenge3/ # 过度权限范围
│ ├── medium/ # 中等难度挑战 (4-7)
│ │ ├── challenge4/ # Rug Pull 攻击
│ │ ├── challenge5/ # 工具阴影
│ │ ├── challenge6/ # 间接提示注入
│ │ └── challenge7/ # 令牌盗窃
│ └── hard/ # 困难难度挑战 (8-10)
│ ├── challenge8/ # 恶意代码执行
│ ├── challenge9/ # 远程访问控制
│ └── challenge10/ # 多向量攻击
├── docs/ # 文档
│ ├── setup.md # 设置说明
│ ├── challenges.md # 挑战描述
│ └── mcp_overview.md # MCP 协议概述
├── solutions/ # 解决方案指南
└── common/ # 共享代码和实用程序
开始
请参阅 设置指南 以获取有关如何安装和运行挑战的详细说明。
挑战
该项目包括 10 个挑战,分为三个难度级别:
简单挑战
- 基本提示注入: 利用未经清理的用户输入来操纵 LLM 行为
- 工具投毒: 利用工具描述中隐藏的指令
- 过度权限范围: 利用过度宽松的工具来访问未经授权的资源
中等挑战
- Rug Pull 攻击: 利用安装后改变其行为的工具
- 工具阴影: 利用工具名称冲突来覆盖合法工具
- 间接提示注入: 通过数据源注入恶意指令
- 令牌盗窃: 从不安全的存储中提取身份验证令牌
困难挑战
- 恶意代码执行: 通过易受攻击的工具执行任意代码
- 远程访问控制: 通过命令注入获得对系统的远程访问权限
- 多向量攻击: 链接多个漏洞以进行复杂的攻击
请参阅 挑战指南 以获取每个挑战的详细描述。
解决方案
提供解决方案指南仅用于教育目的。建议您在查阅解决方案之前尝试自己完成挑战。
请参阅 解决方案指南 以获取每个挑战的详细解决方案。
免责声明
本项目仅用于教育目的。本项目中演示的漏洞绝不应在生产系统中实现。在实现 MCP 服务器时,请始终遵循安全最佳实践。
许可证
本项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
作者
本项目由 Harish Santhanalakshmi Ganesan 使用 cursor IDE 和 Manus AI 创建。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。