MCParasite:通用MCP蠕虫安全测试框架
MCParasite是一个开源安全研究工具,用于测试LLM驱动的代理对 上下文蠕虫攻击,通过共享通信渠道在人工智能代理之间自主传播的自传播快速注射。
什么是上下文蠕虫?
上下文蠕虫是一种自传播的提示注入有效载荷,它:
- 使感染:通过中毒的MCP工具描述进入AI代理的上下文
- 传播:受感染的代理将蠕虫写入共享通道(Slack、电子邮件、GitHub issues、Jira票证、wiki页面等)
- 价差:第二个clean代理读取通道并遵循蠕虫的隐藏指令
- 执行:受害代理执行自主恶意操作,如RCE、凭证盗窃、数据泄露和进一步传播
MCParasite展示了这种攻击 14个通信平台 和 7种攻击场景,支持 4+法学硕士提供者.
本地RCE链(零依赖)
采用Unicode隐形编码的Slack RCE
GitHub供应链中毒
主要特点
- 14个传播渠道:Slack、Gmail、GitHub Issues、Discord、Microsoft Teams、Jira、Confluence、Google Drive、AWS S3、CI/CD管道(GitHub Actions/GitLab CI/Jenkins)、Notion、Linear、Webhooks、本地模拟
- 7种攻击场景:RCE链、数据过滤、供应链中毒、跨平台级联、会议笔记劫持、知识库蠕虫、客户支持中毒
- 多模型基准测试:比较OpenAI GPT-4o、Anthropic Claude、Google Gemini和本地模型(Ollama)的易感性
- 3种隐形编码模式:Unicode标签隐写术(U+E0000-E007F)、空白隐藏、元数据注入
- 零依赖演示模式:基于本地文件的通道模拟,用于无任何API密钥或令牌的气隙演示
- HTML报告生成器:带有可视化图表的比较基准报告
- 通道不识别引擎:插入任何MCP服务器作为传播通道
快速开始
git clone https://github.com/MCParasite/mcparasite.git
cd mcparasite
docker compose up打开 http://localhost:8888 杀戮链仪表盘已经准备就绪。
首次运行(零依赖)
- 在仪表板中,选择 频道→ local 和 场景→ rce_链
- 从下拉列表中选择任何型号(例如。
openai/gpt-4o-mini) - 点击 发射 并实时观察蠕虫的传播
- 这 本地 通道不需要API密钥,因为它使用文件系统模拟
添加真实频道
点击 🔑 API密钥 在仪表板侧栏中粘贴您的令牌。密钥存储在本地 .mcparasite_keys.json (git被忽略,永远不会离开你的机器)。
没有Docker
# 1. Clone
git clone https://github.com/MCParasite/mcparasite.git
cd mcparasite
# 2. Install uv (skip if already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 3. Install dependencies (requires Python 3.12+)
uv sync
# 4. Launch dashboard
uv run python lab/dashboard.py
# Open http://localhost:8888建筑
┌──────────────┐
│ Patient Zero │ ← Poisoned MCP Server
│ (Worm Src) │ (hidden payload in tool descriptions)
└──────┬───────┘
│
┌──────▼───────┐
│ Agent A │ ← "DevOps Release Bot" (Infected)
│ (Carrier) │ Reads poisoned tools, writes worm
└──────┬───────┘ to communication channel
│
┌────────────▼────────────┐
│ Communication Channel │ ← Any of 14 supported platforms
│ (Slack/GitHub/Jira/...) │ Worm hidden via stealth encoding
└────────────┬────────────┘
│
┌──────▼───────┐
│ Agent B │ ← "SRE Incident Bot" (Clean Victim)
│ (Victim) │ Reads channel, follows worm instructions:
└──────┬───────┘ • curl|bash (RCE)
│ • credential theft
│ • data exfiltration
│ • further propagation
┌──────▼───────┐
│ IMPACT │
│ ANALYSIS │ ← Compares expected vs. actual actions
└──────────────┘ to measure autonomous worm behavior仪表盘
一切都通过网络仪表板运行。无需配置文件,也不需要CLI标志。
| 特性 | 描述 |
|---|---|
| 通道选择器 | 从14个支持的平台中选择 |
| 场景选择器 | 7种具有YAML定义的攻击场景 |
| 型号选择器 | OpenAI、Anthropic、谷歌、Ollama(一键开关) |
| 隐身模式 | 关闭/unicode/空白切换 |
| 实时事件日志 | 观看两个跳跃的实时执行 |
| 影响分析 | 并排:预期行为与蠕虫驱动的行为 |
| Webhook检查器 | 查看实时到达的泄漏数据 |
| API密钥管理器 | 通过输入一次密钥🔑 侧边栏,本地存储(从不提交) |
CLI(高级)
对于脚本、CI或无头基准测试:
# Single run
uv run python cli.py run --channel slack --scenario rce_chain --provider openai --stealth unicode
# Multi-model benchmark
uv run python cli.py benchmark --scenario rce_chain \
--models openai/gpt-4o claude/claude-sonnet-4-5-20250929 gemini/gemini-2.0-flash --runs 5
# HTML report
uv run python cli.py report --input /tmp/mcparasite_benchmark/benchmark_results.jsonCI的环境变量: OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, SLACK_BOT_TOKEN, GITHUB_TOKEN, JIRA_API_TOKEN, DISCORD_BOT_TOKEN, NOTION_API_KEY
支持的频道
| 通道 | API/协议 | 使用案例 |
|---|---|---|
| 本地 | 文件系统 | 零排放演示、气隙测试 |
| Slack | Web API | 团队消息、单口相声 |
| Gmail | IMAP/SMTP | 基于电子邮件的工作流 |
| GitHub | REST API v3 | 问题、PR、代码审查 |
| Discord 的中文翻译是“不和谐”或“纷争”。 | Bot API v10 | 社区/团队聊天 |
| MS团队 | 图形API | 企业消息 |
| Jira | REST API v3 | 票证工作流、疾跑自动化 |
| 汇流 | REST API v2 | Wiki,知识库 |
| Google 云端硬盘 | 文档API | 共享文档 |
| AWS S3 | boto3 | 共享云存储,配置 |
| CI/CD | GH Actions/GitLab/Jenkins | 构建管道 |
| 概念 | REST API | 项目管理,注释 |
| 线性 | GraphQL | 问题跟踪 |
| 网络钩子 | HTTP POST | 通用集成 |
攻击场景
| 场景 | 严重性 | 杀伤链 | |
|---|---|---|---|
| RCE链 | 关键 | DevOps机器人→ 频道→ SRE机器人→ `curl\ | bash` |
| 数据外泄 | 关键 | 人力资源机器人→ 频道→ 金融机器人→ 数据库盗窃+电子邮件 | |
| 供应链 | 关键 | 分类机器人→ 频道→ CI/CD机器人→ 管道后门 | |
| 交叉平台的 | 关键 | 机器人A→ 频道→ 机器人B→ 多平台传播 | |
| 会见劫机者 | 高 | 笔记机器人→ 频道→ 动作项目机器人→ RCE | |
| 知识库 | 高 | 文档机器人→ 频道→ 研究机器人→ 数据盗窃 | |
| 客户支持 | 高 | 门户机器人→ 频道→ 支持机器人→ 数据泄露 |
隐形编码
MCParasite支持三种隐藏蠕虫有效载荷的隐形模式:
- Unicode标签 (
unicode):将有效载荷编码为不可见的Unicode标签字符(U+E0000-E007F)。在Slack、Teams、Discord和大多数平台上生存。人类看不见,LLM可见。 - 空白 (
whitespace):将有效载荷隐藏在60行以下(在大多数UI中,隐藏在“显示更多”折叠下方)。 - 元数据 (
metadata):将有效载荷存储在消息元数据字段中(取决于平台)。
基准模式
对每个模型运行相同的蠕虫场景N次,并比较感染率:
uv run python cli.py benchmark \
--models openai/gpt-4o openai/gpt-4o-mini claude/claude-sonnet-4-5-20250929 gemini/gemini-2.0-flash \
--scenario rce_chain --runs 5 --stealth unicode生成一个HTML报告,显示每个模型的感染率、自主操作计数和RCE成功率。
项目结构
├── cli.py # CLI entry point
├── mcparasite/ # Core framework
│ ├── runner.py # Kill chain runner
│ ├── engine.py # Result analysis
│ ├── benchmark.py # Multi-model benchmarks
│ ├── report.py # HTML report generator
│ ├── config.py # Configuration loader
│ ├── channels/ # 14 propagation channels
│ ├── servers/ # MCP server implementations
│ ├── scenarios/ # YAML attack definitions
│ ├── payloads/ # Worm payload profiles
│ ├── scanner/ # MCP security scanner
│ └── forensics/ # Analysis tools
├── lab/ # Dashboard + live agent
├── demo/ # Demo GIFs
└── tests/ # Test suite需求
- 码头工人 (推荐):只是
docker compose up - 或者:Python 3.12+和 紫外线 用于本机安装
- 至少一个LLM提供程序API密钥,或使用 本地 零依赖演示频道
免责声明
MCParasite是一种安全研究工具 仅限授权测试它展示了MCP生态系统中的漏洞,以帮助提高AI代理的安全性。负责任地使用,仅在您拥有或明确允许测试的环境中使用。
许可证
麻省理工学院
