
Framework di valutazione per agenti di penetration testing AI che misura la scoperta validata di vulnerabilità utilizzando il matching semantico basato su LLM, la risoluzione bipartita e l'analisi cumulativa su target del mondo reale.
Gli agenti di pentesting basati su intelligenza artificiale sono sempre più credibili come sistemi di sicurezza offensiva, ma i benchmark attuali forniscono ancora indicazioni limitate su quali sistemi otterranno i migliori risultati su target del mondo reale. La maggior parte delle valutazioni esistenti misura e ottimizza obiettivi predefiniti come il flag capture, l'esecuzione remota di codice, la riproduzione di exploit o la similarità delle traiettorie, in ambienti semplificati o limitati. Questi benchmark sono preziosi per misurare capacità circoscritte, ma non catturano adeguatamente la complessità, l'esplorazione aperta e il processo decisionale strategico richiesti dal pentesting realistico. Presentiamo un framework di valutazione pratico che sposta la valutazione dal completamento del compito alla scoperta validata di vulnerabilità, consentendo la valutazione su target sufficientemente complessi che coprono più superfici d'attacco e classi di vulnerabilità. Il framework combina ground-truth strutturato con semantic matching basato su LLM per identificare le vulnerabilità, risoluzione bipartita per valutare i finding in condizioni di ambiguità realistica, manutenzione continua del ground-truth, valutazione ripetuta e cumulativa di agenti stocastici, metriche di efficienza e selezione di suite ridotte per una sperimentazione sostenibile. Questa metodologia fa avanzare lo stato dell'arte consentendo un confronto più realistico e operativamente informativo degli agenti di pentesting basati su IA. Per garantire la riproducibilità, rilasciamo inoltre ground-truth annotati da esperti e il codice per il protocollo di valutazione proposto.
Pipeline di valutazione per strumenti di security testing. Confronta i finding degli strumenti con i dataset ground truth utilizzando il matching basato su LLM e produce metriche di precision, recall, F1 e F0.5.
poetry install
Richiede Python 3.11+ e Poetry installati.
# 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 evaluateEsegue l'intera pipeline di valutazione su una directory di esperimento.
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
Argomenti:
experiment_dir — (opzionale) Directory contenente le sottodirectory target (o sottodirectory run_* ciascuna con le proprie sottodirectory target). Può essere omessa quando si usa --parent-dir.Opzioni:
--dataset, -d — (obbligatorio) Percorso del file YAML del dataset.--gt-dir, -g — Directory del ground truth. Il valore predefinito è gt/ accanto al file YAML del dataset.--output-dir, -o — Directory di output. Il valore predefinito è evaluation_outputs/ all'interno della directory dell'esperimento. Ignorata in modalità batch.--replicates, -n — Numero di repliche del matching LLM (predefinito: 1).--force, -f — Riesegue tutti i passaggi, ignorando gli artefatti in cache. Per impostazione predefinita, i risultati intermedi esistenti (raw matchings, bipartite matchings, metriche) vengono riutilizzati.--parent-dir, -p — Cartella padre contenente più directory di esperimento da valutare in batch. Tutte le sottodirectory immediate vengono trattate come esperimenti.Cosa fa:
target_id), carica ogni findings.jsonl, assegna subset_name dal dataset YAML.metrics.json per target se presente, aggrega costo/token/durata.evaluation_outputs/plots/.evaluation_outputs/summary.md.ethibench analyzeEsegue gli strumenti di analisi sugli output di valutazione esistenti.
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>
Argomenti:
experiment_dir — (opzionale) Directory dell'esperimento da analizzare. Può essere omessa quando si usa --parent-dir.Opzioni:
--dataset, -d — (obbligatorio) Percorso del file YAML del dataset.--gt-dir, -g — Directory del ground truth. Il valore predefinito è gt/ accanto al file YAML del dataset.--output-dir, -o — Directory degli output di valutazione. Il valore predefinito è evaluation_outputs/ all'interno della directory dell'esperimento.--parent-dir, -p — Cartella padre contenente più directory di esperimento da analizzare in batch. Produce l'analisi per esperimento più i risultati aggregati.Output per esperimento (evaluation_outputs/analysis/):
duplicates.json — finding abbinati nel raw matching ma rimossi dall'ottimizzazione bipartita.unmatched.json — finding senza corrispondenza ground truth (falsi positivi).statistics.json — statistiche di copertura GT, distribuzione dei finding per GT.Output aggregati (solo con --parent-dir, in <parent-dir>/aggregated_analysis/):
all_duplicates.jsonl — tutti i finding duplicati in tutti gli esperimenti (JSONL, oggetti finding completi con campo experiment).all_false_positives.jsonl — tutti i finding non abbinati/falsi positivi in tutti gli esperimenti (formato JSONL).gt_statistics_avg.json — copertura GT media per subset, più riepilogo della copertura per esperimento.ethibench compareConfronta i risultati della valutazione tra più esperimenti, producendo grafici affiancati e un report di riepilogo. Ogni esperimento deve avere già gli output di valutazione (esegui prima ethibench evaluate). Le etichette sono sempre i nomi delle directory.
# 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/
Argomenti:
experiment_dirs — (opzionale) Una o più directory di esperimento da includere esplicitamente.Opzioni:
--output-dir, -o — (obbligatorio) Directory di output per i risultati del confronto.--parent-dir, -p — Cartella padre da cui individuare automaticamente gli esperimenti. Viene inclusa qualsiasi sottodirectory immediata contenente una cartella evaluation_outputs/, in ordine alfabetico. Può essere combinata con experiment_dirs espliciti.Output (in --output-dir):
comparison.json — dati grezzi di confronto per tutti gli esperimenti.plots/ — grafici PNG affiancati.comparison.md — riepilogo in Markdown.pairwise_comparison.md — confronto statistico A/B a coppie (top 4 esperimenti per F1).pairwise_comparison.tex — versione LaTeX della tabella a coppie.cumulative-analysis/ — (se esistono dati cumulativi) analisi delta che confronta la F1 media con quella cumulativa, più i grafici di confronto cumulativi.findings.jsonl)