DevGreick/VulnHunter

GitHub: DevGreick/VulnHunter

一款完全离线运行的依赖漏洞扫描器,集成本地大语言模型对 CVE 进行智能可达性研判,适合对数据隐私要求严苛的安全审计和 DevSecOps 场景。

Stars: 0 | Forks: 0

VulnHunter

你的依赖中隐藏着秘密。VulnHunter 能帮你找出它们。
由 AI 驱动进行分类的离线漏洞扫描器。无需云服务,无 API 调用,数据绝不会离开你的本机。

Python License Offline AI Triage SARIF Ecosystems

English · Português

文档 · 快速开始 · AI 分类

## 🇺🇸 English ### VulnHunter 的独特之处 大多数漏洞扫描器会将你的依赖树发送到云服务。而 VulnHunter 完全在本地执行所有操作: - **扫描 7 个生态系统:** Python、Node.js、Go、Rust、Java、PHP、Ruby - **通过 Ollama 进行 AI 分类:** 本地 LLM 会读取你的代码,并告诉你哪些 CVE 在你的上下文中是真正可被利用的 - **初始设置后零网络需求:** 适用于隔离网络、政府和银行环境 - **保障机密安全:** API 密钥存储在你的操作系统密钥环中,从不保存在配置文件里 ### 快速开始 ``` # Install (global, recommended) uv tool install vulnhunter # Or via pip pip install vulnhunter # Interactive setup (detects Ollama, configures AI, sets language) vulnhunter init # Scan your project vulnhunter scan . # Scan with AI triage vulnhunter scan . --ai-triage ``` 就是这样。可在任何目录下运行,无需虚拟环境。 ### AI 分类 常规扫描器会直接吐出一堆 CVE 列表,让你自己去猜。VulnHunter 的 AI 分类功能会读取你的实际源代码,将其与每个 CVE 进行关联,并回答那个最关键的问题:**这个漏洞在我的代码中可达吗?** ``` vulnhunter scan . --ai-triage ``` ``` ╭──────────────── AI Triage Results ────────────────╮ │ CVE │ Package │ Risk │ Action │ ├────────────────┼──────────┼──────────┼─────────────┤ │ CVE-2023-XXXX │ flask │ HIGH │ Upgrade now │ │ CVE-2023-YYYY │ requests │ LOW │ Not exposed │ ╰────────────────┴──────────┴──────────┴─────────────╯ ``` 完全通过 [Ollama](https://ollama.com) 在你的本机上运行。推荐的模型: | 模型 | 使用场景 | |---|---| | `phi3:3.8b` | 快速分类,资源消耗低 | | `mistral` | 速度与准确性的最佳平衡 | | `llama3:8b` | 深度分析,效果最好 | ### 设置向导 `vulnhunter init` 会启动一个带有可交互选择菜单的向导(防误输): - 检测你的系统语言(EN/PT-BR) - 查找运行中的 Ollama 及可用模型 - 允许你从包含大小和层级信息的列表中选择模型 - 将你的 NVD API 密钥安全地存储在操作系统密钥环中 ### 支持的生态系统 | 生态系统 | 文件 | 传递依赖 (Transitive Deps) | |---|---|---| | **Python** | `requirements.txt` · `Pipfile.lock` · `poetry.lock` · `uv.lock` | `pipdeptree` | | **Node.js** | `package-lock.json` · `yarn.lock` · `pnpm-lock.yaml` | `npm ls` | | **Go** | `go.sum` · `go.mod` | `go mod graph` | | **Rust** | `Cargo.lock` | 内置 | | **Java** | `pom.xml` · `build.gradle` | `mvn dependency:tree` | | **PHP** | `composer.lock` | `composer show` | | **Ruby** | `Gemfile.lock` | `bundle list` | ### 数据来源 | 来源 | 角色 | 覆盖范围 | |---|---|---| | **OSV.dev** (Google) | 主要 | PyPI、npm、Maven、Packagist、RubyGems、Go | | **NVD** (NIST) | 备用 | 基于所有生态系统中的 CPE 进行匹配 | 数据库通过 GitHub Actions 每周更新。一次下载,永久扫描: ``` vulnhunter db download # Pre-built database (fastest) vulnhunter db update # Build from OSV/NVD sources vulnhunter db info # Check database stats ``` ### 输出格式 **表格:** 带有按严重性分组功能的彩色终端输出(默认) **JSON:** 机器可读报告 ``` vulnhunter scan . -f json -o report.json ``` **SARIF 2.1.0:** GitHub Code Scanning、VS Code SARIF Viewer ``` vulnhunter scan . -f sarif -o results.sarif ``` ### 命令行参考 ``` vulnhunter init Setup wizard vulnhunter scan [PATHS] [OPTIONS] Scan for vulnerabilities --ai-triage Enable AI analysis --model MODEL Override AI model -f, --format [table|json|sarif] Output format -o, --output FILE Save report to file -s, --severity [critical|high|...] Minimum severity filter --ignore-file FILE Path to .vulnignore -v, --verbose Debug logging vulnhunter db update [OPTIONS] Update vulnerability database --ecosystem ECOSYSTEMS Select specific ecosystems --all Download all ecosystems --source [osv|nvd|both] Data source vulnhunter db download Download pre-built database vulnhunter db info Show database stats vulnhunter config View current settings vulnhunter config set-nvd-key Save NVD API key to keyring vulnhunter config remove-nvd-key Remove NVD API key from keyring ``` ### CI/CD 集成 ``` # .github/workflows/vulnhunter.yml name: Security Scan on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - run: pip install vulnhunter - run: vulnhunter db download - run: vulnhunter scan . -f sarif -o results.sarif - uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif ``` ### 忽略漏洞 创建一个 `.vulnignore` 文件: ``` # Ignore globally CVE-2023-0001 # Ignore for a specific package CVE-2023-0002 requests # Ignore namespaced packages CVE-2023-0003 guzzlehttp/guzzle ``` ### 安全性 - API 密钥通过 `keyring` 存储在操作系统密钥环中,绝不使用明文 - 无数据泄密。所有的扫描和 AI 分析均在本地进行 - 每个模块均遵循 OWASP 最佳实践 - 输入验证、参数化查询,不使用 `eval`/`exec` - 发现漏洞时退出代码为 `1`。可用作 CI 闸门 ### 已知局限性 - 准确性取决于 OSV/NVD 数据的更新程度。请定期运行 `db update` - CPE 匹配(NVD)可能会对不常见的包名产生误报 - AI 分类仅为建议。请务必手动验证关键发现 - 仅限静态分析。不执行代码或分析运行时行为 ## 🇧🇷 Português

Suas dependências têm segredos. O VulnHunter encontra.
Scanner offline de vulnerabilidades com triagem por IA. Sem cloud, sem chamadas de API, nenhum dado sai da sua máquina.

### O que torna o VulnHunter diferente A maioria dos scanners de vulnerabilidade envia sua árvore de dependências para um serviço na nuvem. O VulnHunter faz tudo localmente: - **Escaneia 7 ecossistemas:** Python, Node.js, Go, Rust, Java, PHP, Ruby - **Triagem com IA via Ollama:** uma LLM local lê seu código e diz quais CVEs são realmente exploráveis no seu contexto - **Zero rede após o setup:** funciona em ambientes air-gapped, governo e bancos - **Segredos protegidos:** chaves de API armazenadas no keyring do sistema, nunca em arquivos de config ### Início Rápido ``` # Instalar (global, recomendado) uv tool install vulnhunter # Ou via pip pip install vulnhunter # Setup interativo (detecta Ollama, configura IA, define idioma) vulnhunter init # Escanear seu projeto vulnhunter scan . # Escanear com triagem por IA vulnhunter scan . --ai-triage ``` Funciona de qualquer diretório, sem virtual environment. ### Triagem com IA Scanners comuns despejam uma lista de CVEs e te deixam adivinhando. A triagem do VulnHunter lê seu código-fonte real, correlaciona com cada CVE e responde a pergunta que importa: **essa vulnerabilidade é alcançável no meu código?** ``` vulnhunter scan . --ai-triage ``` Roda inteiramente na sua máquina via [Ollama](https://ollama.com). Modelos recomendados: | Modelo | Uso | |---|---| | `phi3:3.8b` | Triagem rápida, poucos recursos | | `mistral` | Melhor equilíbrio velocidade/precisão | | `llama3:8b` | Análise profunda, melhores resultados | ### Wizard de Setup `vulnhunter init` abre um wizard interativo com menus selecionáveis (sem erros de digitação): - Detecta o idioma do sistema (EN/PT-BR) - Encontra Ollama rodando e modelos disponíveis - Permite escolher modelo de uma lista com tamanho e tier - Armazena sua API key do NVD com segurança no keyring do sistema ### Ecossistemas Suportados | Ecossistema | Arquivos | Deps Transitivas | |---|---|---| | **Python** | `requirements.txt` · `Pipfile.lock` · `poetry.lock` · `uv.lock` | `pipdeptree` | | **Node.js** | `package-lock.json` · `yarn.lock` · `pnpm-lock.yaml` | `npm ls` | | **Go** | `go.sum` · `go.mod` | `go mod graph` | | **Rust** | `Cargo.lock` | Nativo | | **Java** | `pom.xml` · `build.gradle` | `mvn dependency:tree` | | **PHP** | `composer.lock` | `composer show` | | **Ruby** | `Gemfile.lock` | `bundle list` | ### Fontes de Dados | Fonte | Papel | Cobertura | |---|---|---| | **OSV.dev** (Google) | Primária | PyPI, npm, Maven, Packagist, RubyGems, Go | | **NVD** (NIST) | Fallback | Matching via CPE em todos os ecossistemas | Banco atualizado semanalmente via GitHub Actions. Baixe uma vez, escaneie sempre: ``` vulnhunter db download # Banco pré-construído (mais rápido) vulnhunter db update # Construir a partir das fontes OSV/NVD vulnhunter db info # Ver estatísticas do banco ``` ### Formatos de Saída **Table:** saída colorida no terminal com agrupamento por severidade (padrão) **JSON:** relatório legível por máquina ``` vulnhunter scan . -f json -o report.json ``` **SARIF 2.1.0:** GitHub Code Scanning, VS Code SARIF Viewer ``` vulnhunter scan . -f sarif -o results.sarif ``` ### Referência CLI ``` vulnhunter init Wizard de configuração vulnhunter scan [CAMINHOS] [OPÇÕES] Escanear vulnerabilidades --ai-triage Ativar análise com IA --model MODELO Sobrescrever modelo de IA -f, --format [table|json|sarif] Formato de saída -o, --output ARQUIVO Salvar relatório em arquivo -s, --severity [critical|high|...] Filtro de severidade mínima --ignore-file ARQUIVO Caminho para .vulnignore -v, --verbose Log de debug vulnhunter db update [OPÇÕES] Atualizar banco de vulnerabilidades --ecosystem ECOSSISTEMAS Selecionar ecossistemas específicos --all Baixar todos os ecossistemas --source [osv|nvd|both] Fonte de dados vulnhunter db download Baixar banco pré-construído vulnhunter db info Ver estatísticas do banco vulnhunter config Ver configurações atuais vulnhunter config set-nvd-key Salvar API key do NVD no keyring vulnhunter config remove-nvd-key Remover API key do NVD do keyring ``` ### Integração CI/CD ``` # .github/workflows/vulnhunter.yml name: Security Scan on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - run: pip install vulnhunter - run: vulnhunter db download - run: vulnhunter scan . -f sarif -o results.sarif - uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif ``` ### Ignorando Vulnerabilidades Crie um arquivo `.vulnignore`: ``` # Ignorar globalmente CVE-2023-0001 # Ignorar para um pacote específico CVE-2023-0002 requests # Ignorar pacotes com namespace CVE-2023-0003 guzzlehttp/guzzle ``` ### Segurança - Chaves de API no keyring do sistema via `keyring`, nunca em texto puro - Zero exfiltração de dados. Todo scan e análise de IA acontece localmente - Boas práticas OWASP em todos os módulos - Validação de input, queries parametrizadas, sem `eval`/`exec` - Exit code `1` quando vulnerabilidades são encontradas. Use como gate de CI ### Limitações Conhecidas - Precisão depende da atualização dos dados OSV/NVD. Execute `db update` regularmente - Matching por CPE (NVD) pode gerar falsos positivos para pacotes incomuns - Triagem com IA é sugestiva. Sempre valide findings críticos manualmente - Análise estática apenas. Não executa código nem analisa comportamento em runtime ## 许可证 MIT 许可证。详情请见 [LICENSE](LICENSE)。 ## 作者 由 [DevGreick](https://github.com/DevGreick) 构建
标签:AES-256, AI风险缓解, GNU通用公共许可证, Go, LLM评估, MIT许可, Node.js, Ollama, OpenVAS, PHP, Python, Ruby, Ruby工具, Rust, SARIF, StruQ, 人工智能分类, 依赖漏洞扫描, 图数据库, 敏感信息保护, 无后门, 本地大语言模型, 漏洞评估, 知识库, 离线安全扫描, 离线工具, 网络安全, 网络流量审计, 逆向工具, 隐私保护, 隐私安全, 零网络通信