VulniCheck - 基于AI的安全扫描器
VulniCheck利用人工智能驱动的漏洞检测技术,为Python项目和GitHub仓库提供全面的安全分析。它作为一个基于Docker的HTTP MCP服务器运行,支持标准的HTTP流传输(无需SSE),提供安全的容器化部署以及全面的漏洞扫描功能。
快速入门
1. 拉取并运行Docker容器
# Pull the latest image from Docker Hub
docker pull andrasfe/vulnicheck:latest
# Run with OpenAI API key (for enhanced AI-powered risk assessment)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
--restart=unless-stopped \
-e OPENAI_API_KEY=your-openai-api-key \
andrasfe/vulnicheck:latest
# Or run without API key (basic vulnerability scanning)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
--restart=unless-stopped \
andrasfe/vulnicheck:latest2. 添加到Claude代码中
claude mcp add --transport http vulnicheck http://localhost:3000/mcp就是它了!VulniCheck 现已在 Claude Code 中可用。
使用方法
安装后,只需询问Claude:
"Run a comprehensive security check on my project"
"Scan https://github.com/owner/repo for vulnerabilities"
"Check my dependencies for security issues"
"Scan my Dockerfile for vulnerable packages"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)
- 基于人工智能的分析使用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 基于人工智能的运营风险评估 | |
validate_mcp_security 验证MCP服务器的安全配置 | |
comprehensive_security_check | 基于人工智能的交互式安全评估 |
可选API密钥
增强VulniCheck功能,通过API密钥实现更佳的速率限制和AI特性:
docker run -d --name vulnicheck-mcp -p 3000:3000 \
--restart=unless-stopped \
-e OPENAI_API_KEY=your-key \ # AI-powered risk assessment
-e ANTHROPIC_API_KEY=your-key \ # Alternative AI provider
-e GITHUB_TOKEN=your-token \ # Higher GitHub API rate limits
-e NVD_API_KEY=your-key \ # Higher NVD rate limits
andrasfe/vulnicheck:latest身份验证(可选)
VulniCheck支持可选的Google OAuth 2.0身份验证,以实现安全的访问控制。默认情况下,身份验证是 残疾的.
启用Google OAuth
- 获取Google OAuth凭据:
- 首选 Google 云控制台 - 创建一个项目并启用Google+ API - 创建OAuth 2.0凭据(Web应用程序) - 添加授权重定向URI: http://localhost:3000/oauth/callback (或您的域名)
- 配置环境变量:
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"- 带身份验证运行:
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- 使用 docker-compose:
见 docker-compose.auth-example.yml 以获取完整的配置示例。
注OAuth令牌被持久化存储在 /home/vulnicheck/.vulnicheck/tokens使用 Docker 卷来跨容器重启持久化令牌。
⚠️ 已知的OAuth限制
FastMCP OAuth + HTTP 传输不兼容
由于FastMCP 2.12.4版本存在限制,OAuth认证 不能正常工作 使用HTTP传输(streamable-http)。授权端点(/oauth/authorize, /oauth/callback) 未正确安装,导致出现404错误。
当OAuth起作用时:
- ✅ 本地连接(在未来的FastMCP版本中支持时)
- ✅ OAuth 发现端点工作正常 (
/.well-known/oauth-protected-resource)
当OAuth不起作用时:
- ❌ 使用外部客户端(如ChatGPT、Claude Desktop等)的HTTP传输
- ❌ 授权端点返回404
- ❌ 代币兑换失败
外部客户端(如ChatGPT等)的解决方案:
运行VulniCheck 未经认证 当通过ngrok或其他公共URL访问时:
# Start without OAuth (recommended for external clients)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
--restart=unless-stopped \
andrasfe/vulnicheck:latest
# Then configure ngrok
ngrok http 3000在您的MCP客户端(如ChatGPT等)中:
- URL(统一资源定位符):
https://your-ngrok-url.ngrok-free.dev/mcp - 认证无
安全考虑事项:
- ✅ 流量通过HTTPS(ngrok)进行加密
- ⚠️ 无认证 - 任何拥有URL的人都可以访问
- 💡 ngrok免费版URL重启后会改变(通过保密性来增强安全性)
- 🔒 对于生产环境,请使用带有密码保护或IP白名单的ngrok付费版本
未来决议: 这一限制将在以下情况下得到解决:
- FastMCP修复了OAuth + HTTP传输支持,或者
- 实施了替代的认证机制
与ngrok一起使用
快速入门(无需OAuth):
# 1. Start VulniCheck
docker run -d --name vulnicheck-mcp -p 3000:3000 \
--restart=unless-stopped \
andrasfe/vulnicheck:latest
# 2. Start ngrok
ngrok http 3000
# 3. Use the ngrok URL in your MCP client
# URL: https://your-generated-url.ngrok-free.dev/mcp
# Authentication: None可选OAuth脚本(实验性 - OAuth功能不可用):
一个便捷的脚本 restart-vulnicheck-ngrok.sh 为测试OAuth提供了(环境/工具),但 OAuth 目前无法正常工作 由于FastMCP的限制:
# Copy the example environment file
cp .env.example .env
# Edit .env and add your credentials
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
# Run the script (OAuth will not work)
./restart-vulnicheck-ngrok.sh注该脚本为将来使用而提供,当FastMCP OAuth + HTTP传输机制修复后将启用。目前,对于外部客户端,始终在不使用OAuth的情况下运行。
从源代码构建
# Clone the repository
git clone https://github.com/andrasfe/vulnicheck.git
cd vulnicheck
# Build Docker image
docker build -t vulnicheck .
# Run locally built image (no auth)
docker run -d --name vulnicheck-mcp -p 3000:3000 --restart=unless-stopped vulnicheck
# Run with 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 googleDocker Hub
官方Docker镜像可在以下位置获取:
- Docker Hub: Andrasfe/Vulnicheck(注:这可能是一个特定项目或工具的名称,直接翻译为中文可能不具有明确意义,因此保持原样,但根据语境,可以理解为“安德拉斯·费/漏洞检查”或类似含义,具体需结合上下文确定)
- 最新标签:
andrasfe/vulnicheck:latest
要求
- Docker
- Claude Code 或任何支持 HTTP 传输(标准 HTTP,无需 SSE)的 MCP 客户端
- 可选:用于增强功能的API密钥
支持的文件类型
- 依赖项:
requirements.txt,pyproject.toml,setup.py,锁定文件 - 集装箱:
Dockerfile,docker-compose.yml - 秘密所有基于文本的源文件
- GitHub任何公共或私有仓库的URL
支持
- 问题在 https://github.com/andrasfe/vulnicheck/issues 上报告问题
- 发展查看 CLAUDE.md(文件名,可译为“克劳德.md”或保持原样,根据上下文决定是否需要翻译文件名) 关于开发详情
- 安全通过GitHub安全公告私下报告安全问题
______________________________________________________________________
免责声明提供的漏洞数据“按原样”提供,不附带任何保证。用户需自行负责验证和修复。
