
Pipeline automatizado de análisis de seguridad que ejecuta consultas CodeQL en repositorios de GitHub y utiliza LLMs para clasificar y filtrar vulnerabilidades reales de los falsos positivos.
Para obtener una visión detallada de la investigación y la motivación detrás de Vulnhalla, consulta la entrada oficial del blog de CyberArk Threat Research:
Vulnhalla: Cómo extraer las verdaderas vulnerabilidades del pajar de CodeQL
Antes de comenzar, asegúrate de tener:
Python 3.10 – 3.13 (se recomienda Python 3.11 o 3.12)
CodeQL CLI
codeql esté en tu PATH, o establece la ruta en .env (ver Paso 2)(Opcional) Token de API de GitHub
Clave de API del LLM
Toda la configuración está en un único archivo: .env
git clone https://github.com/cyberark/Vulnhalla
cd Vulnhalla
.env.example a .env:cp .env.example .env # macOS / Linux
Copy-Item .env.example .env # Windows (PowerShell)
.env y completa tus valores:Ejemplo 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
# Optional: Logging Configuration
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
LOG_FILE= # Optional: path to log file (e.g., logs/vulnhalla.log)
LOG_FORMAT=default # default or json
# LOG_VERBOSE_CONSOLE=false # If true, WARNING/ERROR use full format (timestamp - logger - level - message)
📖 Para la referencia de configuración completa: consulta Referencia de Configuración más abajo para conocer todos los proveedores compatibles (OpenAI, Azure, Gemini, Bedrock), las variables requeridas/opcionales y ejemplos detallados.
Windows (PowerShell):
# List available Python versions
py -0p
# Pick any supported Python: 3.10 / 3.11 / 3.12 / 3.13
py -3.12 -m pip install --user -U pipx
py -3.12 -m pipx ensurepath
# Close and reopen terminal (required)
pipx install poetry
poetry --version
macOS / Linux:
# Check your Python version
python3 --version
# Use any supported Python: 3.10 / 3.11 / 3.12 / 3.13
python3 -m pip install --user -U pipx
python3 -m pipx ensurepath
# Restart terminal (required)
pipx install poetry
poetry --version
Windows (PowerShell):
# Pick one supported version you have: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Force Poetry to use a supported Python version if you have multiple versions installed
poetry install
poetry run vulnhalla-setup
macOS / Linux:
# Pick one supported version you have: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Force Poetry to use a supported Python version if you have multiple versions installed
poetry install
poetry run vulnhalla-setup
# Analyze a specific repository, for example:
poetry run vulnhalla redis/redis
# Re-download even if database already exists
poetry run vulnhalla redis/redis --force
# Show help
poetry run vulnhalla --help
Esto hará automáticamente:
output/results/Si ya tienes una base de datos de CodeQL en disco (por ejemplo, creada manualmente o de una ejecución anterior), puedes omitir el paso de obtención de GitHub usando la bandera --local / -l:
Windows (PowerShell):
poetry run vulnhalla --local C:\path\to\my-codeql-db
macOS / Linux:
poetry run vulnhalla --local /path/to/my-codeql-db
Nota: La bandera
--localespera un directorio de base de datos de CodeQL, no una carpeta de código fuente. Puedes verificarlo comprobando que la carpeta contenga un archivocodeql-database.yml.
# Open UI to view existing results (without running analysis)
poetry run vulnhalla-ui
# Validate configuration: CodeQL, LLM, Logging (without running analysis)
poetry run vulnhalla-validate
# List analyzed repositories and their issue counts
poetry run vulnhalla-list
# Run example pipeline (analyzes videolan/vlc and redis/redis)
poetry run vulnhalla-example
Vulnhalla incluye una Interfaz de Usuario completa para navegar y explorar los resultados de los análisis.
poetry run vulnhalla-ui
La UI muestra un área superior de dos paneles con una barra de controles en la parte inferior:
Área Superior (lado a lado, redimensionable):
Panel Izquierdo (Lista de Problemas):
Panel Derecho (Detalles):
Barra de Controles Inferior: