mcpsec
MCP服务器的安全扫描器和协议模糊器
         
______________________________________________________________________
为什么选择mcpsec?
MCP(模型上下文协议)将AI代理连接到外部工具。Claude Desktop、Cursor、VS Code Copilot和每个主要的AI IDE都使用它。 安全往往是事后才考虑的。
大多数MCP安全工具都进行静态分析。 mcpsec连接到实时服务器并证明了漏洞。
______________________________________________________________________
发现真正的Bug
| 目标 | 漏洞 | 严重性 | 状态 |
|---|---|---|---|
| 移动mcp | URL方案注入(CVE-2026-35394,CVSS 8.3)-通过未经消毒的工具输入执行任意代码 | 高 | 已修复-PR#299 |
| 雷达2-MCP | 通过参数类型混淆的多个SIGSEGV | 高 | 问题#42 |
| 雷达2-MCP | SIGSEGV通过参数类型混淆初始化 | 高 | 第52期 |
| MCP Python SDK | UnicodeDecodeError DoS | 中等 | 已修复-PR#2302 |
| mcp服务器获取 | 61个崩溃案例,异常处理DoS | 高 | 第3359期 |
| mcp服务器git | 61个崩溃案例 | 高 | 第3359期 |
| MCP TypeScript SDK | EPIPE崩溃 | 中等 | 第1564期 |
| MCP TypeScript SDK | 整数溢出DoS(MAX_SAFE_Integer+1) | 中等 | 第1765期 |
在负责任的披露下有更多发现。
______________________________________________________________________
安装
pip install mcpsec对于AI驱动的功能:
pip install mcpsec[ai]尼克斯
nix-shell # basic
nix-shell --arg withAll true # all optional deps______________________________________________________________________
快速开始
运行时扫描
# Scan via stdio
mcpsec scan --stdio "npx @modelcontextprotocol/server-filesystem /tmp"
# Scan via HTTP with auth
mcpsec scan --http http://localhost:8080/mcp -H "Authorization: Bearer TOKEN"
# Auto-discover and scan all local servers
mcpsec scan --auto
# Enumerate attack surface
mcpsec info --stdio "python my_server.py"静态分析(Audit v3)
# Local source - pattern-based + AI reachability
mcpsec audit --path ./my-mcp-server
# GitHub repository
mcpsec audit --github https://github.com/user/mcp-server
# With LLM-powered taint analysis
mcpsec audit --github https://github.com/user/mcp-server --ai
# Known vulnerable servers
mcpsec audit --github https://github.com/radareorg/radare2-mcp协议模糊
# Standard fuzzing (~200 cases)
mcpsec fuzz --stdio "python my_server.py"
# High intensity (~800 cases)
mcpsec fuzz --stdio "python my_server.py" --intensity high
# AI-powered payload generation
mcpsec fuzz --stdio "python my_server.py" --ai高级
# SQL Injection scanner with DB fingerprinting
mcpsec sql --stdio "npx @benborla29/mcp-server-mysql" --fingerprint
# Dangerous tool chain detection
mcpsec chains --stdio "npx @example/complex-server"
# Interactive exploitation REPL
mcpsec exploit --stdio "npx vulnerable-server"
# Rogue server for client-side testing
mcpsec rogue-server --port 9999 --attack all______________________________________________________________________
静态分析-审计v3
v2.7.1中的新功能 -使用基于模式的架构完全重写审计引擎。
七阶段分析流程
Source Code
│
├─ 1. Fetch - Clone GitHub repo or load local path
├─ 2. Detect - Identify language, MCP SDK, and framework
├─ 3. Sink Scan - 3,450+ regex patterns across 12 languages
├─ 4. Semgrep - 149 semantic rules (AST-level)
├─ 5. AST - Python/JS taint flow analysis
├─ 6. Reachability - LLM taint tracing (heuristic fallback)
└─ 7. Deduplicate - Merge, rank, and report findings图案数据库-3450+水槽图案
| 漏洞类 | 模式 | 语言 |
|---|---|---|
| 命令注入 | 181 | Python、JS/TS、Go、Rust、Java、C、C#、Ruby、PHP |
| SQL/NoSQL注入 | ~100 | 所有驱动程序+ORM特定(Sequelize、SQLAlchemy、Drizzle、Kysely) |
| 路径遍历 | ~60 | fs,aiofiles,Deno,Bun,tarfile,ZipSlip |
| SSRF | ~80 | 请求,httpx,aiohttp,gRPC,OkHttp,WebSocket,已获取 |
| 反序列化 | ~60 | pickle、YAML、torch.load、numpy、joblib、BinaryFormatter |
| 代码执行 | ~50 | eval、vm、exec、DOM XSS、格式化字符串 |
| 模板注入 | ~30 | Jinja2、Pug、EJS、Handlebars、Lodash、ERB、Velocity、Thymeleaf |
| 加密弱点 | ~40 | MD5/SHA-1、RC4、弱密钥、JWT none alg。 |
| XXE | ~25 | lxml,解角,DOM文档,SAXParser |
| Log/Header/LDAP | ~50 | 所有主要框架 |
| 原型污染 | ~15 | Object.assign、deepmerge、, __proto__ |
| 消毒剂 | 105 | 命令、SQL、路径、XSS消毒剂(Python、JS、Go、Rust) |
| MCP特定 | ~45 | 工具参数→ 接收器、提示/资源处理程序(20+SDK) |
框架检测
自动识别:
- MCP SDK:
@modelcontextprotocol/sdk,mcppythonmcp-go,rmcp(生锈),mcpxC - 语言:TypeScript、JavaScript、Python、Go、Rust、Java、C#、PHP、Ruby、C/C++
- 框架:Express、FastAPI、Django、Gin、Axum、Spring Boot、ASP。网
启发式回退
当没有配置LLM时,可达性分析器使用 信心评分 在没有虚假沉默的情况下报告调查结果——总是报告高置信度模式(临界/高+直接污染)。
______________________________________________________________________
扫描仪
| 扫描仪 | 说明 |
|---|---|
prompt-injection | 工具描述中的隐藏说明 |
command-injection | 138个有效载荷的操作系统命令注入 |
path-traversal | 104个有效载荷的目录遍历 |
ssrf | 81个有效载荷的服务器端请求伪造 |
sql | SQL注入(错误、时间、布尔值、堆栈) |
auth-audit | 缺少身份验证,危险的工具组合 |
description-prompt-injection | 通过描述操纵LLM |
resource-ssrf | 通过MCP资源URI进行SSRF |
capability-escalation | 未申报的能力滥用 |
chains | 危险工具组合检测 |
code-execution | 检测 eval(), exec(),以及 compile() 水槽 |
template-injection | 针对SSTI和字符串格式漏洞 |
rag-poisoning | 识别危险写入→读取数据流 |
idor | 不安全的直接对象参考检测 |
info-leak | 环境变量和凭证披露 |
deserialization | Pickle、XXE和不安全的YAML解析 |
______________________________________________________________________
引信发生器
按强度级别组织的22台发电机:
低(~65例): malformed_json, protocol_violation, type_confusion, boundary_testing, unicode_attacks
中等(约200例): + session_attacks, encoding_attacks, integer_boundaries
高(约800例): + injection_payloads, method_mutations, param_mutations, timing_attacks, header_mutations, json_edge_cases, protocol_state, protocol_state_machine, id_confusion, concurrency_attacks, regex_dos, deserialization
精神错乱(~1500+例): + resource_exhaustion, memory_exhaustion_v2
______________________________________________________________________
运作原理
┌─────────┐ MCP Protocol ┌────────────┐
│ mcpsec │ ◄──── JSON-RPC ────► │ Target │
│ │ (stdio / HTTP) │ Server │
└────┬────┘ └────────────┘
│
├── Connect & enumerate attack surface
├── Run 10+ security scanners
├── Generate 800+ fuzz cases
├── Execute AI-powered payload mutations
├── Static audit: 3,450+ sink patterns + 149 Semgrep rules
└── Report findings with PoC evidence______________________________________________________________________
配置
AI提供商设置
mcpsec setup支持:OpenAI、Anthropic、谷歌、Groq、DeepSeek、Ollama
输出格式
# JSON
mcpsec scan --stdio "server" --output results.json
# SARIF 2.1.0 (GitHub/GitLab/Azure DevOps CI/CD)
mcpsec fuzz --stdio "server" --output results.sarif______________________________________________________________________
看 更改日志.md 查看完整的发布历史。
______________________________________________________________________
贡献
看 贡献.md 作为指导方针。
CI在所有PR上自动运行,包括Ruff和跨平台测试(Ubuntu、Windows、macOS)。
______________________________________________________________________
免责声明
仅用于授权的安全测试。仅扫描您拥有或具有明确测试权限的服务器。
______________________________________________________________________
许可证
______________________________________________________________________
建造于 曼坦·加萨迪亚
