manthanghasadiya/mcpsec

GitHub: manthanghasadiya/mcpsec

mcpsec 是一款针对 Model Context Protocol 服务器的动态安全扫描与协议模糊测试工具,通过运行时验证发现真实可利用的漏洞。

Stars: 3 | Forks: 0

# mcpsec
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![PyPI](https://img.shields.io/pypi/v/mcpsec)](https://pypi.org/project/mcpsec/) [![Bugs Found](https://img.shields.io/badge/bugs%20reported-10+-red)](https://github.com/manthanghasadiya/mcpsec) [![Fuzz Cases](https://img.shields.io/badge/fuzz%20cases-700+-orange)](https://github.com/manthanghasadiya/mcpsec) [![Semgrep Rules](https://img.shields.io/badge/semgrep%20rules-49-purple)](https://github.com/manthanghasadiya/mcpsec) **MCP 服务器的安全扫描器和协议模糊测试工具。** 大多数 MCP 安全工具仅进行静态分析。mcpsec 连接到实时服务器并验证漏洞利用。 [安装](#installation) • [使用](#usage) • [扫描器](#scanners) • [模糊测试](#fuzz-generators)
## 为什么选择 mcpsec? MCP 是连接 AI 代理(Claude, Cursor, VS Code)与外部工具的协议。各大 AI 公司都在使用它。其安全性往往被忽视。 - **82%** 的 MCP 实现存在路径遍历漏洞 - **67%** 存在代码注入漏洞 - 发现约 **2,000** 个暴露在互联网上的 MCP 服务器零身份验证 - Anthropic 自己的 Git MCP 服务器曾存在 3 个严重的 RCE 漏洞 mcpsec 已被用于发现并报告 Anthropic 和 GitHub MCP 实现中的 **12+ 个漏洞**,影响 Python, TypeScript 和 Go SDK 生态系统。 ## 安装 ``` pip install mcpsec ``` 启用 AI 驱动的功能: ``` pip install mcpsec[ai] ``` ## 使用方法 ### 运行时扫描 ``` # 通过 stdio 扫描 mcpsec scan --stdio "npx @modelcontextprotocol/server-filesystem /tmp" # 通过带认证的 HTTP 扫描 mcpsec scan --http http://localhost:8080/mcp -H "Authorization: Bearer TOKEN" # 枚举攻击面 mcpsec info --stdio "python my_server.py" # 高级 SQL 注入发现 mcpsec sql --stdio "npx @benborla29/mcp-server-mysql" --fingerprint # 攻击链分析 (优先级 0) mcpsec chains --stdio "npx @example/complex-server" ``` ### 协议模糊测试 ``` # 标准 fuzzing (150+ 用例) mcpsec fuzz --stdio "python my_server.py" # 高强度 (500+ 用例) mcpsec fuzz --stdio "python my_server.py" --intensity high # 针对特定攻击类别 mcpsec fuzz --stdio "python my_server.py" -g protocol_state_machine mcpsec fuzz --stdio "python my_server.py" -g id_confusion # AI 驱动的 payload 生成 mcpsec fuzz --stdio "python my_server.py" --ai ``` ### 静态分析 ``` # 本地源 mcpsec audit --path ./my-mcp-server # GitHub 仓库 mcpsec audit --github https://github.com/user/mcp-server # 带 AI 验证 mcpsec audit --github https://github.com/user/mcp-server --ai ``` ### 恶意服务器(客户端测试) ``` # 测试 MCP 客户端漏洞 mcpsec rogue-server --port 9999 --attack all ``` ## 扫描器 | 扫描器 | 描述 | |---------|-------------| | `prompt-injection` | 工具描述中的隐藏指令 | | `command-injection` | 附带漏洞利用验证的操作系统命令注入 | | `path-traversal` | 附带漏洞利用验证的路径遍历 | | `ssrf` | 针对内部服务的服务器端请求伪造 (SSRF) | | `auth-audit` | 缺失身份验证、危险工具组合 | | `description-prompt-injection` | 通过描述进行的 LLM 操纵 | | `resource-ssrf` | 通过 MCP 资源 URI 进行的 SSRF | | `capability-escalation` | 未声明的能力滥用 | | `sql` | 模块化 SQL 注入(报错、时间、布尔、堆叠) | | `chains` | 工具链分析(危险组合检测) | | `sql-rce` | SQL 注入至 RCE/文件访问(旧版) | ## 模糊测试生成器 | 生成器 | 描述 | |-----------|-------------| | `malformed_json` | 无效的 JSON 结构 | | `protocol_violation` | JSON-RPC 规范违规 | | `type_confusion` | 类型混淆攻击 | | `unicode_attacks` | 编码边界情况 | | `injection_payloads` | SQLi, XSS, 命令注入 | | `protocol_state_machine` | MCP 状态违规 | | `id_confusion` | JSON-RPC ID 边界情况 | ## Semgrep 规则 49 条 MCP 专用规则: - 命令注入(`exec`, `spawn`, `child_process`) - SQL 注入(原始查询, ORM 绕过) - 路径遍历(使用未净化输入的 `path.join`) - 描述注入(动态工具描述) - 资源 URI 问题(SSRF 向量) - 协议处理程序漏洞 ## 配置 ### AI 提供商设置 ``` mcpsec setup ``` 支持:OpenAI, Anthropic, Google, Groq, DeepSeek, Ollama ### 输出格式 ``` # JSON mcpsec scan --stdio "server" --output results.json # SARIF (CI/CD) mcpsec fuzz --stdio "server" --output results.sarif ``` ## 工作原理 ``` ┌─────────┐ MCP Protocol ┌────────────┐ │ mcpsec │ ◄──── JSON-RPC ────► │ Target │ │ │ (stdio / HTTP) │ Server │ └────┬────┘ └────────────┘ │ ├── Connect & enumerate attack surface ├── Run static scanners ├── Generate dynamic payloads ├── Execute fuzzing campaigns └── Report findings with evidence ``` ## 免责声明 仅用于授权的安全测试。请仅扫描您拥有或经授权测试的服务器。 ## 更新日志 ### v2.4.0 (2026-02-28) - **SAST 规则扩展**:新增 87 条 Semgrep 规则 → 跨 24 个规则文件共计 **154 条**。 - **广泛模式**:命令注入、路径遍历、SQL 注入、SSRF、反序列化 —— 现可捕获非字面量参数、模板字面量、字符串拼接、ORM 原始查询。 - **密钥检测**:AWS 密钥、AI API 密钥、GitHub/Slack 令牌、JWT 密钥、连接字符串、私钥。 - **MCP 专用**:危险工具名称、空 schema、错误泄露、输入反射、无身份验证检查。 - **代码异味**:安全 TODO、空 catch、禁用 TLS、CORS *、记录敏感数据、ReDoS 模式。 ### v2.3.0 (2026-02-28) - **扫描器大幅扩展**:CmdInj 138, PathTrav 104, SSRF 81 个 payload —— 编码绕过、协议走私、Shell 特定规避。 - **基于确认的检测**:带有 CONFIRMED/LIKELY 置信度评分的正则匹配。 - **5 个新 Fuzzer 生成器**:整数边界、并发攻击、内存耗尽、正则 DoS、反序列化(187+ 新测试用例)。 - **SDK 审计规则**:针对 Go, Rust, Python async 和 .NET MCP 服务器的新 Semgrep 规则。 ### v2.2.0 (2026-02-28) - **SARIF 2.1.0 输出**:`scan`, `fuzz`, 和 `audit` 上的 `--format sarif` 标志,用于 GitHub/GitLab/Azure DevOps CI/CD 集成。 - **CWE 映射与严重性评分**:自动 CWE 分类和兼容 GitHub 的安全严重性评分。 - **审计报告导出**:为 `mcpsec audit` 添加新的 `--output` 和 `--format` 标志。 - **错误修复**:修复了 exploit `run` 参数解析和 AI 客户端导入。 ### v2.1.0 (2026-02-27) - **AI 漏洞利用助手**:用于交互式 AI 主导测试的新 REPL 命令(`select`, `run`, `next`, `verdict`, `auto`)。 - **专家控制**:添加 `edit`, `aggressive`, 和 `hint` 以指导 AI 进行复杂的绕过。 - **反馈循环**:AI 现在从手动 `call` 命令和响应历史中学习。 - **稳健性**:修复了 `Finding` 模型 schema 并改进了 `--from-scan` 报告摄取。 ### v2.0.3 (2026-02-26) - **交互式漏洞利用 (MCP Repeater)**:用于发现结果的手动/半自动验证的新 REPL。 - **AI Payload 引擎**:集成到 playbook 中的上下文感知 payload 推荐。 - **Exploit Playbooks**:针对 SQLi, RCE, SSRF 等的攻击序列。 - **证据捕获**:自动日志记录和 PoC 脚本生成。 ### v2.0.2 (2026-02-26) - **工具链分析**:检测危险工具组合(read+exec, sql+exfil)。 - **跨平台优先**:对 `npx` 和现代路径解析的稳健 Windows 支持。 - **改进的 UI**:优化了终端输出和错误报告。 ### v2.0.1 (2026-02-25) - **高级 SQL 扫描器**:具有报错/时间/布尔检测功能的模块化架构。 - **数据库指纹识别**:自动识别 MySQL, Postgres, MSSQL 和 SQLite。 - **增强启发式**:更好的工具和参数面发现。 ### v2.0.0 (2026-02-24) - **模糊测试引擎 v2**:用于深度状态机探索的链式 fuzzer。 - **AI 驱动的验证**:对潜在安全发现结果的 LLM 验证。 ## 许可证 [MIT](LICENSE)
由 [Manthan Ghasadiya](https://www.linkedin.com/in/man-ghasadiya) 构建
标签:AI风险缓解, CISA项目, Claude, CVE检测, DevSecOps, DOE合作, GraphQL安全矩阵, LFI, MCP, Petitpotam, Python, RCE, Semgrep, SSRF, WordPress安全扫描, 上游代理, 云安全监控, 人工智能安全, 协议模糊测试, 合规性, 安全扫描器, 应用层安全, 无后门, 模型上下文协议, 路径遍历, 逆向工具, 静态分析