dnyandeobharambe/mcp-security-patterns

GitHub: dnyandeobharambe/mcp-security-patterns

该项目是针对 OWASP MCP Top 10 的企业级安全模式参考实现,通过包含攻击演示与生产级防御的可执行代码,为 MCP 服务器和 AI Agent 提供确定性的工程化安全防护边界。

Stars: 0 | Forks: 0

# MCP 安全模式 [![OWASP MCP Top 10](https://img.shields.io/badge/OWASP-MCP%20Top%2010-red)](https://owasp.org/www-project-mcp-top-10/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/Python-3.11+-blue)](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, 无后门, 身份与访问控制, 逆向工具