
Bewertungsrahmen für KI-Penetrationstest-Agenten, der validierte Schwachstellenerkennung mithilfe von LLM-basiertem semantischem Abgleich, bipartitem Auflösen und kumulativer Analyse über reale Ziele misst.
KI-Pentesting-Agenten werden zunehmend als glaubwürdige offensive Sicherheitssysteme angesehen, aber aktuelle Benchmarks bieten weiterhin nur begrenzte Orientierung darüber, welche Systeme bei realen Zielen am besten abschneiden. Die meisten bestehenden Evaluierungen bewerten und optimieren vordefinierte Ziele wie Flag-Capture, Remote Code Execution, Exploit-Reproduktion oder Ähnlichkeit von Trajektorien in vereinfachten oder engen Umgebungen. Diese Benchmarks sind wertvoll, um begrenzte Fähigkeiten zu messen, erfassen jedoch nicht ausreichend die Komplexität, die offene Erkundung und die strategische Entscheidungsfindung, die für realistisches Pentesting erforderlich sind. Wir stellen ein praktisches Evaluierungs-Framework vor, das die Bewertung von der Aufgabenerfüllung hin zur validierten Schwachstellenerkennung verlagert und damit die Evaluierung an hinreichend komplexen Zielen über mehrere Angriffsflächen und Schwachstellenklassen hinweg ermöglicht. Das Framework kombiniert strukturierte Ground-Truth-Daten mit LLM-basiertem semantischem Matching zur Identifizierung von Schwachstellen, bipartitem Matching zur Bewertung von Befunden unter realistischer Mehrdeutigkeit, kontinuierlicher Pflege der Ground-Truth-Daten, wiederholter und kumulativer Evaluierung stochastischer Agenten, Effizienzmetriken sowie der Auswahl reduzierter Testmengen für nachhaltige Experimente. Diese Methodik erweitert den Stand der Technik, indem sie einen realistischeren und operativ aussagekräftigeren Vergleich von KI-Pentesting-Agenten ermöglicht. Zur Gewährleistung der Reproduzierbarkeit veröffentlichen wir zusätzlich expertenannotierte Ground-Truth-Daten und Code für das vorgeschlagene Evaluierungsprotokoll.

poetry install
Erfordert Python 3.11+ und installiertes Poetry.
# 1. Set your LLM API key
export OPENAI_API_KEY="..."
# 2. Run evaluation
ethibench evaluate ./my_experiment --dataset path/to/dataset.yaml
# 3. View results
cat ./my_experiment/evaluation_outputs/summary.md
ethibench evaluateFührt die vollständige Evaluierungspipeline für ein Experimentverzeichnis aus.
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: evaluate all experiments in a folder
ethibench evaluate --parent-dir final_experiments/ --dataset <dataset.yaml>
# Force re-evaluation (ignore cached artifacts)
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> --force
Argumente:
experiment_dir — (optional) Verzeichnis, das Ziel-Unterverzeichnisse enthält (oder run_*-Unterverzeichnisse, die jeweils Ziel-Unterverzeichnisse enthalten). Kann bei Verwendung von --parent-dir weggelassen werden.Optionen:
--dataset, -d — (erforderlich) Pfad zur Dataset-YAML-Datei.--gt-dir, -g — Ground-Truth-Verzeichnis. Standardmäßig gt/ neben der Dataset-YAML-Datei.--output-dir, -o — Ausgabeverzeichnis. Standardmäßig evaluation_outputs/ innerhalb des Experimentverzeichnisses. Im Batch-Modus ignoriert.--replicates, -n — Anzahl der LLM-Matching-Wiederholungen (Standard: 1).--force, -f — Alle Schritte erneut ausführen und zwischengespeicherte Artefakte ignorieren. Standardmäßig werden vorhandene Zwischenergebnisse (Raw-Matchings, bipartite Matchings, Metriken) wiederverwendet.--parent-dir, -p — Übergeordneter Ordner, der mehrere Experimentverzeichnisse zur Batch-Evaluierung enthält. Alle unmittelbaren Unterverzeichnisse werden als Experimente behandelt.Was es tut:
target_id), lädt jede findings.jsonl und weist subset_name aus der Dataset-YAML zu.metrics.json, sofern vorhanden, und aggregiert Kosten/Tokens/Dauer.evaluation_outputs/plots/.evaluation_outputs/summary.md.ethibench analyzeFührt Analysetools auf vorhandenen Evaluierungsausgaben aus.
ethibench analyze <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: analyze all experiments and produce aggregated results
ethibench analyze --parent-dir final_experiments/ --dataset <dataset.yaml>
Argumente:
experiment_dir — (optional) Zu analysierendes Experimentverzeichnis. Kann bei Verwendung von --parent-dir weggelassen werden.Optionen:
--dataset, -d — (erforderlich) Pfad zur Dataset-YAML-Datei.--gt-dir, -g — Ground-Truth-Verzeichnis. Standardmäßig gt/ neben der Dataset-YAML-Datei.--output-dir, -o — Verzeichnis der Evaluierungsausgaben. Standardmäßig evaluation_outputs/ innerhalb des Experimentverzeichnisses.--parent-dir, -p — Übergeordneter Ordner, der mehrere Experimentverzeichnisse zur Batch-Analyse enthält. Erzeugt eine Analyse pro Experiment sowie aggregierte Ergebnisse.Ausgaben pro Experiment (evaluation_outputs/analysis/):
duplicates.json — Befunde, die im Raw-Matching übereinstimmten, aber durch die bipartite Optimierung entfernt wurden.unmatched.json — Befunde ohne Ground-Truth-Übereinstimmung (False Positives).statistics.json — GT-Abdeckungsstatistiken, Verteilung der Befunde pro GT.Aggregierte Ausgaben (nur mit --parent-dir, in <parent-dir>/aggregated_analysis/):
all_duplicates.jsonl — alle doppelten Befunde über alle Experimente hinweg (JSONL, vollständige Befundobjekte mit experiment-Feld).all_false_positives.jsonl — alle nicht zugeordneten/False-Positive-Befunde über alle Experimente hinweg (JSONL-Format).gt_statistics_avg.json — gemittelte GT-Abdeckung pro Subset, plus Zusammenfassung der Abdeckung pro Experiment.ethibench compareVergleicht Evaluierungsergebnisse über mehrere Experimente hinweg und erzeugt nebeneinander angeordnete Diagramme sowie einen zusammenfassenden Bericht. Jedes Experiment muss bereits Evaluierungsausgaben besitzen (zuerst ethibench evaluate ausführen). Die Beschriftungen sind immer die Verzeichnisnamen.
# Explicit experiment directories
ethibench compare exp-gpt4o/ exp-claude/ --output-dir comparison/
# Auto-discover all experiments under a parent folder
ethibench compare --parent-dir all-experiments/ --output-dir comparison/
# Mix: explicit dirs + auto-discovery
ethibench compare exp-extra/ --parent-dir all-experiments/ --output-dir comparison/
Argumente:
experiment_dirs — (optional) Ein oder mehrere Experimentverzeichnisse, die explizit einbezogen werden sollen.Optionen:
--output-dir, -o — (erforderlich) Ausgabeverzeichnis für die Vergleichsergebnisse.--parent-dir, -p — Übergeordneter Ordner, aus dem Experimente automatisch erkannt werden. Jedes unmittelbare Unterverzeichnis, das einen Ordner evaluation_outputs/ enthält, wird alphabetisch sortiert einbezogen. Kann mit expliziten experiment_dirs kombiniert werden.