FinkTech/mcp-verify

GitHub: FinkTech/mcp-verify

企业级 MCP 服务器安全验证工具,通过静态规则、模糊测试与 LLM 分析帮助团队在开发生命周期中及早发现并修复安全风险。

Stars: 0 | Forks: 0

Yogui - The Official Mascot of MCP Verify
Meet Yogui, the official guardian and mascot of MCP Verify.

Version License TypeScript Node.js Test Coverage Maintained by Fink

MCP Verify Banner

## 📄 TL;DR **企业级 MCP 服务器安全工具包**,提供 4 种接口:交互式 Shell、CLI 命令、MCP Server 工具、VSCode 扩展。具备 **智能模糊测试器 v1.0**(反馈循环 + 12 种变异策略)、**61 条安全规则**(涵盖 6 大威胁类别:OWASP Top 10、MCP 特定、OWASP LLM Top 10、多代理攻击、企业合规、AI 武器化)、多上下文工作区(开发/预发布/生产)、安全配置文件(轻量/均衡/激进)以及 LLM 语义分析(Gemini 免费层级)。输出 JSON/HTML/SARIF 报告,支持评分(0-100)和基线对比,适用于 CI/CD 生产环境。 ## 🎯 谁适合使用? - **MCP 服务器开发者** - 在上线前发现安全问题 - **DevSecOps 工程师** - 在 CI/CD 流水线中实现自动化安全验证 - **采用 MCP 的企业** - 确保第三方 MCP 服务器符合安全标准 ## ⚡ 快速开始(3 分钟) ``` # Clone and build git clone https://github.com/FinkTech/mcp-verify.git cd mcp-verify npm install npm run build # Option 1: Interactive Shell (recommended for exploration) mcp-verify > set target "node server.js" > validate > fuzz --tool "Echo Tool" > exit # Option 2: One-shot command (for scripts/CI-CD) mcp-verify validate "node server.js" ``` **输出结果:** ``` ✓ Validation complete Validation Report: ────────────────────────────────────────────────── Server: my-mcp-server Status: ✓ Valid Tools: 5 (5 valid) Technical Vulnerability Score: 95/100 (EXCELLENT) Quality Score: 92/100 ────────────────────────────────────────────────── JSON: ./reports/json/mcp-report-2026-02-03.json HTML: ./reports/html/mcp-report-2026-02-03.html ``` ``` flowchart LR A[MCP Server\nstdio / HTTP / SSE] --> B[Handshake\nprotocol version\nserver name] B --> C[Discovery\ntools · resources · prompts] C --> D[Schema Validation\nJSON-RPC 2.0\nMCP spec] C --> E[Security Scan\n61 rules · 6 blocks] C --> F[Smart Fuzzer\n12 mutation strategies] C --> G[LLM Analysis\noptional · semantic] D & E & F & G --> H[Report\nJSON · HTML · SARIF\nMarkdown · Badge] H --> I{Score} I -->|≥ threshold| J[✅ Pass\nexit 0] I -->|< threshold| K[❌ Fail\nexit 2] ``` 📚 **更多示例**:[guides/EXAMPLES.md](./guides/EXAMPLES.md) 🎮 **交互式 Shell**:[查看下方](#-interactive-shell) 🔧 **设置 LLM 分析**:[guides/LLM_SETUP.md](./guides/LLM_SETUP.md) 🔄 **CI/CD 集成**:[guides/CI_CD.md](./guides/CI_CD.md) ## 🎁 你能获得什么 ### 🔍 安全分析 | 功能 | 描述 | | ---- | ---- | | **💯 技术漏洞评分** | 企业级评分引擎(0-100),结合 61 条安全规则、智能模糊测试器 v1.0 与 LLM 分析 | | **🛡️ 61 条安全规则** | OWASP Top 10(13 条)+ MCP 特定(8 条)+ OWASP LLM Top 10(9 条)+ 多代理(11 条)+ 合规(9 条)+ AI 武器化(11 条) | | **🧬 智能模糊测试器 v1.0** | 智能载荷生成,支持反馈循环、12 种变异策略、指纹识别与定时检测 | | **📜 协议合规性** | 验证 JSON-RPC 2.0 与 MCP 2024-11-05 规范 | | **👤 安全配置文件** | `light`(快速 CI/CD)、`balanced`(默认)、`aggressive`(深度审计)+ 自定义配置文件 | ### 🛠️ 工具与接口 | 功能 | 描述 | | ---- | ---- | | **🎮 交互式 Shell** | 具备自动补全、历史记录、多上下文工作区、输出重定向的完整 REPL | | **💻 CLI 命令** | 11 个安全工具(validate、fuzz、stress、doctor、proxy、play、dashboard、mock、init、examples、fingerprint) | | **🤖 MCP Server** | 7 个 MCP 工具供 AI 代理使用(validateServer、scanSecurity、analyzeQuality、generateReport、listInstalledServers、selfAudit、compareServers) | | **📦 VSCode 扩展** | 实时扫描、4 个树形视图、诊断、代码操作、报告面板 | | **📊 Web 仪表板** | 实时监控([查看文档](./apps/web-dashboard/README.md)) | ### 📊 分析与报告 | 功能 | 描述 | | ---- | ---- | | **🧠 LLM 语义分析** | 可选 AI 深度检查(Gemini 免费层级、Anthropic、Ollama、OpenAI) | | **📄 多种报告格式** | JSON(CI/CD)、HTML(人类可读)、SARIF(GitHub)、Markdown、SVG 徽章 | | **📈 基线对比** | [回归检测](./REGRESSION-DETECTION.md) 与可自定义的分数下降阈值 | | **🌍 多语言** | 英语 + 西班牙语(i18n 系统) | | **🚀 CI/CD 就绪** | 退出码(`0`=通过、`1`=警告、`2`=严重)+ GitHub Actions 集成 | ## 📦 安装 ### 方法 1:从源码安装(推荐)✅ ``` git clone https://github.com/FinkTech/mcp-verify.git cd mcp-verify npm install npm run build # Use directly node dist/mcp-verify.js validate "node server.js" # Or create alias (Linux/macOS) alias mcp-verify="node $(pwd)/dist/mcp-verify.js" ``` ### 方法 2:NPM 包安装 ✅ ``` npm install -g mcp-verify mcp-verify validate "node server.js" ``` ### 方法 3:独立二进制文件 ✅ ``` # High-performance native binary using Node SEA npm run compile # Current platform only npm run compile:all # All platforms (Linux, macOS, Windows) # Use the binary directly ./dist/bin/linux/mcp-verify validate "node server.js" # Linux ./dist/bin/macos/mcp-verify validate "node server.js" # macOS ./dist/bin/windows/mcp-verify.exe validate "node server.js" # Windows ``` ## 🎮 交互式 Shell mcp-verify 包含一个**功能完整的交互式 Shell**,用于探索性测试和工作流自动化: ``` # Start interactive mode (default if no command specified) mcp-verify # Or explicitly mcp-verify interactive ``` ### 功能特性 | 功能 | 描述 | | ---- | ---- | | **上下文自动补全** | 命令、标志、文件路径与工具名称的 Tab 补全 | | **持久化历史记录** | 命令历史保存在 `~/.mcp-verify/history.json`(跨会话) | | **多上下文工作区** | 独立管理开发/预发布/生产环境 | | **输出重定向** | 保存命令输出:`validate > report.txt` 或 `fuzz >> results.log` | | **密钥脱敏** | 自动从历史记录中脱敏 API 密钥 | | **会话持久化** | 状态保存在 `.mcp-verify/session.json`(每个项目) | ### 交互式命令 ``` # Session management set target "node server.js" # Set default target set lang es # Change language to Spanish status # Show session status history # Show command history history --clear # Clear all history # Multi-context commands context list # List all contexts context switch staging # Switch to staging context context create testing # Create new context # Security profiles profile set aggressive # Switch to aggressive profile profile save my-audit # Save current config as custom profile profile list # List available profiles # Security tools (all CLI commands work in shell) validate # Validate current target fuzz --tool "Echo Tool" # Fuzz specific tool doctor # Run diagnostics stress --users 20 # Load test with 20 concurrent users # Shell utilities clear # Clear screen exit # Exit shell help # Show all available commands with descriptions ``` ### 提示符标识 提示符会显示当前上下文与配置文件: ``` # Default context mcp-verify (balanced) > # Named context with target [my-project] mcp-verify (dev:aggressive) node server.js > ``` 📚 **完整 Shell 指南**:[apps/cli-verifier/CLAUDE.md](./apps/cli-verifier/CLAUDE.md) ## 🎯 多上下文工作区 支持管理多个服务器配置(开发、预发布、生产),各配置独立: ### 创建上下文 ``` # Interactive mode mcp-verify > context create dev > set target "node dev-server.js" > profile set light > context create staging > set target "https://staging.example.com/mcp" > profile set balanced > context create prod > set target "https://prod.example.com/mcp" > profile set aggressive ``` ### 切换上下文 ``` > context list Contexts (3): ● dev node dev-server.js light ○ staging https://staging.example.com/mcp balanced ○ prod https://prod.example.com/mcp aggressive > context switch prod ✓ Switched to context: prod Target: https://prod.example.com/mcp Profile: aggressive ``` ### 上下文隔离 每个上下文包含: - **独立目标**(stdio 命令或 HTTP URL) - **独立安全配置文件**(轻量/均衡/激进/自定义) - **独立配置**(超时、LLM 设置等) - **独立工具发现**(缓存可用工具) **持久化**:所有上下文保存在 `.mcp-verify/session.json`(每个项目工作区) ## 🛡️ 安全配置文件 通过内置或自定义配置文件控制模糊测试强度与验证严格度: ### 内置配置文件 | 配置文件 | 使用场景 | 载荷数 | 变异数 | 分数阈值 | 失败条件 | | -------- | -------- | ------ | ------ | -------- | -------- | | **light** | 快速检查、CI/CD | 25 | 0 | 60 | 严重 | | **balanced** | 常规测试(默认) | 50 | 3 | 70 | 严重 | | **aggressive** | 预生产审计 | 100 | 5 | 90 | 严重 + 高 | ### 配置文件对比 ``` # Light profile (fast, CI-friendly) validate "node server.js" --profile light # ~30 seconds, catches obvious issues # Balanced profile (default, thorough) validate "node server.js" # ~2 minutes, good coverage # Aggressive profile (comprehensive) validate "node server.js" --profile aggressive # ~5 minutes, maximum detection ``` ### 自定义配置文件 可保存当前配置为可复用配置文件: ``` # Interactive mode mcp-verify > profile set balanced # Start from balanced > set fuzz.maxPayloadsPerTool 75 # Customize > set validate.minScore 85 > profile save my-audit # Save as custom profile # Use custom profile > profile set my-audit > validate ``` **存储位置**:自定义配置文件保存在 `~/.mcp-verify/config.json`(全局,跨项目) 📊 **配置文件细节**:每个配置文件控制: - 每个工具的载荷数量 - 变异策略(SQL 深度、Unicode 绕过、定时探测等) - 异常检测阈值 - 分数要求(最低可接受分数) - 失败条件(失败于严重、失败于高) ## 🛠️ 核心命令 ### 基础验证 ``` # Validate MCP server mcp-verify validate "node server.js" # With LLM semantic analysis (Ollama - free, local) mcp-verify validate "node server.js" --llm ollama:llama3.2 # Generate all report formats mcp-verify validate "node server.js" --html --format sarif ``` ### CI/CD 集成 ``` # Fail build if critical issues found mcp-verify validate "node server.js" --fail-on-degradation # Compare against baseline (regression detection) mcp-verify validate "node server.js" \ --save-baseline baseline.json # First run: save baseline mcp-verify validate "node server.js" \ --compare-baseline baseline.json \ # Future runs: compare --fail-on-degradation # Exit code 2 if scores drop ``` ### 故障排查 ``` # Diagnose connection issues mcp-verify doctor "node server.js" # Run mock server for testing mcp-verify mock --port 3000 ``` ### 可用命令列表 | 命令 | 用途 | 文档 | | ---- | ---- | ---- | | `validate` | 包含 61 条安全规则的完整安全验证(6 大威胁类别) | [EXAMPLES.md](./guides/EXAMPLES.md) | | `fuzz` | 智能模糊测试(含反馈循环与变异) | [COMMANDS.md](./COMMANDS.md#fuzz) | | `stress` | 负载/并发测试 | [EXAMPLES.md](./guides/EXAMPLES.md) | | `doctor` | 诊断、环境检查与二进制完整性验证 | [Doctor 章节](#-doctor--diagnostics--integrity) | | `proxy` | 具备 5 层安全网关的透明代理 | [Proxy 章节](#-security-proxy-with-guardrails) | | `play` | 交互式工具测试沙盒 | 内置帮助 | | `dashboard` | 实时终端监控(Blessed UI) | 内置帮助 | | `mock` | 模拟 MCP 服务器用于客户端测试 | 内置帮助 | | `init` | 搭建新的 MCP 服务器项目 | 内置帮助 | | `examples` | 交互式示例浏览器 | 内置帮助 | | `fingerprint` | 服务器技术识别 | 内置帮助 | | `interactive` | 启动交互式 Shell(默认模式) | [交互式 Shell](#-interactive-shell) |

Yogui Doctor

### 🩺 Doctor – 诊断与完整性检查 `doctor` 命令执行全面的系统诊断与二进制完整性验证: ``` # Full diagnostic report mcp-verify doctor "node server.js" # Watch mode (auto-refresh every 5s) mcp-verify doctor --watch # Verbose output with detailed steps mcp-verify doctor --verbose # Generate reports mcp-verify doctor --html --output ./reports ``` **二进制完整性管理**(跟踪 CLI + 服务器二进制文件): ``` # Show integrity history (last 20 builds) mcp-verify doctor --show-history # Regenerate hashes without full rebuild mcp-verify doctor --fix-integrity # Clean old history (keep last 10 builds) mcp-verify doctor --clean-history 10 ``` **Doctor 检查内容**: - ✅ 二进制完整性(CLI 与服务器的 SHA-256 校验) - ✅ 环境(Node.js、Python、Git、Deno 运行时) - ✅ MCP 服务器连接与握手 - ✅ 敏感环境变量审计 **完整性特性**: - 分别跟踪 CLI 与服务器二进制文件 - 保留最近 20 个构建记录(可配置) - 每个构建的 Git 提交可追溯 - 崩溃安全的原子文件操作 - 存储于 `.mcp-verify/integrity-history.json`(即使清理后仍保留) ## 🚦 退出码

Yogui Error

mcp-verify 使用标准退出码用于 CI/CD 集成: | 编码 | 含义 | 描述 | | ---- | ---- | ---- | | **0** | ✅ 成功 | 服务器通过验证 | | **1** | ⚠️ 警告 | 发现非关键问题 | | **2** | ❌ 严重 | 安全漏洞或基线降级 | **CI/CD 用法**: ``` # GitHub Actions example - name: Validate MCP Server run: mcp-verify validate "node server.js" # Fails workflow if exit code is 2 (critical issues) ``` 📚 **完整 CI/CD 指南**:[guides/CI_CD.md](./guides/CI_CD.md) ## 🔐 安全规则 mcp-verify 检查 **61 个安全漏洞**,覆盖 **6 大威胁类别**: ``` block-beta columns 3 OWASP["📦 Block OWASP\nSEC-001–013\n13 rules\nOWASP Top 10"]:1 MCP["🔌 Block MCP\nSEC-014–021\n8 rules\nMCP-Specific"]:1 A["🤖 Block A\nSEC-022–030\n9 rules\nOWASP LLM Top 10"]:1 B["🤝 Block B\nSEC-031–041\n11 rules\nMulti-Agent Attacks"]:1 C["🏢 Block C\nSEC-042–050\n9 rules\nEnterprise Compliance"]:1 D["⚔️ Block D\nSEC-051–061\n11 rules\nAI Weaponization"]:1 ```

📦 Block OWASP:OWASP Top 10 对应(SEC-001 到 SEC-013)

| 规则 | 严重度 | 描述 | OWASP 映射 | | ---- | ------ | ---- | ---------- | | SEC-001 | 高 | 认证绕过 | A07:2021 | | SEC-002 | 严重 | 命令注入 | A03:2021 | | SEC-003 | 高 | SQL 注入 | A03:2021 | | SEC-004 | 高 | 服务器端请求伪造 (SSRF) | A10:2021 | | SEC-005 | 高 | XML 外部实体注入 (XXE) | A05:2021 | | SEC-006 | 高 | 反序列化不安全 | A08:2021 | | SEC-007 | 高 | 路径遍历 | A01:2021 | | SEC-008 | 中 | 数据泄露 | A01:2021 | | SEC-009 | 高 | 敏感数据暴露 | A02:2021 | | SEC-010 | 中 | 缺少速率限制 | A04:2021 | | SEC-011 | 中 | ReDoS(正则表达式 DoS) | A04:2021 | | SEC-012 | 高 | 弱加密 | A02:2021 | | SEC-013 | 高 | 提示注入 | 新兴 |

🔌 Block MCP:MCP 特定安全(SEC-014 到 SEC-021)

| 规则 | 严重度 | 描述 | 类别 | | ---- | ------ | ---- | ---- | | SEC-014 | 高 | 暴露网络端点 | MCP 安全 | | SEC-015 | 高 | 缺少认证 | MCP 安全 | | SEC-016 | 中 | 不安全的 URI 方案 | MCP 安全 | | SEC-017 | 中 | 工具权限过大 | MCP 安全 | | SEC-018 | 中 | 描述中的密钥 | MCP 安全 | | SEC-019 | 中 | 缺少输入约束 | MCP 安全 | | SEC-020 | 中 | 危险工具链 | MCP 安全 | | SEC-021 | 高 | 未加密凭证 | MCP 安全 |

🤖 Block A:OWASP LLM Top 10 在 MCP 上下文(SEC-022 到 SEC-030)

| 规则 | 严重度 | 描述 | OWASP LLM | | ---- | ------ | ---- | --------- | | SEC-022 | 高 | 过度代理 | LLM01 | | SEC-023 | 高 | 工具提示注入 | LLM01 | | SEC-024 | 严重 | 工具输入提示注入 | LLM01 | | SEC-025 | 高 | 供应链工具依赖 | LLM03 | | SEC-026 | 中 | 工具响应中的敏感数据 | LLM06 | | SEC-027 | 中 | 训练数据投毒 | LLM03 | | SEC-028 | 中 | 工具 DoS | LLM04 | | SEC-029 | 中 | 不安全的插件设计 | LLM07 | | SEC-030 | 中 | 过度数据披露 | LLM06 |

🤝 Block B:多代理与代理攻击(SEC-031 到 SEC-041)

| 规则 | 严重度 | 描述 | 类别 | | ---- | ------ | ---- | ---- | | SEC-031 | 高 | 工具结果篡改 | 多代理 | | SEC-032 | 高 | 递归代理循环 | 多代理 | | SEC-033 | 高 | 多代理权限提升 | 多代理 | | SEC-034 | 中 | 代理状态投毒 | 多代理 | | SEC-035 | 中 | 分布式代理 DDoS | 多代理 | | SEC-036 | 高 | 代理协同攻击 | 多代理 | | SEC-037 | 高 | 代理身份伪造 | 多代理 | | SEC-038 | 高 | 跨代理提示注入 | 多代理 | | SEC-039 | 中 | 代理声誉劫持 | 多代理 | | SEC-040 | 中 | 工具链路径遍历 | 多代理 | | SEC-041 | 中 | 代理内存注入 | 多代理 |

🏢 Block C:运营与企业合规(SEC-042 到 SEC-050)

| 规则 | 严重度 | 描述 | 类别 | | ---- | ------ | ---- | ---- | | SEC-042 | 中 | 缺少审计日志 | 合规 | | SEC-043 | 中 | 不安全的会话管理 | 合规 | | SEC-044 | 中 | 暴露端点 | 合规 | | SEC-045 | 低 | 不安全的默认 | 合规 | | SEC-046 | 中 | 缺少 CORS 验证 | 合规 | | SEC-047 | 低 | 缺少模式版本控制 | 合规 | | SEC-048 | 中 | 缺少功能协商 | 合规 | | SEC-049 | 中 | 认证中的定时侧信道 | 合规 | | SEC-050 | 低 | 输出熵不足 | 合规 |

⚔️ Block D:AI 武器化与供应链(SEC-051 到 SEC-061)

| 规则 | 默认状态 | 严重度 | 描述 | 类别 | | ---- | -------- | ------ | ---- | ---- | | SEC-051 | ❌ 禁用 | 高 | 武器化 MCP 模糊测试器 | 武器化 | | SEC-052 | ❌ 禁用 | 严重 | 自主 MCP 后门 | 武器化 | | SEC-053 | ❌ 禁用 | 严重 | 恶意配置文件 | 供应链 | | SEC-054 | ✅ 启用 | 严重 | API 端点劫持 (CVE-2026-21852) | 供应链 | | SEC-055 | ❌ 禁用 | 高 | 提权即服务 | 武器化 | | SEC-056 | ❌ 禁用 | 高 | 通过 MCP 钓鱼 | 武器化 | | SEC-057 | ❌ 禁用 | 中 | 通过隐写术的数据外泄 | 武器化 | | SEC-058 | ❌ 禁用 | 严重 | 自复制 MCP | 武器化 | | SEC-059 | ✅ 启用 | 高 | 未验证的工具授权 | 授权 | | SEC-060 | ✅ 启用 | 中 | 缺少事务语义 | 可靠性 | | SEC-061 | ✅ 启用 | 高 | 同形/Unicode 欺骗 | 供应链 |
**可接受的风险等级**: - **生产环境**:分数 ≥ 90(优秀) - **预发布环境**:分数 ≥ 70(良好) - **内部工具**:分数 ≥ 50(一般) 📊 **详细评分**:[SECURITY_SCORING.md](./SECURITY_SCORING.md) ## 🤖 智能模糊测试器 v1.0 智能模糊测试器是一个**智能载荷生成引擎**,能够从服务器响应中学习并自动生成针对性变异: ### 关键特性 | 功能 | 描述 | | ---- | ---- | | **反馈循环** | 分析响应中的异常(定时、崩溃、错误)并生成变异 | | **12 种变异策略** | SQL 深度、Null 字节注入、Unicode 绕过、定时探测、缓冲区压力、引号变化等 | | **自动指纹识别** | 检测服务器语言/框架并禁用无关生成器(节省 40-60% 时间) | | **9 个载荷生成器** | 提示注入、SQL/XSS/CMD 注入、JWT 攻击、原型污染、JSON-RPC 违规、模式混淆、路径遍历 | | **10 个漏洞检测器** | 定时、错误披露、XSS、提示泄露、Jailbreak、路径遍历、弱 ID、信息泄露、协议违规等 | | **基线校准** | 在异常检测前建立清晰的定时/尺寸基线 | ### 工作原理 ``` flowchart TD A[MCP Server\nDiscovered Tools] --> B[Initial Payloads\nlight · medium severity] B --> C[Baseline Calibration\nnormal timing & size] C --> D[Main Fuzzing Loop\nconcurrent execution] D --> E{Response\nAnalysis} E -->|timing anomaly\ncrash · error| F[Feedback Loop\ngenerate mutations] E -->|normal| G[Next Payload] F --> H[Mutation Queue\nhigh-priority first] H --> D D --> I[Vulnerability Detectors\n10 detectors · engine hints] I --> J[Findings Report\nSQL · XSS · Prompt · Timing\nPath Traversal · Jailbreak] ``` ### 智能变异 当模糊测试器检测到**有趣响应**(定时异常、崩溃、错误模式)时,会自动生成针对性变异: ``` # Example: SQL injection timing anomaly detected Original payload: "' OR 1=1 --" Response time: 2500ms (baseline: 120ms) Mutations generated: → "' OR SLEEP(5) --" # Timing probe (confirm blind SQLi) → "' UNION SELECT * --" # SQL depth → "\" OR 1=1 --" # Quote variation → "\u0027 OR 1=1 --" # Unicode normalization ``` ### 使用示例 ``` # Basic fuzzing mcp-verify fuzz "node server.js" # Fuzz specific tool mcp-verify fuzz "node server.js" --tool "DatabaseQuery" # Aggressive fuzzing with fingerprinting mcp-verify fuzz "node server.js" \ --profile aggressive \ --fingerprint \ --concurrency 5 # Stop on first crash mcp-verify fuzz "node server.js" --stop-on-first ``` ### 模糊测试器输出 ``` Smart Fuzzer v1.0 ────────────────────────────────────────────────── Session : fuzz-1234567890-abc123 Duration : 45.23s Payloads : 250/280 Vulns : 3 (2 critical, 1 high) Errors : 0 ── Feedback Loop ────────────────────────────── Interesting responses : 12 Mutations injected : 45 Mutation rounds : 2 Timing anomalies : 5 Structural drifts : 4 Server crashes : 1 ``` 📚 **模糊测试器架构**:[libs/fuzzer/CLAUDE.md](./libs/fuzzer/CLAUDE.md)

Yogui Proxy Guardian

### 🛡️ 具备 3 层网关 + 紧急停止的透明安全代理 `proxy` 命令创建一个**透明 MCP 代理**,内置 **安全网关 v1.0**:3 层防御系统 + 客户端感知的紧急停止机制: ### 安全网关架构(3 层) **实时威胁检测,采用渐进式分析:** | 层级 | 类型 | 延迟 | 检测方法 | 使用时机 | | ---- | ---- | ---- | -------- | -------- | | **第 1 层:快速规则** | 静态模式 | <10ms | 正则表达式 + 硬编码模式 | 每个请求(SQL/CMD 注入、路径遍历) | | **第 2 层:可疑规则** | 启发式分析 | <50ms | 评分 + 异常检测 | 第 1 层通过时(工具链、过度权限) | | **第 3 层:LLM 规则** | 深度语义 | 500-2000ms | AI 驱动的上下文分析 | 可选启用(语义攻击、新型威胁) | **关键特性**: - **可解释的阻断** - 每次拒绝都包含:规则 ID、严重度、CWE、OWASP 映射、修复步骤 - **缓存优先策略** - SHA-256 哈希 + 60 秒 TTL + LRU 淘汰(1000 条记录) - **客户端感知状态** - 每个客户端独立跟踪紧急停止(防止 DoS 攻击) ### 3 击停止紧急停止系统 **针对 HTTP 429(速率限制)错误的渐进退避机制:** | 击数 | 退避时间 | 触发条件 | 行为 | | ---- | -------- | -------- | ---- | | **第 1 击** | 30 秒 | 首次 429 错误 | 客户端被阻塞 30 秒,自动恢复 | | **第 2 击** | 60 秒 | 同一会话内第二次 429 | 客户端被阻塞 60 秒,记录警告 | | **第 3 击** | 永久 | 同一会话内第三次 429 | **紧急停止模式** - 客户端被永久阻塞,直到代理重启 | **客户端识别优先级**: 1. `x-client-id` 头部(显式指定) 2. `x-forwarded-for` 头部(代理链) 3. `remoteAddress`(直接连接) 4. `default-client`(默认值) ### 5 个内置防护门 | 防护门 | 防护内容 | 示例 | | ---- | ---- | ---- | | **HTTPS 强制** | 将 HTTP 升级为 HTTPS | `http://api.com` → `https://api.com` | | **输入净化** | 移除恶意模式(`