MCP安全分析器

自动化工具,用于分析Model Context Protocol (MCP)服务器部署的安全风险,发现MCP服务器,分析工具能力,并通过提示注入识别潜在攻击向量。

  • by AshwinRamachandran2002
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AshwinRamachandran2002/mcp-security-analyzer

使用说明

🛡️ 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

攻击链示例

  1. 步骤A (外部摄入):工具从不可信来源读取数据(例如。, github/get_file_contents)
  2. 步骤B (私有访问):恶意提示触发私有数据访问(例如。, filesystem/read_file)
  3. 步骤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. 分析阶段

导航至 分析 分析工具页面:

  1. 查看工具查看所有已发现的工具,并使用筛选选项
  2. 生成分析点击“全部重新生成”或单独分析各个工具
  3. 大语言模型(LLM)分析Claude AI判定:
    • canRead工具可以读取/获取数据
    • canWrite工具可以写入/修改数据
  4. 逻辑层计算最终决策:
    • 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. 分类与缓解

导航至 攻击分类(或攻击优先级排序) 页面:

  1. 过滤向量 按严重程度、状态或终点分类
  2. 查看详情 每个攻击链的
  3. 生成缓解措施 使用大型语言模型(LLM)
  4. 相近的向量 实施修复后

🔧 配置

企业库存

编辑 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)与安全决策(逻辑层)分离

  1. LLM 层 (简单,快速):

    • 输入:工具名称、描述、参数
    • 输出: canRead, canWrite 布尔值(或布尔类型)
    • 提供者:Claude 3.5 Sonnet
  2. 逻辑层 (可配置,可审计):

    • 将大型语言模型(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 容器化

🤝 贡献

欢迎贡献!请随时提交拉取请求。

  1. 为仓库创建分支
  2. 创建你的特性分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 提交一个拉取请求(或合并请求)

📄 许可证

这个项目遵循MIT许可证授权——详见 许可证 文件中详述。


🙏 致谢


📧 联系方式

阿什温·拉马钱德兰


🌟 星辰历史


为安全社区倾心打造