
Automatisierte Sicherheitsanalyse-Pipeline, die CodeQL-Abfragen auf GitHub-Repositories ausführt und LLMs verwendet, um echte Schwachstellen von False Positives zu klassifizieren und zu filtern.
Eine detaillierte Übersicht über die Forschung und Motivation hinter Vulnhalla finden Sie im offiziellen CyberArk Threat Research Blog-Beitrag:
Vulnhalla: Picking the True Vulnerabilities from the CodeQL Haystack
Stellen Sie vor dem Start sicher, dass Sie Folgendes haben:
Python 3.10 – 3.13 (Python 3.11 oder 3.12 empfohlen)
CodeQL CLI
codeql in Ihrem PATH ist, oder Sie setzen den Pfad in .env (siehe Schritt 2)(Optional) GitHub-API-Token
LLM-API-Schlüssel
Die gesamte Konfiguration erfolgt in einer einzigen Datei: .env
git clone https://github.com/cyberark/Vulnhalla
cd Vulnhalla
.env.example nach .env:cp .env.example .env # macOS / Linux
Copy-Item .env.example .env # Windows (PowerShell)
.env und fügen Sie Ihre Werte ein:Beispiel für 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-Konfiguration
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
LOG_FILE= # Optional: Pfad zur Logdatei (z. B. logs/vulnhalla.log)
LOG_FORMAT=default # default oder json
# LOG_VERBOSE_CONSOLE=false # Bei true: WARNING/ERROR im vollständigen Format (Timestamp - Logger - Level - Message)
📖 Für die vollständige Konfigurationsreferenz: Siehe Konfigurationsreferenz unten für alle unterstützten Anbieter (OpenAI, Azure, Gemini, Bedrock), erforderliche/optionale Variablen und detaillierte Beispiele.
Windows (PowerShell):
# Verfügbare Python-Versionen auflisten
py -0p
# Beliebige unterstützte Python-Version auswählen: 3.10 / 3.11 / 3.12 / 3.13
py -3.12 -m pip install --user -U pipx
py -3.12 -m pipx ensurepath
# Terminal schließen und erneut öffnen (erforderlich)
pipx install poetry
poetry --version
macOS / Linux:
# Python-Version prüfen
python3 --version
# Beliebige unterstützte Python-Version verwenden: 3.10 / 3.11 / 3.12 / 3.13
python3 -m pip install --user -U pipx
python3 -m pipx ensurepath
# Terminal neu starten (erforderlich)
pipx install poetry
poetry --version
Windows (PowerShell):
# Eine unterstützte Version auswählen, die Sie installiert haben: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Poetry zwingen, eine unterstützte Python-Version zu verwenden, wenn mehrere Versionen installiert sind
poetry install
poetry run vulnhalla-setup
macOS / Linux:
# Eine unterstützte Version auswählen, die Sie installiert haben: 3.10 / 3.11 / 3.12 / 3.13
poetry env use 3.12 # Poetry zwingen, eine unterstützte Python-Version zu verwenden, wenn mehrere Versionen installiert sind
poetry install
poetry run vulnhalla-setup
# Ein bestimmtes Repository analysieren, z. B.:
poetry run vulnhalla redis/redis
# Erneut herunterladen, auch wenn die Datenbank bereits existiert
poetry run vulnhalla redis/redis --force
# Hilfe anzeigen
poetry run vulnhalla --help
Dies wird automatisch:
output/results/ speichernWenn Sie bereits eine CodeQL-Datenbank auf der Festplatte haben (z. B. manuell erstellt oder von einem vorherigen Lauf), können Sie den GitHub-Abruf-Schritt mit dem --local / -l-Flag überspringen:
Windows (PowerShell):
poetry run vulnhalla --local C:\path\to\my-codeql-db
macOS / Linux:
poetry run vulnhalla --local /path/to/my-codeql-db
Hinweis: Das
--local-Flag erwartet ein CodeQL-Datenbank-Verzeichnis, keinen Quellcode-Ordner. Sie können überprüfen, ob der Ordner einecodeql-database.yml-Datei enthält.
# UI öffnen, um vorhandene Ergebnisse anzuzeigen (ohne Analyse auszuführen)
poetry run vulnhalla-ui
# Konfiguration validieren: CodeQL, LLM, Logging (ohne Analyse)
poetry run vulnhalla-validate
# Analysierte Repositorys und deren Problemzahlen auflisten
poetry run vulnhalla-list
# Beispiel-Pipeline ausführen (analysiert videolan/vlc und redis/redis)
poetry run vulnhalla-example
Vulnhalla enthält eine voll ausgestattete Benutzeroberfläche zum Durchsuchen und Erkunden der Analyseergebnisse.
poetry run vulnhalla-ui
Die UI zeigt einen zweigeteilten oberen Bereich mit einer Steuerungsleiste unten an:
Oberer Bereich (nebeneinander, in der Größe veränderbar):
Linkes Panel (Problemliste):
Rechtes Panel (Details):
Untere Steuerungsleiste: