
Pipeline automatizado de análise de segurança que executa consultas CodeQL em repositórios GitHub e usa LLMs para classificar e filtrar vulnerabilidades verdadeiras de falsos positivos.
Para uma visão geral detalhada da pesquisa e motivação por trás do Vulnhalla, consulte o artigo oficial no blog de Pesquisa de Ameaças da CyberArk:
Vulnhalla: Selecionando as Vulnerabilidades Reais do Palheiro do CodeQL
Antes de começar, certifique-se de ter:
Python 3.10 – 3.13 (Python 3.11 ou 3.12 recomendado)
CodeQL CLI
codeql está no seu PATH, ou você definirá o caminho no .env (veja Passo 2)(Opcional) Token da API do GitHub
Chave da API do LLM
Toda a configuração está em um único arquivo: .env
git clone https://github.com/cyberark/Vulnhalla
cd Vulnhalla
.env.example para .env:cp .env.example .env # macOS / Linux
Copy-Item .env.example .env # Windows (PowerShell)
.env e preencha seus valores:Exemplo para OpenAI:
CODEQL_PATH=codeql
GITHUB_TOKEN=ghp_your_token_here
PROVIDER=openai
MODEL=gpt-4o
OPENAI_API_KEY=your-api-key-here
LLM_TEMPERATURE=0.2
LLM_TOP_P=0.2
# Opcional: Configuração de Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
LOG_FILE= # Opcional: caminho para arquivo de log (ex: logs/vulnhalla.log)
LOG_FORMAT=default # default ou json
# LOG_VERBOSE_CONSOLE=false # Se true, WARNING/ERROR usam formato completo (timestamp - logger - level - message)
📖 Para referência completa de configuração: Veja Referência de Configuração abaixo para todos os provedores suportados (OpenAI, Azure, Gemini, Bedrock), variáveis obrigatórias/opcionais e exemplos detalhados.
Windows (PowerShell):
# Listar versões Python disponíveis
py -0p
# Escolha qualquer Python suportado: 3.10 / 3.11 / 3.12 / 3.13
py -3.12 -m pip install --user -U pipx
py -3.12 -m pipx ensurepath
# Feche e reabra o terminal (obrigatório)
pipx install poetry
poetry --version
macOS / Linux:
# Verifique sua versão do Python
python3 --version
# Use qualquer Python suportado: 3.10 / 3.11 / 3.12 / 3.13
python3 -m pip install --user -U pipx
python3 -m pipx ensurepath
# Reinicie o terminal (obrigatório)
pipx install poetry
poetry --version
Windows (PowerShell):
# Escolha uma versão suportada que você tenha: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Force o Poetry a usar uma versão Python suportada se você tiver várias versões instaladas
poetry install
poetry run vulnhalla-setup
macOS / Linux:
# Escolha uma versão suportada que você tenha: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Force o Poetry a usar uma versão Python suportada se você tiver várias versões instaladas
poetry install
poetry run vulnhalla-setup
# Analisar um repositório específico, por exemplo:
poetry run vulnhalla redis/redis
# Baixar novamente mesmo se o database já existir
poetry run vulnhalla redis/redis --force
# Exibir ajuda
poetry run vulnhalla --help
Isso irá automaticamente:
output/results/Se você já tem um database CodeQL em disco (ex: criado manualmente ou de uma execução anterior), pode pular a etapa de busca no GitHub usando a flag --local / -l:
Windows (PowerShell):
poetry run vulnhalla --local C:\caminho\para\meu-codeql-db
macOS / Linux:
poetry run vulnhalla --local /caminho/para/meu-codeql-db
Nota: A flag
--localespera um diretório de database do CodeQL, não uma pasta de código fonte. Você pode verificar se a pasta contém um arquivocodeql-database.yml.
# Abrir interface para visualizar resultados existentes (sem executar análise)
poetry run vulnhalla-ui
# Validar configuração: CodeQL, LLM, Logging (sem executar análise)
poetry run vulnhalla-validate
# Listar repositórios analisados e suas contagens de problemas
poetry run vulnhalla-list
# Executar pipeline de exemplo (analisa videolan/vlc e redis/redis)
poetry run vulnhalla-example
O Vulnhalla inclui uma Interface do Usuário completa para navegar e explorar os resultados da análise.
poetry run vulnhalla-ui
A UI exibe uma área superior de dois painéis com uma barra de controles na parte inferior:
Área Superior (lado a lado, redimensionável):
Painel Esquerdo (Lista de Problemas):
Painel Direito (Detalhes):
Barra de Controles Inferior:
↑/↓ - Navegar na lista de problemas (linha por linha)Tab / Shift+Tab - Alternar foco entre painéisEnter - Mostrar detalhes do problema selecionado/ - Focar caixa de busca (no painel esquerdo)Esc - Limpar busca e retornar foco para tabela de problemasr - Recarregar resultados do disco[ / ] - Redimensionar painéis esquerdo/direito (ajustar posição da divisória)q - Sair da aplicação