
Codice, dati derivati e risultati per: Evaluating Baseline Detectors of Hijacked LLM Agents Under Rare Attacks and Distribution Shift
Codice, dati derivati, file dei risultati e ogni chiamata al monitor per il paper di Mahmoud Abbasi (Università di Salamanca), Juan M. Núñez V. (AIR Institute, Salamanca) e Amin Shahraki (Università di Oslo).
Il paper valuta i rilevatori che segnalano agenti LLM dirottati a partire dalle loro tracce di chiamate agli strumenti: regressione logistica su feature comportamentali e combinate (LR-B, LR-C), un modello sequenziale GRU, un transformer su embedding di passo congelati (SE), un riferimento di contenuto TF-IDF e il monitor di azioni AlignmentCheck rilasciato con due backbone (MON-L, Llama 3.3 70B w4a16; MON-A, Claude Sonnet 5.5). La valutazione viene eseguita a prevalenza di attacco controllata, con copertura degli strumenti graduata e sotto shift di mondo, task, dominio e cross-benchmark su AgentDrift e AgentDojo.
EXTENDED_REPORT.pdf è il report esteso citato dal paper. È la versione lunga di questo lavoro (38 pagine, testo principale
e supplemento), scritta prima che il terzo autore si unisse, e presenta ogni analisi riassunta nel paper, ciascun
piano di analisi con le sue deviazioni e tutte le tabelle supplementari.
| Percorso | Contenuto |
|---|---|
EXTENDED_REPORT.pdf | Il report esteso (vedi sopra) |
featurise.py, evalkit.py, gru_detector.py, baseline_drift.py | Moduli condivisi: feature, metriche e bootstrap, la GRU, i riferimenti Markov e Isolation Forest |
agentdojo_extract.py | Estrae le tracce AgentDojo con accoppiamento posizionale di chiamate agli strumenti e osservazioni |
agentdojo_traces.jsonl, agentdojo_failed.jsonl | Tracce AgentDojo estratte (popolazione P0, 392 benigne e 2.294 compromesse) e i 4.987 attacchi non riusciti |
rerun_r1r3.py, ablation.py, world_disjoint_r1.py, r4_control.py, gru_ladder.py, gru_r3_diagnostic.py, pre_ablation_audit.py | Script sperimentali della prima versione, rieseguiti sull'estrazione corretta, con i relativi file di risultati (*.json) |
R4_CONTROL.md, PRE_ABLATION_DESIGN.md, GRU_PREREGISTRATION.md, REVISION_ANALYSIS_PLAN.md | I quattro piani di analisi interni dei primi studi |
SENCODER_PREREGISTRATION.md, revision/sencoder_run/SENCODER_PREREGISTRATION.amendment*.md, SENCODER_RESULTS.md | Piano, emendamenti e risultati dello studio SE |
MONITOR_PREREGISTRATION.md, revision/monitor_run/MONITOR_PREREGISTRATION.*.md | Piano dello studio sul monitor, la sua prima versione e gli emendamenti da 1 a 4 |
revision/ | Costruttori delle cache di predizione, i flussi di analisi, i relativi file di risultati e riepiloghi, DEVIATIONS.md, RESULTS_SUMMARY.md, PLAN_MANIFEST.txt (un registro con marca temporale e SHA-256 di ogni piano e risultato) e la guida alla riproducibilità REPRODUCIBILITY.md |
revision/sencoder_*.py, revision/sencoder_results.json, revision/sencoder_summary.md, revision/sencoder_run/ | SE: script di embedding, addestramento e analisi, risultati, log del cluster e manifest |
revision/monitor_render.py, monitor_score_vllm.py, monitor_score_api.py, monitor_detector.py, monitor_tables.py | Studio sul monitor: una chiamata AlignmentCheck per ogni passo dell'agente, scoring con vLLM (MON-L) e con l'interfaccia batch del provider (MON-A), l'analisi congelata e le sue tabelle |
revision/monitor_results.json, revision/monitor_summary.md | Risultati dell'analisi congelata del monitor |
revision/monitor_run/ | Ogni chiamata al monitor e ogni output grezzo del monitor con il relativo punteggio (vedi revision/monitor_run/README.md) |
revision/cache/ | File di validazione e riepilogo delle cache di predizione. Le predizioni e gli embedding memorizzati nella cache (circa 800 MB) non sono inclusi e vengono ricostruiti dagli script |
paper/ | Script che generano ogni tabella dai file di risultati, con i relativi output: tables/ (primi studi), tables_sencoder/ (aggiunge SE) e tables_monitor/ (aggiunge il monitor; queste sono le tabelle del paper e del report esteso) |
paper_v06/make_figures_v06.py, paper_v06/fig_v06_* | Le figure del paper |
MANUSCRIPT_SOURCE.*.md, SUPPLEMENT_SOURCE.*.md | Sorgenti del report esteso, in cui paper/build_sencoder.py e paper/build_monitor.py inseriscono le tabelle generate |
archive_v0.3/ | Risultati e la precedente estrazione AgentDojo della prima versione, conservati per i confronti nel report esteso |
tests/ | Test unitario dell'estrazione AgentDojo |
THIRD_PARTY/ | Licenze di AgentDojo e dello scanner AlignmentCheck incluso (LlamaFirewall) |
I risultati del rilevatore sono stati calcolati con CPython 3.10.4 su una CPU. SE è stato eseguito su un nodo di un cluster Slurm, e MON-L
su una NVIDIA H100 80GB HBM3 con vLLM 0.29.0 (versioni in revision/monitor_run/mon_l/env.json).
pip install -r revision/requirements-lock.txt --extra-index-url https://download.pytorch.org/whl/cpu
Gli script che leggono i benchmark originali si aspettano due variabili d'ambiente che puntano a cloni locali.
git clone https://github.com/Asif-0209/AgentDrift && git -C AgentDrift checkout 014a514f
git clone https://github.com/ethz-spylab/agentdojo && git -C agentdojo checkout 089ed468
export AGENTDRIFT=$PWD/AgentDrift
export AGENTDOJO=$PWD/agentdojo
Le tabelle e le figure vengono rigenerate dai file di risultato presenti in questo repository. build_monitor.py importa il
modulo di analisi del monitor, che legge AGENTDRIFT al momento dell'importazione, quindi tale variabile deve essere impostata.
cd paper
python gen_tables_v04.py # paper/tables/
python build_sencoder.py # paper/tables_sencoder/
python build_monitor.py # paper/tables_monitor/, the tables of the paper
cd ../paper_v06
python make_figures_v06.py # paper_v06/fig_v06_*.pdf and .png
I due script di build assemblano anche il LaTeX del report esteso da MANUSCRIPT_SOURCE.*.md e
SUPPLEMENT_SOURCE.*.md.
La riesecuzione degli esperimenti dai benchmark segue revision/REPRODUCIBILITY.md per i detector, il piano SE
con revision/sencoder_run/ per SE, e il piano del monitor con revision/monitor_run/README.md per il monitor.
<repo>,
$AGENTDRIFT, $AGENTDOJO o <local>. Nessun risultato numerico è stato modificato. I valori SHA-256 in PLAN_MANIFEST.txt e
repro_checks.json si riferiscono ai file così come erano sulla macchina di analisi, quindi non corrispondono ai file in
cui è stato sostituito un percorso. Anche revision/offline_driver.sh è stato reso portabile. Nessuno script Python è stato modificato, quindi
alcuni script mantengono un percorso predefinito locale, che le variabili d'ambiente sovrascrivono.*.jsonl.gz) con contenuto invariato,
quindi i valori SHA-256 nei manifest delle chiamate valgono per i file decompressi.