dnyandeobharambe/mcp-security-patterns
GitHub: dnyandeobharambe/mcp-security-patterns
该项目是针对 OWASP MCP Top 10 的企业级安全模式参考实现,通过包含攻击演示与生产级防御的可执行代码,为 MCP 服务器和 AI Agent 提供确定性的工程化安全防护边界。
Stars: 0 | Forks: 0
# MCP 安全模式
[](https://owasp.org/www-project-mcp-top-10/)
[](LICENSE)
[](https://python.org)
## 这是什么
这是一个用于在企业环境中保护 MCP 服务器和 AI agent pipeline 的参考实现。
每个模式都针对一个 OWASP MCP Top 10 风险,包含:
- **可运行的攻击演示** — 准确展示漏洞是如何被利用的
- **可运行的防御方案** — 生产就绪的 Python 实现
- **测试文件** — 验证该模式在你的环境中有效
不是文档,也不是指南,而是带有攻击演示的可执行代码。
## 为什么会有这个项目
MCP (Model Context Protocol) 让 AI agent 能够连接到真实的企业系统 ——
数据库、ERP、电子邮件、病历档案、计费系统。这种强大的能力伴随着风险。
**数据概览:**
- 在公共互联网上发现 12,520 个暴露的 MCP 服务器(Censys 扫描,2026 年)
- 被扫描的 MCP 服务器中有 38% 没有任何身份验证
- 在启用自动批准的情况下,84.2% 的工具投毒攻击能够成功
- 2026 年初针对 MCP 实现提交了 30 多个 CVE
- 美国国家安全局 (NSA) 于 2026 年 5 月发布了正式的 MCP 安全指南
核心问题是:**模型级别的防护栏是基于概率的,而安全需要确定性。**
同一个 prompt 可能周一会被拒绝,而周二就会被执行。
你无法用防护栏划定安全边界。
边界必须存在于模型周围的确定性层中——而不是模型内部。
## OWASP MCP Top 10 覆盖范围
| 模式 | OWASP 风险 | 周期 | 状态 |
|---|---|---|---|
| [MCP01 — 凭据隔离](patterns/MCP01-credential-isolation/) | Token 管理不当与机密暴露 | 1 | ✅ 已完成 |
| [MCP02 — HITL 授权网关](patterns/MCP02-hitl-gate/) | 权限过大与范围蔓延 | 2 | 🔄 即将推出 |
| [MCP03 — 内容净化](patterns/MCP03-content-sanitization/) | 工具投毒与恶意指令 | 1 | ✅ 已完成 |
| [MCP04 — 供应链验证](patterns/MCP04-supply-chain/) | 软件供应链攻击 | 4 | 🔄 即将推出 |
| [MCP05/06 — 概率分诊网关](patterns/MCP05-06-triage-gate/) | Prompt 注入与意图颠覆 | 2 | 🔄 即将推出 |
| [MCP07 — OAuth 2.1 身份验证](patterns/MCP07-oauth-auth/) | 身份验证与授权不足 | 3 | 🔄 即将推出 |
| [MCP08 — 会话记录与重放](patterns/MCP08-session-recording/) | 审计与日志缺陷 | 1 | ✅ 已完成 |
| [MCP09 — 工具注册表白名单](patterns/MCP09-tool-registry/) | 影子 MCP 服务器 | 3 | 🔄 即将推出 |
| [MCP10 — Context 范围界定](patterns/MCP10-context-scoping/) | Context 过度共享与 PII 泄露 | 3 | 🔄 即将推出 |
| [全栈演示](examples/full-stack-demo/) | 结合所有十个模式 | 4 | 🔄 即将推出 |
## 模式分组
| 组别 | 模式 | 主题 | 状态 |
|---|---|---|---|
| [第 1 组 — 隔离、净化与记录](docs/GROUP-01-isolation-sanitization-recording.md) | MCP01, MCP03, MCP08 | 基础防御层 —— 无需 LLM | ✅ 已完成 |
| [第 2 组 — 分诊与授权](docs/GROUP-02-triage-authorization.md) | MCP05/06, MCP02 | 主动阻断与 Human-in-the-Loop 控制 | 🔄 第 2 周 |
| [第 3 组 — 注册表、Context 与身份验证](docs/GROUP-03-registry-context-auth.md) | MCP09, MCP10, MCP07 | 谁在连接、存在哪些工具、共享了什么 Context | 🔄 第 3 周 |
| [第 4 组 — 供应链与全栈](docs/GROUP-04-supply-chain-fullstack.md) | MCP04, 全栈演示 | 信任软件,一览所有模式 | 🔄 第 4 周 |
## 防御架构
```
Incoming request
↓
[MCP05/06] Probabilistic Triage Gate — harmful query? block it
↓ safe
[MCP07] OAuth 2.1 token validation — authenticated caller?
↓ authenticated
[MCP09] Tool registry allowlist — approved tool?
↓ approved
[MCP04] Supply chain verification — trusted package?
↓ verified
[MCP03] Content sanitization — clean input? no injection?
↓ clean
MCP Server executes tool
↓
[MCP01] Credential from Key Vault — injected at execution, never in context
↓
[MCP10] Context scoped — no cross-session PII leakage
↓
Tool result returned
↓
[MCP03] Response sanitization — injection in tool output? block it
↓ clean
[MCP02] HITL authorization gate — write operation? human approves first
↓ approved
[MCP08] Immutable session recording — every decision logged, replayable
↓
Action executes
```
每一层都是独立的。你可以部署一个或全部十个模式。
被越狱的模型即使击中了这条 pipeline,也无法突破安全边界。
## 快速开始
```
# Clone
git clone https://github.com/dnyandeobharambe/mcp-security-patterns
cd mcp-security-patterns
# Environment — Windows
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# Environment — Mac/Linux
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Test Pattern 1 — Credential Isolation
cd patterns/MCP01-credential-isolation
python server.py # Terminal 1 — start MCP server
python attack_demo.py # Terminal 2 — see the vulnerability
python test_mcp01.py # Terminal 2 — see the defense
```
## 模式结构
每个模式都遵循相同的格式:
```
patterns/MCP0X-pattern-name/
├── README.md # Attack scenario, defense explanation, how to run
├── server.py # MCP server with the security pattern implemented
├── attack_demo.py # Demonstrates the vulnerability WITHOUT the pattern
├── test_mcp0X.py # Test file — run to verify the pattern works
└── client.py # Agent client showing the pattern in action
```
## 关键概念
**Prompt 注入** — 隐藏在 agent 检索的内容中的恶意指令。
由 MCP03(内容净化)和 MCP05/06(分诊网关)提供防御。
**凭据隔离** — API 密钥和 Token 绝对不能出现在 agent context 中。
由 MCP01 提供防御。防止通过 prompt 注入或日志访问提取凭据。
**HITL 治理 (Human-in-the-Loop)** — agent 提议,人类授权。
对企业系统的写操作需要明确的人工批准。
由 MCP02 提供防御。
**工具投毒** — 恶意的 MCP 服务器或工具定义劫持了 agent 的行为。
由 MCP03、MCP09(工具注册表)、MCP04(供应链)提供防御。
**影子 MCP 服务器** — 游离于安全治理之外的未经授权的 MCP 部署。
由 MCP09(白名单——默认拒绝)提供防御。
**Context 过度共享** — 来自一个会话的 PII 泄漏到另一个会话中。
由 MCP10(基于会话的隔离)提供防御。
**会话记录** — 捕获 agent 的每一个决策,用于取证调查。
由 MCP08(不可变的仅追加审计追踪)实现。
## 技术栈
- **Python 3.11+**
- **FastAPI** — MCP 服务器实现
- **LangGraph** — agent 编排与 HITL 工作流
- **LangSmith** — 可观测性与推理轨迹捕获
- **Azure Key Vault** — 凭据管理(包含用于本地开发的 mock)
- **OAuth 2.1 / PKCE** — MCP 服务器身份验证 (MCP07)
## 相关资源
- [OWASP MCP Top 10](https://owasp.org/www-project-mcp-top-10/)
- [OWASP LLM Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
- [NSA MCP 安全指南](https://www.nsa.gov) — 2026 年 5 月
- [MCP 安全规范](https://modelcontextprotocol.io/specification/2025-06-18/basic/security)
- [MITRE ATLAS — AI 攻击技术](https://atlas.mitre.org)
## 作者
**Danny Bharambe** — AI 安全架构师 | 企业 AI | MCP 安全
[linkedin.com/in/dnyandeo](https://linkedin.com/in/dnyandeo) · [github.com/dnyandeobharambe](https://github.com/dnyandeobharambe)
## 许可证
MIT —— 自由使用,请注明出处。
## 主题
`mcp` `model-context-protocol` `ai-security` `llm-security` `prompt-injection`
`owasp` `enterprise-ai` `agentic-ai` `hitl` `credential-isolation`
`tool-poisoning` `ai-agents` `langraph` `fastapi` `python`
标签:AI安全, Chat Copilot, MCP协议, Python, 无后门, 身份与访问控制, 逆向工具