kta1kri/mcp-detection-lab
GitHub: kta1kri/mcp-detection-lab
针对 OWASP MCP Top 10 的检测工程项目,提供可运行的 Sigma 规则、示例遥测数据、零依赖验证脚本和隔离实验室指南,填补 MCP 运行时安全检测的空白。
Stars: 0 | Forks: 0
# mcp-detection-lab
**针对 Model Context Protocol (MCP) 的检测工程。**
适用于 **OWASP MCP Top 10** 的工作中 Sigma 检测规则、示例审计遥测数据、隔离的家庭实验室指南,以及一个用于证明规则生效的 **零依赖验证器** — `git clone … && python3 validate.py`。
完全基于公开来源(OWASP MCP Top 10、公开 CVE、RFC、家庭实验室)从零构建。无专有或雇主数据。仅供针对您**自己**的隔离实验室进行防御/紫队使用。
## 快速开始(无依赖)
```
git clone https://github.com/kta1kri/mcp-detection-lab
cd mcp-detection-lab
python3 validate.py # pure stdlib, nothing to install
```
输出:
```
Loaded 10 Sigma rules, 15 telemetry events.
[FIRED] high MCP01 Token Mismanagement - Audience Mismatch / Token Passthrough
[FIRED] medium MCP02 Privilege Escalation - Over-Scoped Tool Call (Scope Creep)
[FIRED] high MCP03 Tool Poisoning - Approved Tool Schema Changed (Rug Pull)
[FIRED] high MCP04 Supply Chain - Unverified Server/Dependency Loaded (Tampering)
[FIRED] critical MCP05 Command Injection - Shell Metacharacters in Tool Arguments
[FIRED] high MCP06 Intent Flow Subversion - High-Impact Action Triggered by Tool Output (No Human Approval)
[FIRED] critical MCP07 Insufficient Authentication - Unauthenticated Tool Call Succeeded
[FIRED] high MCP08 Lack of Audit and Telemetry - Audit Log Gap Detected
[FIRED] high MCP09 Shadow MCP Server - Connection to Unsanctioned Server
[FIRED] medium MCP10 Context Injection and Over-Sharing - Sensitive Resource Shared Externally
Summary: 10 detections fired across 15 events.
Attack events detected: 10/10
False positives on benign events: 0
OK: every modeled attack is detected, zero false positives on benign traffic.
```
良性的 `safe_echo` 事件包含 `$(...)`,但被正确地**未**标记 —— 它被 MCP05 规则的 `filter` 排除了(这是一个虽小但真实的误报处理示例)。
## 覆盖范围 — OWASP MCP Top 10
| 规则 | OWASP | 检测内容 | 公开参考 |
|---|---|---|---|
| [mcp01_token_audience_mismatch](rules/mcp01_token_audience_mismatch.yml) | MCP01 | Token 透传 / audience 不匹配(confused deputy) | RFC 8707 / 9068 |
| [mcp02_scope_creep](rules/mcp02_scope_creep.yml) | MCP02 | 过大范围的 tool 调用(权限提升) | RFC 8693 |
| [mcp03_tool_poisoning](rules/mcp03_tool_poisoning.yml) | MCP03 | 同意后更改已批准的 tool schema(rug pull) | CVE-2025-54136 (MCPoison) |
| [mcp04_supply_chain](rules/mcp04_supply_chain.yml) | MCP04 | 加载未验证/被篡改的服务器或依赖项 | CVE-2025-6514 |
| [mcp05_command_injection](rules/mcp05_command_injection.yml) | MCP05 | tool 参数中到达 exec sink 的 shell 元字符 | CVE-2025-6514, CVE-2025-49596 |
| [mcp06_intent_subversion](rules/mcp06_intent_subversion.yml) | MCP06 | 未经人工批准,由 tool 输出触发的高影响操作 | OWASP MCP06 |
| [mcp07_auth](rules/mcp07_auth.yml) | MCP07 | 未经身份验证的 tool 调用成功 (CWE-306) | CVE-2025-49596 |
| [mcp08_audit_gap](rules/mcp08_audit_gap.yml) | MCP08 | 审计遥测缺失(防御规避 / SOC 盲区) | OWASP MCP08 |
| [mcp09_shadow_server](rules/mcp09_shadow_server.yml) | MCP09 | 连接到未经批准的(影子)MCP 服务器 | OWASP MCP09 |
| [mcp10_context_oversharing](rules/mcp10_context_oversharing.yml) | MCP10 | 高敏感度资源被外部共享 | OWASP MCP10 |
**所有 10 项 OWASP MCP Top 10 风险(MCP01–MCP10)均有对应的检测规则。** 有关检测风格的说明,请参阅 [docs/owasp-mcp-mapping.md](docs/owasp-mcp-mapping.md)(某些类别除了单事件 Sigma 之外,还需要有状态关联)。
## 工作原理
1. **遥测契约** — MCP 服务器/网关为每次操作(`tool_call`、`tools_list`、`authz_decision` 等)发出一个规范、丰富化的审计事件。Schema:[lab/telemetry-schema.md](lab/telemetry-schema.md)。丰富化操作(如 `schema_hash_mismatch`、`audience_mismatch`、`scope_excess`、`server_known`)在日志记录时计算 —— 这正是它应在的位置。
2. **规则** — [`rules/`](rules/) 中与供应商无关的 [Sigma](https://github.com/SigmaHQ/sigma) 规则与该遥测数据匹配。使用 `sigma-cli` 转换为您 SIEM 的格式:
sigma convert -t splunk rules/ # Splunk SPL
sigma convert -t loki rules/ # Grafana Loki / LogQL
sigma convert -t esql rules/ # Elastic
3. **验证** — `validate.py` 针对[示例遥测数据](lab/sample-logs/events.jsonl)运行规则,以便您(和审查者)可以在零设置的情况下确认覆盖范围和误报行为。
4. **实验室** — 搭建一个隔离的 MCP 环境,针对故意设置漏洞的目标重放攻击,将遥测数据发送至 SIEM,并观察规则是否生效:[lab/lab-setup.md](lab/lab-setup.md)。
## 范围与安全
- **净室 / 仅使用公开来源。** 不含雇主/客户/内部数据。检测逻辑是通用的,并衍生自公开的 OWASP/CVE/RFC 材料。
- **防御 / 紫队。** 攻击重现仅适用于您**自己的隔离实验室**(Proxmox / Docker,通过 Tailscale / Cloudflare Access 连接的封闭网络)。请**勿**对您不拥有的系统运行。不包含在线服务的 PoC。
- 规则状态为 `status: experimental` — 在生产环境之前,请根据您的环境调整 `filter` 和阈值。
## 配套指南
更深入的文章 —— 威胁模型、安全实现以及家庭实验室的详细介绍 —— 位于书籍 *“OWASP MCP Top 10 実装・検知・隔離ガイド ― SOCアナリストが書くMCPセキュリティ”* 中:https://zenn.dev/kta1kri/books/owasp-mcp-top10 。免费章节涵盖了威胁模型和 tool 投毒。
## 作者
kta1kri — SOC 分析师,CISSP。从事 AI agent / MCP 的检测工程。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
## 日本語
MCP(Model Context Protocol)の **検知エンジニアリング** リポジトリです。**OWASP MCP Top 10** に対応した実用 Sigma 検知ルール、サンプル監査テレメトリ、隔離ホームラボ手順、そして **依存ゼロの検証スクリプト**(`python3 validate.py` で即動く)を収録。
世のMCPセキュリティ・ツールは「**予防/スキャン**(脆弱なツールを事前検出)」か「**やられMCP**」が中心。本リポジトリはその欠けていた **青チーム/実行時** の半分=「MCPの監査ログから MCP01〜10 の攻撃を **どう検知し、検知が本当に効くかを検証する**」を埋めます。
すべて **公開知識のみ**(OWASP / 公開CVE / RFC / 自宅ラボ)で構成。社内・顧客・業務情報は一切不使用。攻撃再現は **自分の隔離ラボ限定**(防御・紫チーム目的)。
詳細な脅威モデル・安全実装・ラボ手順は有料Book → https://zenn.dev/kta1kri/books/owasp-mcp-top10
标签:AI安全, Chat Copilot, CISA项目, IP 地址批量处理, MCP, OPA, Sigma规则, Web报告查看器, 目标导入, 紫队, 请求拦截, 逆向工具, 靶场