Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
qlcoder — Agentic Framework zum Synthetisieren von CodeQL-Abfragen | Kitploit
Tools/GitHubGitHub/neuralprogram/qlcoder
Statische AnalyseSchwachstellenscannerSchwachstellenanalyseCode-AnalysePapers & ForschungKI-gestütztes Reverse Engineering
GitHubneuralprogram/qlcoder

qlcoder

Agentic Framework zum Synthetisieren von CodeQL-Abfragen

Repository anzeigen
287104vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

QLCoder

Agentisches Framework zur Synthese von CodeQL-Abfragen

Inhaltsverzeichnis

  • Überblick
  • Installation
    • Docker (Empfohlen)
    • Nativ (Linux)
  • Verwendung
  • Schnellstart
  • Entwicklungswerkzeuge
  • Beispiele
  • Paper-Umgebung
  • Beiträge
  • Team
  • Zitierung
  • Verbundene Projekte

Überblick

QLCoder Iterative Refinement

QLCoder ist ein Framework zur Verwendung von LLMs zur Synthese von End-to-End-CodeQL-Abfragen zur Schwachstellenerkennung. Ausgehend von den Metadaten einer vorhandenen CVE, einem LLM und einem Coding-Agenten synthetisiert QLCoder iterativ eine CodeQL-Abfrage zur Erkennung der vorhandenen CVE. Die Startabfrage ist eine CodeQL-Pfadabfragevorlage, die mit einem extrahierten AST des Diffs befüllt wird. Während der Synthese der Abfrage hat der Coding-Agent Zugriff auf Werkzeuge zur Schnittstelle mit einer RAG-Datenbank und dem CodeQL-Sprachserver. Anschließend kann die Abfrage für Multivarianten-Analyse, Regressionstests oder als Leitfaden zum Schreiben von CodeQL-Abfragen verwendet werden.

Installation

Docker (Empfohlen)

Schritt 1: CodeQL installieren

Hinweis – Im Paper wurde CodeQL Version 2.22.2 verwendet. Es kann jedoch jede Version (und Sprache) verwendet werden. QLCoder speichert die QL-Pakete der lokalen CodeQL-Version in der Vektordatenbank. Pfade werden in .env konfiguriert.

Laden Sie eine geeignete Version des CodeQL Action-Bundles von der CodeQL Action-Releases-Seite herunter.

  • Für die neueste Version: Besuchen Sie das neueste Release und laden Sie das passende Bundle für Ihr Betriebssystem herunter:

    • codeql-bundle-osx64.tar.gz für macOS
    • codeql-bundle-linux64.tar.gz für Linux
  • Für eine bestimmte Version (z. B. 2.22.2): Gehen Sie zur CodeQL Action-Releases-Seite, finden Sie das Release mit dem Tag codeql-bundle-v2.22.2 und laden Sie das passende Bundle für Ihre Plattform herunter.

Entpacken Sie nach ~/codeql (oder einen anderen Pfad – aktualisieren Sie CODEQL_HOME in .env entsprechend):

tar -xzf codeql-bundle-<platform>.tar.gz -C ~/

Schritt 2: CodeQL-LSP-MCP-Server installieren

Klonen Sie den CodeQL-LSP-MCP-Server und bauen Sie ihn.

git clone https://github.com/neuralprogram/codeql-lsp-mcp ~/codeql-lsp-mcp
cd ~/codeql-lsp-mcp
npm install
npm run build

Schritt 3: Dienste konfigurieren und starten

cp .env.example .env
echo "APP_UID=$(id -u)" >> .env
echo "APP_GID=$(id -g)" >> .env

Füllen Sie Ihren API-Schlüssel und die CodeQL-Pfade in .env aus:

ANTHROPIC_API_KEY=...

# QL-Paketpfade hängen von Ihrer CodeQL-Version ab.
# Finden Sie die Versionsnummern mit:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → für SECURITY_QLPACK_PATH verwenden
#   ls ~/codeql/qlpacks/codeql/java-all/        → für LIBRARY_QLPACK_PATH verwenden
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

Starten Sie dann die QLCoder-App und ChromaDB:

docker compose up -d

Schritt 4: CVE-Repositories abrufen

Die CVE muss in data/project_info.csv aufgeführt sein. Dadurch wird das Repository beim fehlerhaften Commit geklont und der Fix-Diff erzeugt.

docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2025-27818
# oder mehrere auf einmal:
docker compose run --rm app python3 scripts/get_cve_repos.py --cves CVE-2025-27818,CVE-2025-0851
# CVEs aus einer Datei verarbeiten (eine CVE-ID pro Zeile)
docker compose run --rm app python3 scripts/get_cve_repos.py --cve-file cves.txt
# alle CVEs verarbeiten
docker compose run --rm app python3 scripts/get_cve_repos.py --all
# vorhandene Diffs erneut erzeugen
docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2018-9159 --force

Schritt 5: CodeQL-Datenbanken erstellen

Datenbanken werden mit --build-mode=none erstellt – keine Build-Toolchain erforderlich.

# um die CodeQL-Datenbanken einer bestimmten CVE zu erstellen
docker compose run --rm app python3 scripts/build_codeql_dbs.py --cve-id CVE-2025-27818

Dadurch werden cves/CVE-2025-27818/CVE-2025-27818-vul und cves/CVE-2025-27818/CVE-2025-27818-fix erstellt.

# um die CodeQL-Datenbanken aller abgerufenen CVE-Repositories zu erstellen
docker compose run --rm app python3 scripts/build_codeql_dbs.py

Schritt 6: RAG-Datenbank befüllen

Führen Sie diese Skripte aus, um die Vektordatenbank zu befüllen. codeql_docs_fetcher.py und cwe_fetcher.py sind einmalige Einrichtungen; cves_fetcher.py sollte nach dem Hinzufügen neuer CVEs erneut ausgeführt werden.

docker compose run --rm app python3 scripts/codeql_docs_fetcher.py
docker compose run --rm app python3 scripts/cwe_fetcher.py
docker compose run --rm app python3 scripts/cves_fetcher.py

Nativ (Linux)

Schritt 1: CodeQL installieren

Hinweis – Im Paper wurde CodeQL Version 2.22.2 verwendet. Es kann jedoch jede Version (und Sprache) verwendet werden. QLCoder speichert die QL-Pakete der lokalen CodeQL-Version in der Vektordatenbank. Pfade werden in .env konfiguriert.

Laden Sie eine geeignete Version des CodeQL Action-Bundles von der CodeQL Action-Releases-Seite herunter.

  • Für die neueste Version: Besuchen Sie das neueste Release und laden Sie das passende Bundle für Ihr Betriebssystem herunter:

    • codeql-bundle-linux64.tar.gz für Linux
  • Für eine bestimmte Version (z. B. 2.22.2): Gehen Sie zur CodeQL Action-Releases-Seite, finden Sie das Release mit dem Tag codeql-bundle-v2.22.2 und laden Sie das passende Bundle für Ihre Plattform herunter.

Nach dem Herunterladen entpacken Sie das Archiv im Projektstammverzeichnis:

tar -xzf codeql-bundle-<platform>.tar.gz

Dadurch sollte ein Unterverzeichnis codeql/ mit der ausführbaren Datei codeql darin erstellt werden.

Fügen Sie den Pfad dieser ausführbaren Datei zu Ihrer PATH-Umgebungsvariable hinzu:

export PATH="$PWD/codeql:$PATH"

Schritt 2: CodeQL-LSP-MCP-Server installieren

Klonen Sie den CodeQL-LSP-MCP-Server und bauen Sie ihn.

git clone https://github.com/neuralprogram/codeql-lsp-mcp
cd codeql-lsp-mcp
npm install
npm run build

Schritt 3: Conda-Umgebung einrichten

conda env create -f environment.yml
conda activate qlcoder

Schritt 4: .env konfigurieren

cp .env.example .env

Füllen Sie Ihren API-Schlüssel und die CodeQL-Pfade in .env aus:

ANTHROPIC_API_KEY=...
CODEQL_HOME=~/codeql
CODEQL_LSP_MCP_HOME=~/codeql-lsp-mcp

# QL-Paketpfade hängen von Ihrer CodeQL-Version ab.
# Finden Sie die Versionsnummern mit:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → für SECURITY_QLPACK_PATH verwenden
#   ls ~/codeql/qlpacks/codeql/java-all/        → für LIBRARY_QLPACK_PATH verwenden
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

Schritt 5: CVE-Repositories abrufen

Tool herunterladen