使用说明
🛡️ MCP 安全分析器
针对模型上下文协议(MCP)服务器的自动化安全分析与攻击向量检测
📖 概述
MCP安全分析器是一款自动化工具,用于分析模型上下文协议(MCP)服务器部署中的安全风险。它能在您的企业范围内发现MCP服务器,利用大型语言模型(LLMs)分析工具功能,并通过提示注入识别潜在的攻击向量。
🎯 主要特点
- 🔍 自动发现扫描终端以发现MCP服务器及其工具
- 由大型语言模型(LLM)驱动的分析使用Claude AI分析工具功能(读/写权限)
- 攻击向量检测自动识别三步攻击链
- 📊 风险优先级排序基于终端/服务器邻近程度的严重程度评分
- 🎨 交互式仪表板实时可视化与分诊界面
- ⚙️ VSCode 集成从 VSCode 工作区读取工具的启用/禁用状态
🏗️ 建筑学
flowchart TB
subgraph Discovery["1️⃣ Discovery Phase"]
A[Enterprise Endpoints] --> B[MCP Server Scanner]
B --> C[Tool Inventory]
C --> D[Store in JSON]
end
subgraph Analysis["2️⃣ Analysis Phase"]
D --> E[Load Tool Data]
E --> F[Claude AI Analysis]
F --> G{Tool Capabilities}
G --> H[canRead Ticker]
G --> I[canWrite Ticker]
H --> J[Logic Layer]
I --> J
K[VSCode Config] --> J
J --> L[Final Decisions]
L --> M[canReadPrivate]
L --> N[canReadPublic]
L --> O[canWritePublic]
L --> P[isActive]
end
subgraph AttackVectors["3️⃣ Attack Vector Generation"]
M --> Q[List B: Private Data Access]
N --> R[List A: External Data Ingestion]
O --> S[List C: Public Exfiltration]
P --> Q
P --> R
P --> S
R --> T[Generate Permutations]
Q --> T
S --> T
T --> U[A → B → C Chains]
U --> V[Severity Calculation]
V --> W[Attack Vector Database]
end
subgraph Dashboard["4️⃣ Triage Dashboard"]
W --> X[Paginated API]
X --> Y[Filter & Sort]
Y --> Z[Interactive UI]
Z --> AA[Close/Mitigate]
AA --> W
end
style Discovery fill:#e1f5ff
style Analysis fill:#fff3e0
style AttackVectors fill:#fce4ec
style Dashboard fill:#f3e5f5
🎯 攻击向量模型
分析仪检测到 三步提示注入攻击链:
flowchart LR
A["🌐 List A<br/>External Data<br/>Ingestion"] -->|"Malicious<br/>Prompt"| B["🔐 List B<br/>Private Data<br/>Access"]
B -->|"Exfiltrate"| C["📤 List C<br/>Public Data<br/>Write"]
style A fill:#81c784
style B fill:#e57373
style C fill:#ffb74d
攻击链示例
- 步骤A (外部摄入):工具从不可信来源读取数据(例如。,
github/get_file_contents) - 步骤B (私有访问):恶意提示触发私有数据访问(例如。,
filesystem/read_file) - 步骤C (数据外泄):数据被发送到公共目的地(例如。,
slack/send_message)
严重程度等级
| 严重程度 | 条件 | 风险等级 | 示例 |
|---|---|---|---|
| 🔴(红) 高 | 相同端点 + 相同服务器 | 最直接的攻击路径 | 所有工具都在单个GitHub Copilot实例上 |
| 黄色(表示警告或注意) 中等 | 相同终端点 + 不同服务器 | 需要跨服务器协调 | 在同一台机器上使用GitHub + Slack工具 |
| 🟢(绿灯) 低 | 不同的终端 | 需要横向移动 | 工具位于不同的机器/网络上 |
🚀 快速入门
先决条件
- Node.js 18及以上版本
- npm 或 yarn
- Anthropic API密钥(用于Claude AI分析)
- 已配置MCP服务器的VSCode(可选)
安装
# Clone the repository
git clone https://github.com/AshwinRamachandran2002/mcp-security-analyzer.git
cd mcp-security-analyzer
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY
# Run the development server
npm run dev
参观 http://localhost:3000 访问仪表板。
📁 项目结构
router/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ │ ├── servers/ # MCP server discovery API
│ │ ├── analysis/ # Tool analysis APIs
│ │ │ ├── generate/ # LLM analysis endpoint
│ │ │ ├── decisions/ # Store analysis results
│ │ │ └── vscode-disabled/ # VSCode integration
│ │ └── attack-vectors/ # Attack vector generation API
│ ├── discovery/ # Discovery UI
│ ├── analysis/ # Analysis UI
│ ├── attack-triage/ # Attack vector triage UI
│ └── page.tsx # Home page
├── lib/ # Core logic
│ ├── attack-vector-generator.ts # Attack chain generation
│ ├── analysis-logic.ts # Decision computation logic
│ └── vscode-tools-reader.ts # VSCode workspace reader
├── scripts/
│ └── generate-attack-vectors.ts # Offline generation script
├── data/
│ ├── discovered/ # Discovered MCP servers (JSON)
│ └── analysis/ # Analysis results and vectors
└── enterprise_data/
└── enterprise_inventory.json # Endpoint inventory
📊 使用工作流程
1. 发现阶段
导航至 发现 用于扫描您企业终端的页面:
# The scanner will:
# - Read enterprise_inventory.json
# - Discover MCP servers on each endpoint
# - Extract tool definitions
# - Store results in data/discovered/
输出: data/discovered/{server_name}_tools.json 对于每个MCP服务器
2. 分析阶段
导航至 分析 分析工具页面:
- 查看工具查看所有已发现的工具,并使用筛选选项
- 生成分析点击“全部重新生成”或单独分析各个工具
- 大语言模型(LLM)分析Claude AI判定:
canRead工具可以读取/获取数据canWrite工具可以写入/修改数据
- 逻辑层计算最终决策:
isActive从VSCode工作区(启用/禁用)canReadPrivate可以访问私有/敏感数据canReadPublic可以从外部/不可信来源读取canWritePublic可以写入公共目标位置
输出: data/analysis/tool_decisions.json
3. 攻击向量生成
# Generate attack vectors offline (faster)
npm run generate-vectors
# Or use the API (with pagination)
curl http://localhost:3000/api/attack-vectors?page=1&pageSize=50
输出: data/analysis/attack_vectors.json (24,000+ 个向量)
4. 分类与缓解
导航至 攻击分类(或攻击优先级排序) 页面:
- 过滤向量 按严重程度、状态或终点分类
- 查看详情 每个攻击链的
- 生成缓解措施 使用大型语言模型(LLM)
- 相近的向量 实施修复后
🔧 配置
企业库存
编辑 enterprise_data/enterprise_inventory.json:
{
"endpoints": [
{
"endpoint": "endpoint_MachineName",
"repos": ["owner/repo1", "owner/repo2"]
}
]
}
VSCode 集成
分析器自动从以下位置读取 VSCode 工作区设置:
~/Library/Application Support/Code/User/workspaceStorage/*/state.vscdb
它检测:
- 禁用的MCP服务器(
disabledToolSets) - 禁用的单个工具(
disabledTools)
环境变量
# .env
ANTHROPIC_API_KEY=your_api_key_here
NEXT_PUBLIC_APP_URL=http://localhost:3000
🧪 技术细节
两级分析架构
为什么? 将基础能力检测(LLM)与安全决策(逻辑层)分离
-
LLM 层 (简单,快速):
- 输入:工具名称、描述、参数
- 输出:
canRead,canWrite布尔值(或布尔类型) - 提供者:Claude 3.5 Sonnet
-
逻辑层 (可配置,可审计):
- 将大型语言模型(LLM)股票代码与检测功能相结合
- 目前使用保守默认值(假设为真)
- 未来:先进的检测算法
攻击向量排列
对于 n 工具分为3类列表:
- A类名单能够读取公共数据的工具
- B类名单能够读取私有数据的工具
- C类名单能够写入公共目的地的工具
总向量数 = |A| × |B| × |C|
示例:36 × 36 × 19 = 24,624个攻击途径
性能优化
- 服务器端分页API返回每页50个向量
- 缓存生成JSON文件中缓存的向量
- 离线生成脚本预先生成所有向量
- 并行批量加载前端高效加载数据
🔐 安全考量
防御安全工具
⚠️(警告) 此工具仅设计用于防御性安全目的:
- 分析您自己的MCP(可能是指某种特定系统或平台,如“Microsoft Cloud Platform”或其他,具体需根据上下文确定)部署情况
- 识别并减轻安全风险
- 提升安全态势
❌(这个符号在中文中通常表示“错误”或“不正确”,但没有直接的对应词汇,所以直接保留原符号) 请勿用于:
- 攻击你并不拥有的系统
- 凭证收集(或:凭证窃取)
- 恶意提示注入
数据隐私
- 所有分析运行 本地地 在你的机器上
- API密钥存储在
.env(从未提交过) - 工具定义存储在本地
data/目录 - 未向外部服务发送任何数据(用于分析的Claude API除外)
🛠️ 开发
运行开发服务器
npm run dev
生成攻击向量
npm run generate-vectors
# or
npx tsx scripts/generate-attack-vectors.ts
为生产构建(或:为生产环境准备)
npm run build
npm run start
关键技术
- 前端Next.js 14,React,TypeScript
- 用户界面组件shadcn/ui,Tailwind CSS
- 人工智能Anthropic Claude API
- 数据库JSON 文件(未来:SQLite/PostgreSQL)
- 可视化美人鱼图(或称为泳道图)
📈 路线图
- [ ] 实现针对私有/公开数据访问的高级检测算法
- [ ] 添加对更多大型语言模型(LLM)提供商的支持(OpenAI、本地模型)
- [ ] 实时监控和警报
- [ ] 与SIEM系统的集成
- [ ] 多用户协作功能
- [ ] 自动生成修复方案
- [ ] CI/CD流水线集成
- [ ] Docker 容器化
🤝 贡献
欢迎贡献!请随时提交拉取请求。
- 为仓库创建分支
- 创建你的特性分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 提交一个拉取请求(或合并请求)
📄 许可证
这个项目遵循MIT许可证授权——详见 许可证 文件中详述。
🙏 致谢
- 模型上下文协议(MCP) 由Anthropic开发
- Claude AI 用于大型语言模型(LLM)驱动的分析
- Next.js 并且 Vercel(注:Vercel是一个用于部署和托管静态网站及服务器端渲染应用的平台,直接音译为“维尔塞尔”或保持原英文名,根据上下文决定是否需要具体解释) 对于框架
- shadcn/ui(可译为“shadcn用户界面库”或根据具体上下文简化为“shadcn UI”) 用于美观的用户界面组件
📧 联系方式
阿什温·拉马钱德兰
- GitHub: @AshwinRamachandran2002(用户名或特定标识,可直接保留原样或根据上下文翻译为“阿什温·拉马昌德拉2002”等,但在此处作为通用用户名处理,故保留原样)
- 项目链接: https://github.com/AshwinRamachandran2002/mcp-security-analyzer 翻译为中文是:“https://github.com/AshwinRamachandran2002/mcp安全分析器”(或根据具体语境,也可翻译为“https://github.com/AshwinRamachandran2002/MCP安全分析工具”等,以更贴合中文表达习惯)。这里,“mcp-security-analyzer”被翻译为“mcp安全分析器”或“MCP安全分析工具”,具体取决于该工具的用途和上下文
🌟 星辰历史
为安全社区倾心打造
