
Artefatti di ricerca per un agente LLM basato su MCP che risolve autonomamente le challenge CTF, inclusi dati di ablazione, script di analisi e uno stack MCP a sei server.
Artefatti per "STRIATUM-CTF: A Protocol-Driven Agentic Framework for Autonomous CTF Solving" (IEEE CARS 2026), Hugglestone, Chacko, Stoller, Schmidt e Liu, Florida State University.
Best Paper Award (1° posto), IEEE CARS 2026. Preprint: arXiv:2603.22577.
Questo repository supporta la replica del protocollo e dell'analisi. Non è un kit di exploit pronto all'uso: secondo la dichiarazione etica del paper, non vengono rilasciati payload di exploit né corpora di template di attacco. Ciò che questo significa concretamente è spiegato nella sezione Ambito ed esclusioni qui sotto.
| Directory | Contenuti |
|---|---|
data/ | La tabella degli esiti delle 180 esecuzioni (ablation_results.csv + sorgente .xlsx), la matrice per singola sfida (Tabella III), la progressione di risoluzione della CTF live (Fig. 2), le figure renderizzate e un codebook.md. |
analysis/ | Script che riproducono ogni statistica del paper a partire da data/. |
code/ | Lo stack MCP a sei server: due server interni, un installer che fissa i tre server di terze parti ai commit dello studio e la configurazione dell'host. |
challenges/ | Manifest di provenienza con hash di verifica, uno script di fetch per le sfide ridistribuibili, schede di specifica per singola sfida e le due sorgenti di sfide che possiamo ridistribuire. |
documentation_conditions/ | Le quattro condizioni di ablazione: il corpus Minimal completo, i manifest per condizione di file/righe/token (che riproducono la Tabella II) e un indice di template con soli titoli. |
cd analysis
pip install -r requirements.txt
python3 day1_analysis.py # Tables II & III, Wilson CIs, chi-square, subset analysis, durations
python3 day1_drill.py # provenance drill-down (public vs non-public)
python3 duration_and_gee.py # Kruskal-Wallis (p=0.77) and the GEE model (Wald chi2(3)=3.77, p=0.29)
python3 count_tokens.py # Table II line counts (exact) and token counts
Tutte le Tabelle II e III, gli intervalli di Wilson al 95%, i test omnibus, l'analisi del sottoinsieme non saturo, il modello GEE e le cifre relative alla durata sono riprodotti esattamente da data/. I conteggi per riga della Tabella II sono riprodotti esattamente; i conteggi per token dipendono dal tokenizer e il tokenizer esatto usato nel paper non è stato registrato (vedere analysis/count_tokens.py e i manifest per condizione).
Due ragioni indipendenti limitano ciò che viene distribuito. Nessuna delle due è una svista.
Etica (paper §"Ethical Considerations"): nessun payload di exploit o corpus di template di attacco. Pertanto sono esclusi:
workspaces/ (exploit funzionanti, script dei solver e resoconti delle soluzioni) — gli esiti per singola esecuzione sono invece rilasciati come data/ablation_results.csv;AUTONOMOUS_SOLVER_README.md, TEMPLATE_COVERAGE.md), che sono i template di attacco citati nella dichiarazione etica. Questi sono caratterizzati — elenchi di file, conteggi di righe e token e un indice delle sole intestazioni in documentation_conditions/ — così la variabile indipendente dell'ablation è documentata, ma i payload non sono pubblicati;challenges/manifest.csv).Conseguenza, detta chiaramente: poiché i corpus Templates/Baseline costituiscono la manipolazione nello studio a 180 esecuzioni, tale ablation non è completamente riproducibile da questo repository — lo è solo il protocollo. Il protocollo completo del solver è disponibile ai ricercatori per uso difensivo su richiesta all'autore corrispondente.
Licenze: i binari delle challenge non sono replicati laddove non abbiamo il diritto di ridistribuirli — le challenge picoCTF (CMU, tutti i diritti riservati) e i tutorial angr_ctf (GPL-3.0) sono scaricati dall'upstream tramite challenges/fetch_challenges.sh; le librerie di sistema (libc, ld-linux) non vengono mai distribuite. Vedere THIRD_PARTY_LICENSES.md.
Vedere CITATION.cff. Paper: IEEE Cyber Awareness and Research Symposium (CARS) 2026.
Codice e documentazione degli autori: MIT (LICENSE). I componenti di terze parti mantengono le proprie licenze; vedere NOTICE e THIRD_PARTY_LICENSES.md.