Agent Sandboxing
Il sandboxing degli agenti esegue i comandi e il codice generato da un agente IA in un ambiente isolato che limita l'accesso a file, rete, credenziali e risorse di calcolo.
Il sandboxing degli agenti consiste nell'eseguire le azioni di un agente di IA, come comandi shell, codice generato, modifiche ai file e navigazione web, all'interno di un ambiente isolato che limita i file, le reti, le credenziali e le risorse di calcolo a cui tali azioni possono accedere. Un agente basato su un modello linguistico di grandi dimensioni (LLM) sceglie ogni comando in base al testo che ha letto, che può essere errato o ostile. Il sandbox applica i propri limiti a livello di sistema operativo o hypervisor, che restano validi anche se il modello segue una prompt injection nascosta in una pagina web o in un README, o semplicemente commette un errore.
Perché gli agenti hanno bisogno di sandbox#
La chiamata di funzioni e l'uso di strumenti trasformano il testo di un modello in azioni reali, quindi un agente in grado di eseguire comandi shell può anche eliminare file, leggere chiavi SSH o caricare codice sorgente. L'OWASP AI Agent Security Cheat Sheet include tra le pratiche da evitare quella di consentire agli agenti di eseguire codice arbitrario senza sandbox; inoltre, l'OWASP Top 10 for Agentic Applications, pubblicato nel dicembre 2025, identifica l'esecuzione imprevista di codice come uno dei dieci rischi principali dei sistemi agentici. I sandbox rendono gli agenti anche più pratici da usare: chiedere a una persona di approvare ogni comando causa affaticamento da approvazione e Anthropic ha rilevato che il sandboxing di Claude Code ha ridotto dell'84% le richieste di autorizzazione nell'uso interno, perché i comandi che restano entro i limiti non richiedono più una richiesta.
Cosa limita un sandbox#
Un sandbox per un agente controlla in genere cinque aspetti:
- Sistema di file: L'agente vede un'area di lavoro temporanea o un singolo repository, spesso basato su un'immagine di sola lettura, e non può leggere credenziali, profili del browser o altri progetti.
- Rete: Il traffico in uscita viene bloccato o instradato tramite un proxy che consente solo domini specificati, come un registro di pacchetti, così un agente compromesso non può inviare dati al server di un aggressore.
- Credenziali: I segreti restano fuori dal sandbox o vengono forniti sotto forma di token di breve durata e limitati a un singolo compito, secondo il principio del privilegio minimo della sicurezza dei dati.
- Risorse di calcolo: I limiti al tempo di CPU, alla memoria, al numero di processi e alla durata massima dell'esecuzione bloccano i cicli incontrollati e le fork bomb.
- Chiamate di sistema: Filtri come seccomp bloccano le interfacce del kernel che gli strumenti dell'agente non richiedono mai.
Il livello di isolamento dipende dalla posizione del confine. I container Docker condividono il kernel dell'host, quindi una vulnerabilità del kernel può consentire di evaderli. gVisor aggiunge un kernel in spazio utente che intercetta le chiamate di sistema di ciascun container; le microVM come Firecracker, realizzato da AWS per Lambda, assegnano a ogni sandbox un proprio kernel minimale e si avviano in meno di 125 ms, con un sovraccarico di memoria inferiore a 5 MiB. Gli interpreti di codice ospitati e gli agenti di programmazione cloud eseguono in genere ogni compito in un container o una microVM nuovi, che vengono poi eliminati. Sui computer degli sviluppatori, il sandbox di Claude Code usa Seatbelt su macOS e bubblewrap su Linux, consente ai comandi shell di scrivere solo nella directory di lavoro e in una directory temporanea e instrada il traffico di rete attraverso un proxy che verifica ogni host rispetto a un elenco di autorizzazione.
Il sandbox è uno dei livelli dell'harness dell'agente, il software che esegue le chiamate agli strumenti del modello. L'harness verifica ogni azione proposta rispetto alle policy, esegue le azioni consentite nel sandbox e si ferma per chiedere conferma a una persona prima di azioni irreversibili come pagamenti, distribuzioni o messaggi inviati all'esterno dell'organizzazione:
Sandboxing del codice generato#
Gli agenti che scrivono ed eseguono codice, dagli assistenti per l'analisi dei dati agli strumenti di programmazione agentica, hanno bisogno dei limiti più rigorosi, perché il codice generato può fare tutto ciò che l'interprete è in grado di fare. Il livello più interno è il normale isolamento dei processi, illustrabile con la libreria standard di Python: questo script esegue codice scritto dal modello in una directory temporanea, con un ambiente vuoto e un limite al tempo di CPU impostato tramite il modulo resource (Linux e macOS).
import os
import resource
import subprocess
import sys
import tempfile
os.environ["API_KEY"] = "sk-live-123" # Un segreto detenuto dal processo dell'agente stesso
# Codice scritto dal modello: legge l'ambiente, poi entra in un ciclo infinito
generated = "import os\nprint('API_KEY =', os.environ.get('API_KEY'), flush=True)\nwhile True: pass"
def limit_cpu():
"""Stop the child process after 2 seconds of CPU time."""
resource.setrlimit(resource.RLIMIT_CPU, (2, 2))
# Eseguilo in modalità isolata, in una directory temporanea, con un ambiente vuoto
cmd = [sys.executable, "-I", "-c", generated]
with tempfile.TemporaryDirectory() as workspace:
proc = subprocess.run(cmd, cwd=workspace, env={}, capture_output=True, text=True, preexec_fn=limit_cpu)
print(proc.stdout.strip())
print("exit code:", proc.returncode)Il processo figlio stampa API_KEY = None perché parte con un ambiente vuoto e non può vedere il segreto del processo padre; termina con il codice -24, cioè il kernel lo ha terminato con SIGXCPU quando il ciclo infinito ha raggiunto il limite di 2 secondi di tempo CPU. Un container o una microVM aggiunge a questo processo i confini del sistema di file e della rete.
Sandboxing e controlli correlati#
- Misure di protezione dell'IA: Classificatori e regole che controllano gli input, gli output o le azioni proposte prima della loro esecuzione. Il sandbox limita gli effetti di un'azione dopo che una misura di protezione l'ha lasciata passare.
- Autorizzazioni: Il controllo degli accessi stabilisce quali strumenti e risorse un agente può usare. Il sandboxing applica queste decisioni a livello di sistema operativo, al di sotto di qualsiasi controllo che il modello potrebbe riuscire ad aggirare a parole.
- Containerizzazione: Confezionamento del software e delle sue dipendenze per una distribuzione riproducibile. Un container funge da sandbox quando viene eseguito con privilegi ridotti, punti di montaggio limitati e regole per il traffico in uscita.
- Sandbox di test: Copie non di produzione di un sistema, in cui il software viene provato in sicurezza. I sandbox degli agenti racchiudono ogni azione eseguita da un agente, sia in produzione sia durante lo sviluppo.
Dove si usano i sandbox per agenti#
- Agenti di programmazione: Ogni compito riceve un container o una macchina virtuale nuovi con un solo repository, dove l'agente installa le dipendenze, esegue i test e restituisce un diff per la revisione umana.
- Agenti che controllano il computer: Gli agenti che usano un desktop o un browser tramite screenshot e clic vengono eseguiti in una macchina virtuale con account propri, poiché qualsiasi pagina visualizzata può contenere istruzioni rivolte a loro.
- Interpreti di codice: Gli assistenti che analizzano fogli di calcolo o immagini caricati eseguono il proprio codice Python in un sandbox per sessione, spesso senza accesso a Internet.
- Server MCP e competenze degli agenti: Gli strumenti di terze parti e gli script delle competenze vengono eseguiti con le credenziali dell'utente; per questo, gli host più attenti avviano i server locali e gli script entro gli stessi confini della shell dell'agente.
Le piattaforme di agenti ospitate applicano gli stessi limiti anche ai propri flussi di lavoro. Ultralytics Platform Agents, che concatenano il rilevamento YOLO26, i modelli visione-linguaggio e i blocchi di avviso, limitano ogni esecuzione di prova condivisa a 60 secondi, 20 immagini in ingresso e 20 chiamate a modelli o provider; il loro blocco Webhook invia richieste solo a URL HTTPS pubblici, non segue i reindirizzamenti e termina dopo 5 secondi.










