Il presupposto popolare secondo cui un essere umano che esamina ogni comando può tenere sotto controllo gli agenti di codifica dell’intelligenza artificiale si trova ad affrontare un serio esame. Una nuova analisi di oltre 40.000 sessioni di gioco e oltre 409.000 decisioni individuali di approvazione o rifiuto ha rilevato che i revisori umani hanno mancato circa un comando dannoso su tre da parte degli agenti di intelligenza artificiale, sollevando domande urgenti sul fatto che "human-in-the-loop" sia un limite di sicurezza affidabile.
I risultati provengono da un gioco basato su browser creato da Alex Wauters, un ex ingegnere dello staff di Uber che scrive di sicurezza degli sviluppatori su Scala X. Il gioco pone i giocatori nel ruolo di un revisore umano per un agente di codifica AI, chiedendo loro di approvare o negare i comandi della shell sotto pressione temporale. Alcuni comandi sono di routine, come "git status" o "npm test". Altri sono tentativi accuratamente mascherati di esfiltrare credenziali, installare backdoor o inviare segreti a server remoti. Dopo aver aggiunto il monitoraggio delle statistiche, Wauters ha raccolto dati sufficienti per dipingere un quadro dettagliato di dove il giudizio umano ha successo e, più spesso, fallisce. Per ulteriori informazioni sulla più ampia copertura del settore dell’intelligenza artificiale, questo studio si distingue come uno degli esperimenti più ricchi di dati fino ad oggi.
I comandi più pericolosi erano i più difficili da catturare
La scoperta più sorprendente dello studio è che comandi ovviamente distruttivi, come `rm -rf` su directory critiche, sono stati rilevati in modo affidabile. Le minacce che effettivamente sono riuscite a rubare le credenziali sono state ignorate quasi tre volte più spesso. Il comando più mancato nell'intero gioco è stato "npm run analyze", approvato dal 64,7% dei giocatori nonostante il registro della cronologia dell'agente mostrasse chiaramente che lo script sottostante era stato manomesso per reindirizzare le credenziali a un server esterno.
Il problema è strutturale. Comandi come "npm run" eseguono qualunque script sia definito nel file "package.json" di un progetto. Tale script potrebbe essere un analizzatore di bundle legittimo o un codice dannoso inserito da una modifica di file precedente modificata dall'agente. Per saperlo con certezza, uno sviluppatore dovrebbe ispezionare ogni file modificato prima di approvarlo, il che annulla il vantaggio in termini di velocità che gli strumenti di codifica AI dovrebbero fornire.
Su tre di questi comandi con carico utile mascherato nel gioco, il tasso di errore è stato del 52,5% rispetto al 28,4% per tutti gli altri attacchi di esfiltrazione di credenziali. Nascondere un carico utile dietro un nome di script familiare ha quasi raddoppiato la sua percentuale di successo, anche quando il carico utile era visibile nel registro della cronologia visualizzato appena sopra la richiesta di autorizzazione.
La fatica dei permessi erode la vigilanza nel tempo
Anthropic aveva già riconosciuto che l'affaticamento dei permessi è un fenomeno reale nel suo prodotto Claude Code, sottolineando che più approvazioni vede un utente, meno attenzione presta a ciascuna di esse. I dati della Scala X supportano empiricamente questa preoccupazione. La percentuale di errori è diminuita durante i primi comandi di ogni sessione mentre i giocatori si riscaldavano, ma poi è aumentata costantemente verso la fine, in linea con la stanchezza o con la crescente pressione del ticchettio dell'orologio.
Questo modello rispecchia le dinamiche del mondo reale. Gli sviluppatori che si affrettano a rilasciare funzionalità sotto pressione rispetto alle scadenze si trovano ad affrontare lo stesso incentivo a fare clic rapidamente su Approva, e l'enorme volume di comandi di routine crea un problema di ago in un pagliaio in cui le minacce autentiche sono statisticamente rare. Il risultato è un sistema che insegna agli utenti a timbrare tutto.
L'altro lato: i blocchi eccessivi rallentano tutto
Lo studio ha documentato anche la modalità di fallimento opposta. Diversi comandi genuinamente benigni venivano regolarmente bloccati da giocatori cauti, comprese le invocazioni di build e test standard. Questo blocco eccessivo rallenta l’agente e, paradossalmente, aumenta il rischio a lungo termine. Quando agli utenti viene chiesto ripetutamente di approvare comandi che si rivelano innocui, il rumore mina la loro disponibilità a esaminare attentamente le richieste future, spingendoli infine verso bypass completi o modalità di approvazione automatica che rimuovono completamente la revisione umana.
Funzionalità come la modalità automatica di Anthropic tentano di mitigare questo problema determinando automaticamente se un comando è sicuro prima di richiederlo all'utente. Ma come dimostrano i dati dello studio sui carichi utili mascherati, anche i contenuti visibili dei comandi non sono sufficienti affinché gli esseri umani possano esprimere giudizi affidabili sotto pressione.
Il contesto mancante è il problema principale
Un comando, "cat ~/.zshrc", si è rivelato il più controverso dell'intero gioco, approvato dal 45,9% dei giocatori. Il comando è innocuo per gli sviluppatori che non mantengono segreti nel profilo della shell, ma espone le chiavi API per i molti che esportano lì le credenziali. Il rischio dipende interamente dalla configurazione del sistema che l'agente non può vedere e che il revisore potrebbe non ricordare.
Diversi altri comandi hanno generato controversie simili nel thread di discussione di Hacker News per lo stesso motivo. La questione fondamentale è che agli sviluppatori viene chiesto di esprimere giudizi sulla sicurezza senza avere un quadro completo di quali file sono stati modificati, cosa ha fatto l'agente nei passaggi precedenti e cosa contiene l'attuale configurazione del sistema. Come ha notato un commentatore, chiedere agli utenti di convalidare comandi ambigui senza contesto non è una protezione efficace.
Cosa verrà dopo per la sicurezza degli agenti
Wauters sostiene che la soluzione non sono esseri umani migliori ma strumenti migliori. Il sandboxing degli agenti in modo che non possano accedere direttamente alle credenziali, il rigoroso isolamento del contesto e i limiti strutturali su ciò che gli agenti possono fare senza autorizzazioni elevate sono tutti più promettenti che fare affidamento sulla vigilanza umana. Fino a quando tali misure di salvaguardia non saranno messe in atto, concedere agli agenti ampi permessi rimane rischioso, indipendentemente dal fatto che un essere umano sia nominalmente coinvolto nel giro.
Lo studio non è un documento accademico sottoposto a revisione paritaria e Wauters ne riconosce i limiti. Il gioco avvisava i giocatori delle minacce e applicava una pressione temporale artificiale che potrebbe non rispecchiare perfettamente gli ambienti di sviluppo reali. Ma la scoperta principale, ovvero che revisori umani addestrati sotto pressione non riescono a cogliere un terzo degli attacchi deliberatamente mascherati, dovrebbe dare a ogni team che utilizza agenti di codifica IA un motivo per riconsiderare il proprio modello di sicurezza.
Per gli sviluppatori che oggi costruiscono con agenti IA, la conclusione pratica è presumere che l’intervento umano prima o poi fallirà. Progetta le autorizzazioni dell'agente e il sandboxing in modo che una mancata approvazione non significhi una chiave AWS trapelata o una pipeline di compilazione compromessa. I dati suggeriscono che considerare la revisione umana come la tua difesa principale è una scommessa che non ripaga.
Stai al passo con l'intelligenza artificiale
Il panorama della sicurezza degli agenti IA si sta evolvendo rapidamente. Rimani informato sugli ultimi sviluppi dell'intelligenza artificiale e sulle ricerche più innovative.
Leggi altre notizie sull'AI →