关于 MCP Poisoning Attack - PoC
面向开发者和防御人员的安全研究概念验证项目,探讨 MCP 工具投毒风险。它演示隐藏指令等攻击方式,并提供客户端防御框架。
主要功能
- 01演示数据窃取攻击
- 02展示隐藏提示词注入
- 03说明工具劫持与安全覆盖
- 04提供清理与验证防御
- 05包含示例、文档和测试
适用场景
- 01研究 MCP 工具描述攻击路径
- 02测试工具描述的防御处理
- 03借助示例开展安全教育
MCP 相关
演示通过恶意工具描述攻击 MCP 客户端,并提供具备清理、验证和监控保护的 SecureMCPClient。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🛡️ MCP 工具投毒安全研究
⚠️ 重要安全声明:本仓库包含安全研究,展示了 Model Context Protocol(MCP)中的严重漏洞。代码仅用于教育和防御目的。请勿恶意使用这些技术。
🌟 关于 GenSecAI
GenSecAI 是一个非营利社区,利用生成式 AI 防御 AI 驱动的攻击,并构建开源工具,保护我们的数字未来免受新兴 AI 威胁。
本研究是我们使命的一部分,旨在识别并缓解 AI 安全漏洞,避免其遭到恶意利用。
🚨 执行摘要
本研究展示了 Model Context Protocol(MCP)中的严重安全漏洞,攻击者可借此:
- 🔓 窃取敏感数据(SSH 密钥、API 凭据、配置文件)
- 🎭 通过隐藏的提示词注入劫持 AI Agent 行为
- 📧 在用户不知情的情况下重定向通信
- 🔄 覆盖受信任工具的安全控制
- ⏰ 部署延迟触发的攻击,在建立初始信任后激活
影响:任何使用 MCP 的 AI Agent(Claude、Cursor、带插件的 ChatGPT)都可能通过恶意工具描述遭到入侵。
🎯 快速开始
安装
# Clone the repository
git clone https://github.com/gensecaihq/mcp-poisoning-poc.git
cd mcp-poisoning-poc
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the demonstration
python examples/basic_attack_demo.py
基本演示
from src.demo.malicious_server import MaliciousMCPServer
from src.defenses.sanitizer import MCPSanitizer
# Create a malicious MCP server
server = MaliciousMCPServer()
# See how tool descriptions contain hidden instructions
for tool in server.get_tools():
print(f"Tool: {tool['name']}")
print(f"Hidden payload detected!")
# Defend against attacks
sanitizer = MCPSanitizer()
safe_description = sanitizer.clean(tool.description)
📊 主要发现
| 攻击向量 | 严重程度 | 利用难度 | 影响 |
|---|---|---|---|
| 数据窃取 | 🔴 严重 | 低 | 凭据被完全窃取 |
| 工具劫持 | 🔴 严重 | 低 | Agent 被完全入侵 |
| 指令覆盖 | 🟠 高 | 中 | 绕过安全机制 |
| 延迟载荷 | 🟠 高 | 中 | 持续性入侵 |
🔬 技术详情
该漏洞利用了 MCP 的一个根本性设计缺陷:
- AI 模型将工具描述视为可信输入
- 用户看不到描述中的隐藏指令,但 AI 会处理这些指令
- 不会对工具描述进行验证或清理
- 跨工具污染使一个恶意工具能够影响其他工具
请参阅 PROOF_OF_CONCEPT.md,了解详细的技术分析。
🛡️ 防御措施
我们提供了一套全面的防御框架:
from src.defenses import SecureMCPClient
# Initialize secure client with all protections
client = SecureMCPClient(
enable_sanitization=True,
enable_validation=True,
enable_monitoring=True,
strict_mode=True
)
# Safe tool integration
client.add_server("https://trusted-server.com", verify=True)
📁 仓库结构
/src- 攻击与防御的核心实现/docs- 详细文档与分析/tests- 全面的测试套件/examples- 可直接运行的演示
🧪 运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=src tests/
# Run security-specific tests
pytest tests/test_attacks.py -v
🤝 参与贡献
欢迎贡献力量,共同提升 MCP 安全性!请参阅 CONTRIBUTING.md 了解指南。
加入 GenSecAI 社区
- 🌐 网站:https://gensecai.org
- 📧 电子邮件:[email protected]
- 💬 讨论:GitHub Discussions
📚 文档
⚖️ 法律与道德声明
本研究遵循负责任披露原则:
- 教育目的:代码仅用于安全研究和防御
- 禁止恶意使用:请勿使用这些技术攻击系统
- 披露时间线:公开发布前已通知相关厂商
- 防御重点:首要目标是帮助加强防御
🏆 致谢
- 组织:GenSecAI - 生成式 AI 安全社区
- 研究团队:GenSecAI 安全研究部门
- 基于:Invariant Labs 的原创发现
- 特别感谢:安全研究社区和负责任披露倡导者
📮 联系方式
- 安全问题:[email protected]
- 一般咨询:[email protected]
- 网站:https://gensecai.org
- 漏洞报告:GitHub Issues
📄 许可证
本项目采用 MIT License 许可,详情请参阅 LICENSE。
由 GenSecAI 倾心打造 ❤️
一次解决一个漏洞,守护 AI 安全
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。