动态密钥检测与验证引擎

LLM-Based Dynamic Secret Detection and Validation Engine 是一个基于LLM的动态密钥检测与验证引擎,提供本地和GitHub仓库扫描功能,支持并行验证和结构化报告生成。

  • by Leenhakgm
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Leenhakgm/MCP

使用说明

基于LLM的动态秘密检测与验证引擎

架构图(文本)

+---------------------------+        +---------------------------+        +------------------------------+
| Client / CI / SCM Hook    | -----> | FastAPI API Layer         | -----> | Audit + Structured Logging   |
+---------------------------+        +---------------------------+        +------------------------------+
                                              |        |          \
                                              |        |           \
                                              v        v            v
                                +-----------------+  +----------------------+  +----------------------+
                                | Module 1        |  | Module 2             |  | Module 3             |
                                | Secret Detector |  | LLM Plan Generator   |  | Validation Executor  |
                                +-----------------+  +----------------------+  +----------------------+
                                              \\         /                         |
                                               \\       /                          |
                                                v     v                           v
                                              +---------------------------------------+
                                              | Repo Scanner (sync + async)           |
                                              | Recursive walk + filtering + caching   |
                                              +---------------------------------------+
                                                               |
                                                               v
                                              +---------------------------------------+
                                              | Parallel Validation Queue              |
                                              +---------------------------------------+

如何跑步

python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r mcp_server/requirements.txt
export GROQ_API_KEY="<your-key>"   # optional; inference falls back to unknown
uvicorn mcp_server.main:app --host 0.0.0.0 --port 8000

新存储库扫描API

POST /scan-repo

{
  "path": "/workspace/mcp-secret-validator",
  "min_detection_confidence": 0.55,
  "min_validation_confidence": 0.6,
  "max_workers": 4,
  "validation_timeout_seconds": 8,
  "report_output_path": "./reports/repo_scan.json",
  "config_path": "mcp_server/repo_scanner_config.json"
}

可选GitHub扫描:

{
  "github_url": "https://github.com/org/repo.git"
}

响应形状:

{
  "total_files_scanned": 152,
  "total_secrets_detected": 3,
  "total_valid_secrets": 1,
  "results": [
    {
      "file": "/workspace/mcp-secret-validator/example.py",
      "secret": "sk_...xyz",
      "service": "stripe",
      "confidence": 0.81,
      "validation_result": {
        "status": "INVALID",
        "risk": "LOW",
        "reason": "Rejected by endpoint (401)"
      }
    }
  ]
}

安全控制

  • 路径安全:本地仓库路径必须保留在配置的工作区根目录内。
  • 不执行:扫描仪仅读取文本文件;从不执行代码。
  • 过滤:跳过 .git, node_modules, __pycache__、二进制文件和超过2MB的文件。
  • SSRF缓解:DNS/IP策略阻止本地主机/私有/内部目标。
  • 方法硬化:验证计划只允许 GET;POST/PUT被拒绝。
  • 运输硬化:仅HTTPS端点。
  • 超时控制:每个请求超时和线程池超时边界。
  • 减少秘密曝光:输出和日志使用掩码机密(abc...xyz)和哈希。

业绩说明

  • 用途 ThreadPoolExecutor 用于并行验证。
  • 最大工作人员在服务器端受限,以减少API滥用。
  • 结果由秘密哈希缓存,以避免重复的推理/验证调用。
  • 异步API终结点(/scan-repo-async)将扫描仪包裹起来 asyncio.to_thread.

示例测试用例

  1. 使用以下命令创建repo文件夹:
    • app.py 包含 api_key = "sk_live_ABCDEF1234567890xyz"
    • fixtures.py 包含 token = "test_token_123"
  2. 呼叫 /scan-repo 路径指向该文件夹。
  3. 预期成果:
    • 一个高度自信的秘密 app.py.
    • 占位符令牌被抑制。
    • 报告中掩盖了秘密。

局限性

  • LLM推理质量取决于Gemini的可用性和快速行为。
  • 公共端点检查可能会对受限/非典型API产生假阴性结果。
  • 插件注册表在内存中。

未来的改进

  • 添加持久缓存后端(Redis)和分布式队列。
  • 添加基于AST的语言分析器和污染感知上下文提取。
  • 添加签名审计日志接收器和SIEM本机导出。

CLI使用情况(mcp-scan)

在没有API服务器的情况下直接运行:

python cli.py scan ./repo
python cli.py scan https://github.com/user/repository

可安装命令:

python -m pip install .
mcpsentinal scan ./repo

可选标志:

mcpsentinal scan ./repo --json
mcpsentinal scan ./repo --output report.json
mcpsentinal scan ./repo --max-workers 10

终端输出示例:

Scanning repository...

[HIGH RISK]
File: config.js
Secret: sk_...xyz
Service: stripe
Status: VALID

Scan Complete

Files scanned: 127
Secrets detected: 5
Valid secrets: 2
Invalid secrets: 3
Unknown secrets: 0