kapilduraphe/mcp-watch
GitHub: kapilduraphe/mcp-watch
针对MCP服务器的专项安全扫描器,覆盖凭据泄露、工具投毒、提示词注入等AI协议特有的12类攻击向量。
Stars: 123 | Forks: 15
# MCP Watch 🔍
一款针对 Model Context Protocol (MCP) 服务器的全面安全扫描器,用于检测 MCP 实现中的漏洞和安全问题。
## 功能特性
- **🔑 Credential Detection (凭据检测)** - 查找硬编码的 API 密钥、令牌和不安全的凭据存储
- **🧪 Tool Poisoning (工具投毒)** - 检测工具描述中隐藏的恶意指令
- **🎯 Parameter Injection (参数注入)** - 识别提取敏感 AI 上下文的魔术参数
- **💉 Prompt Injection (提示词注入)** - 扫描提示词操纵和注入攻击
- **🔄 Tool Mutation (工具变异)** - 检测动态工具更改和撤回 (rug-pull) 风险
- **💬 Conversation Exfiltration (对话窃取)** - 查找窃取对话历史的触发器
- **🎨 ANSI Injection (ANSI 注入)** - 检测使用转义序列的隐写攻击
- **📋 Protocol Violations (协议违规)** - 识别 MCP 协议安全违规
- **🛡️ Input Validation (输入验证)** - 查找命令注入、SSRF 和路径遍历问题
- **🎭 Server Spoofing (服务器欺骗)** - 检测冒充流行服务的服务器
- **🌊 Toxic Flows (有害数据流)** - 识别危险的数据流模式
- **🔐 Permission Issues (权限问题)** - 查找过度权限和访问控制问题
## 快速开始 🚀
### 选项 1: NPM 包 (推荐)
```
# 全局安装
npm install -g mcp-watch
# 扫描任意 GitHub MCP 仓库
mcp-watch scan https://github.com/user/mcp-server
# 扫描您的本地 MCP 项目
mcp-watch scan-local /path/to/your/mcp-project
```
### 选项 2: 从 GitHub 源码
```
# 克隆并立即使用
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
# 扫描 GitHub 仓库
npm run scan:github https://github.com/user/mcp-server
# 扫描本地项目
npm run scan:local /path/to/your/mcp-project
```
### 选项 3: Docker (无需安装)
```
# 无需安装即可扫描
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm -v $(pwd):/workspace mcp-watch scan-local /workspace
```
## 安装
### 全局安装
```
npm install -g mcp-watch
```
### 本地安装
```
npm install mcp-watch
```
### 从源码安装
```
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
```
### Docker 安装 🐳
#### 使用 Docker 快速开始
```
# 本地构建并运行
docker build -t mcp-watch .
docker run --rm mcp-watch scan https://github.com/user/mcp-server
# 从源码构建
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
docker build -t mcp-watch .
```
#### Docker Compose (推荐用于生产环境)
```
# 使用 Docker Compose 构建并运行
docker compose build
docker compose up mcp-watch
# 或运行一次性扫描
docker compose run --rm mcp-watch scan https://github.com/user/repo
```
#### Docker 特性
- **🔒 安全性**: 非 root 用户,最小攻击面
- **📦 优化**: 多阶段构建,Alpine Linux 基础镜像
- **🚀 生产就绪**: 可直接用于部署和 CI/CD
- **🧹 简化**: 针对所有用例的单一优化 Dockerfile
## 使用方法
### 命令行
#### 扫描 GitHub 仓库
```
# 扫描 GitHub 仓库
mcp-watch scan https://github.com/user/mcp-server
# 扫描并输出 JSON
mcp-watch scan https://github.com/user/mcp-server --format json
# 按严重程度筛选
mcp-watch scan https://github.com/user/mcp-server --severity high
# 按类别筛选
mcp-watch scan https://github.com/user/mcp-server --category credential-leak
```
#### 扫描本地项目
```
# 扫描当前目录
mcp-watch scan-local .
# 扫描特定目录(绝对路径)
mcp-watch scan-local /path/to/your/mcp-project
# 扫描特定目录(相对路径)
mcp-watch scan-local ../my-mcp-server
# 本地扫描并输出 JSON
mcp-watch scan-local . --format json
# 本地扫描并按严重程度筛选
mcp-watch scan-local . --severity high
```
### 基于安装方式的使用
#### 通过 NPM 包
```
# 全局安装(推荐)
npm install -g mcp-watch
mcp-watch scan https://github.com/user/mcp-server
mcp-watch scan-local /path/to/project
```
#### 通过 GitHub 源码
```
# 克隆并构建
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
# 使用构建版本
node dist/main.js scan https://github.com/user/mcp-server
node dist/main.js scan-local /path/to/project
# 或使用 npm 脚本
npm run scan https://github.com/user/mcp-server
npm run scan-local /path/to/project
```
### Docker 使用 🐳
```
# 生产环境容器
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm mcp-watch scan https://github.com/user/mcp-server --format json --severity high
# Docker Compose
docker compose run --rm mcp-watch scan https://github.com/user/repo
docker compose run --rm mcp-watch scan https://github.com/user/repo --format json
# 交互式容器
docker run -it --rm mcp-watch sh
```
### 选项
- `--format ` - 输出格式: `console` (默认) 或 `json`
- `--severity ` - 最低严重级别: `low`, `medium`, `high`, `critical`
- `--category ` - 按漏洞类别筛选
### 类别
- `credential-leak` - 硬编码凭据和不安全存储
- `tool-poisoning` - 恶意工具描述
- `data-exfiltration` - 数据窃取和参数注入
- `prompt-injection` - 提示词操纵攻击
- `tool-mutation` - 动态工具更改
- `steganographic-attack` - 转义序列中的隐藏内容
- `protocol-violation` - MCP 协议安全问题
- `input-validation` - 命令注入, SSRF, 路径遍历
- `server-spoofing` - 服务器冒充
- `toxic-flow` - 危险数据流
- `access-control` - 权限和访问问题
## 示例输出
```
🔍 Scanning repository: https://github.com/user/mcp-server
📊 Based on vulnerablemcp.info, HiddenLayer, Invariant Labs, and Trail of Bits research
🔑 Scanning for credential vulnerabilities...
🧪 Scanning for tool poisoning vulnerabilities...
🎯 Scanning for parameter injection vulnerabilities...
💉 Scanning for prompt injection vulnerabilities...
📊 MCP SECURITY SCAN RESULTS
===============================
📈 Summary by Severity:
🚨 CRITICAL: 2
⚠️ HIGH: 1
⚡ MEDIUM: 3
🔍 Detailed Results:
--------------------
1. 🚨 Hardcoded credentials detected
📋 ID: HARDCODED_CREDENTIALS
🎯 Severity: CRITICAL
📂 Category: credential-leak
📍 Location: src/config.ts:15
🔍 Evidence: const apiKey = "sk-***REDACTED***"
```
## 开发
### 项目结构
```
mcp-watch/
├── main.ts # CLI entry point
├── types/
│ └── Vulnerability.ts # Type definitions
├── scanner/
│ ├── MCPScanner.ts # Main scanner orchestrator
│ ├── BaseScanner.ts # Base scanner utilities
│ └── scanners/ # Individual vulnerability scanners
│ ├── CredentialScanner.ts
│ ├── ParameterInjectionScanner.ts
│ └── ...
├── utils/
│ └── reportFormatter.ts # Report formatting
└── Docker/ # Containerization
├── Dockerfile # Production image
├── docker-compose.yml # Multi-service orchestration (Docker Compose v2)
└── .dockerignore # Build optimization
```
### 开发脚本
```
# 构建项目
npm run build
# 在开发模式下运行
npm run dev scan https://github.com/user/repo
# 开发期间快速扫描
npm run scan https://github.com/user/repo
# 清理构建产物
npm run clean
# 类型检查
npm run type-check
```
### 开发工作流 🚀
#### 本地开发 (推荐)
```
# 安装依赖
npm install
# 运行开发服务器
npm run dev
# 在开发期间运行扫描
npm run scan https://github.com/user/repo
# 类型检查
npm run type-check
```
#### Docker 开发 🐳
```
# 构建 Docker 镜像
docker compose build
# 测试镜像
docker run --rm mcp-watch scan https://github.com/user/repo
# 测试 Docker Compose
docker compose run --rm mcp-watch scan --help
```
### 添加新扫描器
1. 在 `scanner/scanners/` 中创建新扫描器
2. 继承 `AbstractScanner`
3. 实现 `scan()` 方法
4. 添加到 `MCPScanner.ts`
示例:
```
import { AbstractScanner } from "../BaseScanner";
import { Vulnerability } from "../../types/Vulnerability";
export class MyScanner extends AbstractScanner {
async scan(projectPath: string): Promise {
console.log("🔍 Scanning for my vulnerability type...");
const vulnerabilities: Vulnerability[] = [];
// Your scanning logic here
return vulnerabilities;
}
}
```
## 安全研究
本工具基于 AI 和网络安全领域领先组织的安全研究,识别了 MCP 环境特有的新型攻击向量,包括:
- **参数注入攻击**,用于提取敏感 AI 上下文
- **工具投毒**,包含隐藏的恶意指令
- **对话窃取**,使用触发短语
- **隐写攻击**,通过 ANSI 转义序列实施
- **有害智能体数据流**,跨越仓库边界
### 研究来源
- **VulnerableMCP 数据库** ([vulnerablemcp.info](https://vulnerablemcp.info))
- MCP 漏洞的综合数据库
- 真实世界的攻击模式和示例
- 新攻击向量的定期更新
- **HiddenLayer 研究** ([Exploiting MCP Tool Parameters](https://hiddenlayer.com/innovation-hub/exploiting-mcp-tool-parameters))
- 提取敏感数据的参数注入攻击
- 工具调用历史和对话窃取
- 系统提示词提取漏洞
- 思维链 (Chain of thought) 操纵
- 模型名称泄露风险
- **Invariant Labs 研究** ([GitHub MCP Vulnerability](https://invariantlabs.ai/blog/mcp-github-vulnerability))
- 工具投毒检测
- 有害智能体数据流
- 跨仓库安全问题
- 工具功能中的撤回 (Rug-pull) 更新
- 服务器欺骗预防
- **Trail of Bits 研究** ([MCP Security Research](https://blog.trailofbits.com/categories/mcp))
- 对话窃取方法
- ANSI 注入攻击
- 协议级漏洞
- 不安全的凭据存储模式
- 跨服务器影子攻击
- **PromptHub 分析** ([5 MCP Security Vulnerabilities](https://prompthub.substack.com/p/5-mcp-security-vulnerabilities-you))
- 命令注入模式 (影响 43% 的公共 MCP 服务器)
- SSRF 漏洞统计 (30% 允许获取任意 URL)
- 路径遍历攻击向量 (22% 泄露预期目录之外的文件)
- 检索代理欺骗
- 工具投毒预防策略
## 退出代码
- `0` - 未发现严重或高危漏洞
- `1` - 检测到严重或高危漏洞
- `1` - 发生扫描错误
## 贡献
1. Fork 本仓库
2. 创建一个功能分支
3. 使用 `npm run type-check` 运行类型检查
4. 手动测试您的更改
5. 提交 pull request
## GitHub Actions 🚀
本仓库使用自动化工作流进行 CI/CD、安全扫描和依赖管理:
- **CI**: 每次 push/PR 时自动测试和 Docker 验证
- **安全扫描**: 每日安全审计和漏洞检查
- **依赖更新**: 每周依赖维护和安全修复
- **发布**: 自动化发布资产创建
- **Docker 测试**: Docker 特定的测试和验证
## Dependabot 🤖
自动化依赖管理,包括:
- **npm**: 每周更新,自动合并次要/补丁版本
- **GitHub Actions**: 自动更新 Actions
- **Docker**: 基础镜像更新
有关详细的工作流文档,请参阅 [GITHUB_ACTIONS.md](GITHUB_ACTIONS.md)。
### Docker 开发工作流 🐳
```
# 克隆并设置
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
# 构建 Docker 镜像
docker compose build
# 测试镜像
docker run --rm mcp-watch --help
# 运行扫描
docker compose run --rm mcp-watch scan https://github.com/user/repo
```
## 许可证
MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
## 支持
- 创建 issue 以报告错误或请求功能
- 创建新 issue 前请先检查现有 issue
- 报告问题时请包含扫描输出和仓库详情
### Docker 支持 🐳
- **文档**: 有关 Docker 的详细用法,请参阅 [DOCKER.md](DOCKER.md)
- **问题**: 报告问题时请包含 Docker 版本和 Docker Compose 版本
- **测试**: 请同时使用生产环境和开发环境容器进行测试
**⚠️ 安全提示**: 本工具用于识别潜在的安全问题,但不应作为唯一的安全措施。请始终进行人工安全审查并遵循安全最佳实践。
标签:AI安全, ANSI注入, Chat Copilot, Cilium, CISA项目, DNS 反向解析, Docker, GraphQL安全矩阵, LLM, MCP, MITM代理, Model Context Protocol, NPM, Prompt注入, SSRF检测, TypeScript, Unmanaged PE, 云安全监控, 凭据检测, 协议安全, 参数注入, 命令注入, 大模型安全, 安全扫描器, 安全插件, 安全防御评估, 工具投毒, 微调策略, 数据泄露防护, 服务器欺骗, 网络安全, 网络探测, 自动化攻击, 请求拦截, 越权检测, 路径遍历, 隐私保护, 静态分析