manthanghasadiya/mcpsec
GitHub: manthanghasadiya/mcpsec
mcpsec 是一款针对 Model Context Protocol 服务器的动态安全扫描与协议模糊测试工具,通过运行时验证发现真实可利用的漏洞。
Stars: 3 | Forks: 0
# mcpsec
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://pypi.org/project/mcpsec/)
[](https://github.com/manthanghasadiya/mcpsec)
[](https://github.com/manthanghasadiya/mcpsec)
[](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安全扫描, 上游代理, 云安全监控, 人工智能安全, 协议模糊测试, 合规性, 安全扫描器, 应用层安全, 无后门, 模型上下文协议, 路径遍历, 逆向工具, 静态分析