返回市场
漏洞检查工具

漏洞检查工具

作者:andrasfe8 星标更新:2025-10-14

项目介绍

VulniCheck - 基于AI的安全扫描器

VulniCheck 使用基于AI的漏洞检测为Python项目和GitHub仓库提供全面的安全分析。它作为一个基于Docker的HTTP MCP服务器运行,采用标准HTTP流传输(无需SSE),提供安全的容器化部署和全面的漏洞扫描能力。

快速开始

1. 拉取并运行Docker容器

# 从Docker Hub拉取最新镜像
docker pull andrasfe/vulnicheck:latest

# 使用OpenAI API密钥运行(用于增强的AI风险评估)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-openai-api-key \
  andrasfe/vulnicheck:latest

# 或者不使用API密钥运行(基本漏洞扫描)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

2. 添加到Claude Code

claude mcp add --transport http vulnicheck http://localhost:3000/mcp

就这样!VulniCheck 现在可以在 Claude Code 中使用了。

使用方法

安装后,只需询问 Claude:

"对我的项目进行全面的安全检查"

"扫描 https://github.com/owner/repo 的漏洞"

"检查我的依赖项是否存在安全问题"

"扫描我的Dockerfile中的易受攻击的包"

VulniCheck 将会:

  • ✅ 扫描依赖项以查找已知漏洞(requirements.txt, pyproject.toml, setup.py)
  • ✅ 检测暴露的秘密和凭证
  • ✅ 分析Dockerfile中的安全问题
  • ✅ 验证MCP配置
  • ✅ 生成基于AI的风险评估
  • ✅ 提供可操作的补救建议

主要特性

  • Docker部署:安全的容器化部署,采用HTTP流传输(无需SSE/服务器发送事件)
  • 可选认证:支持Google OAuth 2.0进行安全访问控制(默认禁用)
  • 生产就绪:可扩展的HTTP服务器架构
  • 全面覆盖:查询5个以上的漏洞数据库(OSV.dev, NVD, GitHub Advisory, CIRCL, Safety DB)
  • GitHub集成:直接扫描任何公开或私有的GitHub仓库(最多1GB)
  • 基于AI的分析:使用OpenAI/Anthropic API进行智能安全评估
  • 秘密检测:查找代码中暴露的API密钥、密码和凭证
  • Docker安全:分析Dockerfile中的易受攻击的依赖项
  • 智能缓存:通过提交级别的缓存避免重复扫描
  • 空间管理:自动清理防止磁盘耗尽(总限制2GB)
  • 零配置:开箱即用,可通过可选API密钥增强

可用工具

工具描述
check_package_vulnerabilities检查特定的Python包是否有漏洞
scan_dependencies扫描依赖文件(requirements.txt, pyproject.toml等)
scan_installed_packages扫描当前安装的Python包
get_cve_details获取关于特定CVE的详细信息
scan_for_secrets在代码中检测暴露的秘密和凭证
scan_dockerfile分析Dockerfile中的易受攻击的Python依赖项
scan_github_repo对GitHub仓库进行全面的安全扫描
assess_operation_safety基于AI的操作风险评估
validate_mcp_security验证MCP服务器的安全配置
comprehensive_security_check交互式的基于AI的安全评估

可选API密钥

通过API密钥增强 VulniCheck,以获得更好的速率限制和AI功能:

docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-key \           # 基于AI的风险评估
  -e ANTHROPIC_API_KEY=your-key \        # 备选AI提供商
  -e GITHUB_TOKEN=your-token \           # 更高的GitHub API速率限制
  -e NVD_API_KEY=your-key \              # 更高的NVD速率限制
  andrasfe/vulnicheck:latest

认证(可选)

VulniCheck 支持可选的Google OAuth 2.0认证以实现安全访问控制。默认情况下,认证是禁用的

启用Google OAuth

  1. 获取Google OAuth凭据

    • 访问Google Cloud Console
    • 创建一个项目并启用Google+ API
    • 创建OAuth 2.0凭据(Web应用)
    • 添加授权重定向URI:http://localhost:3000/oauth/callback(或您的域名)
  2. 配置环境变量

    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET="GOCSPX-your-secret-here"
    export FASTMCP_SERVER_BASE_URL="http://localhost:3000"
    
  3. 带认证运行

    docker run -d --name vulnicheck-mcp -p 3000:3000 \
      --restart=unless-stopped \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
      -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
      -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
      andrasfe/vulnicheck:latest \
      python -m vulnicheck.server --auth-mode google
    
  4. 使用docker-compose: 查看docker-compose.auth-example.yml以获取完整的配置示例。

注意:OAuth令牌存储在/home/vulnicheck/.vulnicheck/tokens。使用Docker卷来持久化令牌跨越容器重启。

⚠️ 已知OAuth限制

FastMCP OAuth + HTTP传输不兼容

由于FastMCP 2.12.4的一个限制,OAuth认证与HTTP传输(流式HTTP)无法正常工作。授权端点(/oauth/authorize, /oauth/callback)没有正确挂载,导致404错误。

当OAuth有效时:

  • ✅ 本地连接(未来FastMCP版本支持)
  • ✅ OAuth发现端点工作(/.well-known/oauth-protected-resource

当OAuth无效时:

  • ❌ HTTP传输与外部客户端(ChatGPT, Claude Desktop等)
  • ❌ 授权端点返回404
  • ❌ 令牌交换失败

针对外部客户端(ChatGPT等)的解决办法:

通过ngrok或其他公共URL访问时,运行VulniCheck不带认证

# 不带OAuth启动(推荐用于外部客户端)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# 然后配置ngrok
ngrok http 3000

在您的MCP客户端(ChatGPT等)中:

  • URLhttps://your-ngrok-url.ngrok-free.dev/mcp
  • 认证:无

安全性考虑:

  • ✅ 通过HTTPS加密流量(ngrok)
  • ⚠️ 无认证 - 任何人都可以通过URL访问
  • 💡 ngrok免费URL在重启时会变化(通过隐蔽性保证安全)
  • 🔒 生产环境中,使用ngrok付费层并添加密码保护或IP白名单

未来解决方案: 此限制将在以下情况得到解决:

  1. FastMCP修复OAuth + HTTP传输支持,或者
  2. 实现替代的身份验证机制

使用ngrok

快速开始(无OAuth):

# 1. 启动VulniCheck
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# 2. 启动ngrok
ngrok http 3000

# 3. 在您的MCP客户端中使用ngrok URL
# URL: https://your-generated-url.ngrok-free.dev/mcp
# 认证:无

可选OAuth脚本(实验性 - OAuth无效):

提供了一个方便的脚本restart-vulnicheck-ngrok.sh用于测试OAuth,但由于FastMCP的限制,目前OAuth无法正常工作

# 复制示例环境文件
cp .env.example .env

# 编辑.env并添加您的凭据
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-your-secret-here
NGROK_URL=https://your-ngrok-url.ngrok-free.dev

# 运行脚本(OAuth将不起作用)
./restart-vulnicheck-ngrok.sh

注意:该脚本是为了将来使用而提供的,当FastMCP OAuth + HTTP传输被修复时。目前,始终对外部客户端不使用OAuth运行。

从源码构建

# 克隆仓库
git clone https://github.com/andrasfe/vulnicheck.git
cd vulnicheck

# 构建Docker镜像
docker build -t vulnicheck .

# 运行本地构建的镜像(无认证)
docker run -d --name vulnicheck-mcp -p 3000:3000 --restart=unless-stopped vulnicheck

# 使用Google OAuth运行
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
  -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
  -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
  vulnicheck \
  python -m vulnicheck.server --auth-mode google

Docker Hub

官方Docker镜像可在以下位置找到:

要求

  • Docker
  • Claude Code 或任何支持HTTP传输的MCP客户端(标准HTTP,无需SSE)
  • 可选:API密钥以增强功能

支持的文件类型

  • 依赖项requirements.txt, pyproject.toml, setup.py, 锁定文件
  • 容器Dockerfile, docker-compose.yml
  • 秘密:所有文本源文件
  • GitHub:任何公开或私有仓库的URL

支持


免责声明:提供的漏洞数据“按原样”提供,不附带任何担保。用户负责验证和修复。