
Pipeline d'analyse de sécurité automatisé qui exécute des requêtes CodeQL sur les dépôts GitHub et utilise des LLM pour classer et filtrer les vraies vulnérabilités des faux positifs.
Pour un aperçu détaillé de la recherche et de la motivation derrière Vulnhalla, consultez l'article de blog officiel de CyberArk Threat Research :
Vulnhalla : Extraire les vraies vulnérabilités de la botte de foin CodeQL
Avant de commencer, assurez-vous de disposer de :
Python 3.10 – 3.13 (Python 3.11 ou 3.12 recommandé)
CodeQL CLI
codeql est dans votre PATH, ou vous définirez le chemin dans .env (voir l'étape 2)(Facultatif) Jeton API GitHub
Clé API LLM
Toute la configuration se trouve dans un seul fichier : .env
git clone https://github.com/cyberark/Vulnhalla
cd Vulnhalla
.env.example vers .env :cp .env.example .env # macOS / Linux
Copy-Item .env.example .env # Windows (PowerShell)
.env et renseignez vos valeurs :Exemple pour 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)
📖 Pour la référence de configuration complète : Consultez la Référence de configuration ci-dessous pour tous les fournisseurs pris en charge (OpenAI, Azure, Gemini, Bedrock), les variables requises/facultatives et des exemples détaillés.
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
Cela va automatiquement :
output/results/Si vous disposez déjà d'une base de données CodeQL sur disque (par exemple, créée manuellement ou lors d'une exécution précédente), vous pouvez ignorer l'étape de récupération GitHub à l'aide de l'option --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
Remarque : L'option
--localattend un répertoire de base de données CodeQL, pas un dossier de code source. Vous pouvez vérifier en vous assurant que le dossier contient un fichiercodeql-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 comprend une interface utilisateur complète pour parcourir et explorer les résultats d'analyse.
poetry run vulnhalla-ui
L'interface affiche une zone supérieure à deux panneaux avec une barre de contrôles en bas :
Zone supérieure (côte à côte, redimensionnable) :
Panneau gauche (liste des problèmes) :
Panneau droit (détails) :
Barre de contrôles inférieure :