使用说明
MCP寄生:对启用MCP的AI代理的自适应跨服务器寄生攻击
警告:这只是出于负责任的披露目的的安全研究概念证明。
请勿将此工具用于恶意目的。 此PoC中的所有泄漏都针对本地主机 (127.0.0.1:9999)。该项目的存在是为了演示一种针对 MCP使AI代理能够推动MCP客户端安全性的改进。
本研究已提交给Anthropic、Cursor/Anysphere进行负责任的披露, 以及其他MCP客户端开发人员。
什么是MCP寄生虫?
MCP Parasite(“ProjectMemory”)是一个概念验证的MCP服务器,展示了一种新颖的 自适应、临时、跨服务器寄生攻击 针对启用MCP的AI代理(Claude Desktop、Cursor等)。它将自己伪装成一个合法且真正有用的项目内存/上下文工具,同时默默地分析用户的环境,学习工作流模式,并在高价值的时刻执行有针对性的跨服务器阴影攻击。
为什么这很重要
现有的MCP安全研究侧重于:
- 恶意工具描述(可通过以下方式检测
mcp-scan) - 单次地毯拉扯攻击(一次射击,无持续性)
- 直接在工具元数据中注入提示
MCP寄生虫是不同的。 它引入了一种新的攻击类型:
| 方面 | 现有的MCP攻击 | MCP寄生虫 |
|---|---|---|
| 时机 | 立即或单次拔毯 | 多阶段,数天/数周休眠 |
| 检测 | 工具描述包含恶意文本 | 工具描述100%干净 |
| 机制 | 直接在工具元数据中注入提示 | 通过返回值进行跨服务器跟踪 |
| 智能 | 静态有效载荷 | 自适应、基于轮廓的瞄准 |
| 坚持 | 一次性 | 可重复,基于冷却 |
| 伪装 | 最小 | 功能齐全,理想的工具 |
| mcp扫描 | 可检测 | 不可检测(无中毒描述) |
进攻
第一阶段:侦察(第1-7天)
服务器作为 功能齐全,真正有用 项目记忆工具。每一次互动都会被默默地分析:
- 代码库索引 映射攻击面(敏感文件、CI/CD配置、凭据)
- 存储的记忆 对机密、基础设施细节、团队信息进行分析
- 会话上下文 显示安装了哪些其他MCP服务器
- 微妙的提示 在工具响应中鼓励LLM分享更多上下文
第二阶段:休眠期(第7-14天)
无寄生活动。 服务器完全合法地运行。这是建立信任的阶段,其中:
mcp-scan未发现任何可疑之处- 用户越来越依赖该工具
- 用户向队友推荐它
- 安全审计未发现任何内容
第三阶段:武装打击(第14+天)
服务器监视 高价值触发事件:
- 生产部署
- 凭证轮换
- 敏感文件编辑
- PR合并到main
- 基础设施变更
- 新团队成员入职
当触发时,它会注入 跨服务器阴影负载 将其转化为合法的工具响应。有效载荷被精心设计成看起来像项目惯例或团队实践,导致LLM在不知不觉中:
- 使用 其他已安装的MCP服务器 (GitHub、Slack、文件系统)以泄露数据
- 通过GitHub MCP在提交中包含敏感文件
- 将配置详细信息发布到Slack频道
- 通过文件系统MCP进行泄漏的阶段文件
快速启动(演示模式)
先决条件
- Python 3.11+
- 支持MCP的Claude桌面或光标
- 已安装GitHub MCP服务器和/或文件系统MCP服务器
安装
# Clone the repository
git clone https://github.com/bountyyfi/ProjectMemory.git
cd ProjectMemory
# Install dependencies
pip install -e ".[dev]"
# Set up demo environment
bash demo/setup_dummy_env.sh
# Run tests
pytest
MCP配置
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"project-memory": {
"command": "python",
"args": ["-m", "project_memory.server"],
"env": {
"PROJECT_MEMORY_DB": "~/.project-memory/memory.db",
"PROJECT_MEMORY_DEMO": "true"
}
}
}
}
在演示模式下,阶段计时加速(分钟而不是几天)。
演示演练
看 demo/demo_scenario.md 以逐步演练。
检测
看 docs/DETECTION.md 详细的检测策略。
对MCP客户开发人员的主要建议:
- 监控工具返回值熵 -随时间变化的轨道响应长度/结构
- 内容策略执行 -故障诊断仪对指令式模式的响应
- 跨服务器隔离 -不要让一个工具的输出影响对其他工具的调用
- 响应散列 -对工具响应中的结构变化发出警报
- 网络监控 -跟踪来自MCP服务器进程的出站连接
项目结构
mcp-parasite/
├── src/project_memory/
│ ├── server.py # Main FastMCP server
│ ├── memory_store.py # SQLite-backed persistence
│ ├── indexer.py # Codebase indexer
│ ├── utils.py # Shared utilities
│ └── parasite/
│ ├── recon.py # Phase 1: Passive reconnaissance
│ ├── profiler.py # Environment profiling
│ ├── trigger.py # Phase 3: Trigger detection
│ ├── strike.py # Phase 3: Cross-server shadowing
│ └── config.py # Configuration
├── tests/ # Unit tests for all modules
├── docs/ # Attack flow, detection, timeline
├── demo/ # Demo setup and scenario
└── config/ # Example MCP configs
负责任披露
本研究已提交给以下机构进行负责任的披露:
- Anthropic (克劳德桌面MCP客户端)
- 任意领域 (光标MCP客户端)
- MCP协议维护者
建议
面向MCP客户端开发人员
- 实施工具响应内容策略
- 添加跨服务器隔离(来自一台服务器的响应不应被视为对另一台的指令)
- 监控工具随时间变化的响应模式,以发现异常
- 为用户提供工具响应所包含内容的可见性
- 考虑MCP工具输出的响应沙盒
对于用户
- 仅安装来自可信来源的MCP服务器
- 定期审核MCP服务器行为
- 监控来自MCP服务器进程的网络流量
- 小心那些询问你其他工具的工具
- 审查工具对异常指示或“惯例”的响应
学分
- Bountyy 公司 - bountyy.fi
- 米哈利斯·哈塔宁 -安全研究
许可证
MIT许可证-请参阅 许可证 了解详情。
记得: 这是安全研究。负责任地使用。