
Il repository completo di tutti i laboratori disponibili come parte del benchmark.
Un benchmark per valutare agenti AI su sfide di sicurezza web, generato dal motore TarantuLabs.
TarantuBench è una raccolta di 100 applicazioni web vulnerabili, ciascuna contenente una flag nascosta (TARANTU{...}). Il compito di un agente è trovare ed estrarre la flag interagendo con l'applicazione via HTTP — proprio come farebbe un pentester umano.
Le sfide spaziano da bypass di login tramite SQL injection a livello principiante a catene di attacco multi-step avanzate che richiedono lo sfruttamento fino a 5 vulnerabilità in sequenza — inclusi abusi di logica di business, XSS persistente per il furto di sessione, contraffazione JWT, SSRF e SQL injection su API interne.
Ogni lab è un'applicazione Node.js/Express autonoma con un database SQLite in memoria. Nessuna dipendenza esterna, nessun accesso di rete necessario — basta avviare il server e iniziare a sondare.
Tutte le sfide in questa release sono state generate utilizzando il motore di generazione di lab proprietario di TarantuLabs.
TarantuBench v1 rappresenta un benchmark maturo e scalabile supportato da una pipeline di generazione collaudata:
Requisiti del Node harness: Node.js 18+ e npm.
Requisiti del task Inspect AI: Python 3.11+, Docker e uv o un altro installer compatibile con PEP 517.
Il dataset di lab eseguibili è pubblicato su Hugging Face all'indirizzo
tarantulabs/TarantuBench.
Questo repository GitHub contiene l'harness di valutazione e la documentazione.
git clone https://github.com/Trivulzianus/TarantuBench.git
cd TarantuBench
cd eval && npm install && cd ..
# Download the dataset file from Hugging Face, or clone the dataset repo:
# git clone https://huggingface.co/datasets/tarantulabs/TarantuBench data
# Run your agent against all 100 labs
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--command "python my_agent.py --url {URL}" \
--timeout 300
# Generate scorecard
node eval/scorecard.js
Prima di eseguire una valutazione formale, verifica che il dataset locale o su Hugging Face abbia il conteggio di righe e lo schema previsti:
node eval/validate-dataset.js --dataset data/tarantubench-v1.jsonl --expected-count 100
node eval/validate-dataset.js --hf tarantulabs/TarantuBench --expected-count 100
L'harness avvia ogni lab, posiziona un proxy di logging trasparente davanti ad esso, ed esegue il comando del tuo agente (sostituendo {URL} con l'indirizzo target). Il tuo agente può essere scritto in qualsiasi linguaggio — deve solo effettuare richieste HTTP e inviare la flag tramite POST {URL}/submit-flag con corpo {"flag": "TARANTU{...}"}.
# Boot one lab in server mode — harness prints the URL, you connect your agent
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--labs corporate-portal-chain-xss-idor \
--mode server --timeout 300
Ogni riga in data/tarantubench-v1.jsonl rappresenta una sfida:
| Colonna | Tipo | Descrizione |
|---|---|---|
lab_id | string | Identificatore univoco |
title | string | Nome della sfida leggibile dall'uomo |
description | string | Breve descrizione dello scenario (mostrato all'agente) |
objectives | list[string] | Cosa viene detto all'agente di raggiungere |
hints | list[string] | Suggerimenti progressivi opzionali (per studi di ablazione) |
difficulty | string | Principiante, Intermedio o Avanzato |
category | string | Famiglia di vulnerabilità principale (es. SQL Injection, XSS) |
vuln_subtype | string | Tecnica specifica (es. sqli-union, xss-stored) |
chain_type | string o null | Identificatore della catena multi-step, o null per lab a singola vulnerabilità |
server_code | string | Codice sorgente Node.js/Express completo dell'applicazione vulnerabile |
dependencies | object | Dipendenze npm necessarie per eseguire il server |
| Difficoltà | Conteggio | Descrizione |
|---|---|---|
| Principiante | 35 | Singola vulnerabilità, sfruttamento diretto |
| Intermedio | 25 | Richiede enumerazione, bypass di filtri o logica multi-step |
| Avanzato | 40 | Catene multi-step, falle nella logica di business o sfruttamento profondo |
| Categoria | Conteggio |
|---|---|
| Catene Multi-Vulnerabilità | 34 |
| SQL Injection | 20 |
| IDOR (Riferimento Diretto ad Oggetto Non Sicuro) | 11 |
| Bypass Autenticazione/Autorizzazione | 10 |
| XSS (Cross-Site Scripting) | 10 |
| Logica di Business | 8 |
| Iniezione di Comandi | 5 |
| SSRF | 2 |
34 dei 100 lab richiedono il concatenamento di più vulnerabilità:
| Tipo di Catena | Conteggio | Passi |
|---|---|---|
| SSRF → SQL Injection | 8 | Bypass del controllo accessi tramite SSRF, poi estrazione flag tramite SQLi |
| SSRF → Blind SQLi | 5 | SSRF per raggiungere un endpoint interno, poi estrazione booleana cieca |
| XSS → SQL Injection | 7 | Rubare la sessione admin tramite XSS persistente, poi usare la ricerca riservata admin con SQLi |
| XSS → IDOR | 5 | Rubare la sessione admin tramite XSS persistente, poi accedere a dati nascosti tramite IDOR |
| JWT Forgery → Blind SQLi | 4 | Forzare un segreto JWT debole, forgiare un token elevato, estrarre la flag carattere per carattere |
| JWT Forgery → IDOR | 3 | Forzare JWT, forgiare un ruolo elevato, accedere a endpoint API riservati |
| Biz Logic → XSS → JWT → SSRF → SQLi | 1 | Catena a 5 passi attraverso abuso di referral, furto di sessione, contraffazione JWT, pivot SSRF e SQLi union |
| XSS → JWT → SSRF → SQLi | 1 | Catena a 4 passi attraverso furto di sessione, contraffazione JWT, SSRF e SQL injection |