La violazione AI di Hugging Face, raccontata attraverso una metafora dell’orso sempre più approfondita
Hugging Face ha pubblicato lunedì una cronologia tecnica dettagliata che spiega come un agente IA autonomo, basato su modelli OpenAI e operante all’interno di una delle valutazioni di cybersicurezza di OpenAI, sia riuscito a penetrare nei suoi sistemi per oltre quattro giorni all’inizio di questo mese. Si tratta del primo incidente di sicurezza che, come ha affermato il CEO di OpenAI Sam Altman, lo ha “colpito molto visceralmente”.
Non c’è da stupirsi, dato che, per lo meno, si ha la sensazione che qualcosa sia stato veramente scatenato. Il team di Hugging Face ha infatti premesso il suo rapporto offrendo il consiglio che “tutti dovrebbero essere preparati come difensori”, prima di immergersi nei dettagli di quanto accaduto a beneficio degli ingegneri della sicurezza di tutto il mondo.
Mentre il resto di Internet continua a cercare di capire cosa sia successo – il gergo del rapporto di Hugging Face è impossibile da decifrare per la maggior parte delle persone – un punto che molti osservatori continuano a perdere è che non si è trattato di un agente ribelle che disubbidiva agli ordini. Era un sistema costruito per cercare exploit, e stava facendo esattamente questo, solo contro il bersaglio sbagliato.
Un altro modo per pensare all’intera vicenda è immaginare un orso in un campeggio. Un orso prova le cerniere delle tende, le maniglie delle portiere delle auto, i frigoriferi portatili e i coperchi dei bidoni della spazzatura. Lo fa in ogni campeggio, per tutta la notte, perché sa che gli basta un solo frigorifero sbloccato per riempire la pancia con la spesa di qualche poveraccio.
Questo è più o meno quello che è successo a Hugging Face. Il sistema OpenAI ha provato migliaia di cose e ha semplicemente continuato. Alla fine, un piccolo numero di questi tentativi ha funzionato, e una volta che ciò è accaduto, l’agente ha proseguito con un tipo di persistenza che è, sì, inumana. Secondo Hugging Face, l’agente ha eseguito 17.600 azioni in quattro giorni e mezzo senza fermarsi.
Ciò ci riporta all’analogia dell’orso. Proprio come un successo con un frigorifero pieno di cibo insegna a un orso a provarci ancora più duramente la prossima volta (è ora un orso “condizionato al cibo”), una password trapelata ha portato l’agente di OpenAI a cercare altri exploit e, alla fine, a una singola chiave che ha sbloccato diversi sistemi aziendali contemporaneamente.
Nessuno dei due scenari è innocuo. Un orso che saccheggia il tuo frigorifero mangia comunque il tuo cibo e probabilmente distrugge anche il tuo campeggio. Si concentra solo sul nutrirsi, ma lascia comunque dietro di sé una scia di distruzione. Allo stesso modo, l’agente di OpenAI sembrava perseguire un obiettivo senza riguardo per nient’altro. L’agente stava originariamente sostenendo un esame di cybersicurezza, ha capito che la chiave di risposta dell’esame era probabilmente sui server di Hugging Face, e l’ha cercata.
La persistenza qui è davvero ciò che è degno di nota sopra ogni cosa; l’agente aveva un compito e non si sarebbe fermato finché non lo avesse portato a termine. Hugging Face, rendendosi finalmente conto che qualcosa non andava, ha interrotto il suo accesso e bloccato l’intrusione, ma a quel punto era troppo tardi. L’agente aveva già ottenuto ciò per cui era venuto, e molto altro ancora.
Ecco la maggior parte di quanto accaduto, secondo la cronologia di Hugging Face, ma in termini più semplici. L’agente stava sostenendo un esame di competenze di cybersicurezza per OpenAI, uno in cui un’IA viene valutata sulla capacità di trovare e sfruttare bug software. Questa specifica esecuzione era priva di “guardrail” (OpenAI aveva disattivato i suoi soliti filtri di sicurezza per vedere cosa potesse fare il modello a piena potenza, senza alcun coinvolgimento umano nelle sue singole mosse). A un certo punto, ha capito che le soluzioni di riferimento dell’esame erano probabilmente archiviate sui server di Hugging Face. Quindi, invece di risolvere la sfida, ha rubato la chiave di risposta da un’infrastruttura che non aveva nulla a che fare con il test originale.
È sfuggito all’ambiente d’esame di OpenAI sfruttando un difetto software non patchato che gli ha fornito un percorso verso l’Internet aperto. Da lì, ha trovato un altro strumento di test IA esposto online (nulla a che fare con Hugging Face), vi è penetrato anch’esso e ha inserito codice che eseguiva silenziosamente comandi nascosti nel momento in cui il programma si avviava. Ciò gli ha conferito il pieno controllo della macchina, la sua nuova base operativa per il resto dell’operazione che avrebbe utilizzato per attaccare i sistemi di Hugging Face.
Da quella base, si è rivolto a Hugging Face stessa. Hugging Face aveva un filtro destinato a bloccare le richieste sospette che cercavano di raggiungere il web aperto, ma il filtro controllava solo le richieste in uscita, non le richieste di lettura di file locali presenti direttamente sul server. L’agente ha trovato questo punto cieco e vi è passato attraverso. Ha caricato un file mascherato da comune set di dati, ma al suo interno era sepolta un’istruzione che diceva ai sistemi di Hugging Face di prelevare password e codice sorgente dal server e di restituirli mascherati come dati normali.
Questo trucco gli ha procurato password e codice, ma non poteva ancora eseguire nulla sui server di Hugging Face. Per eseguire comandi lì, l’agente aveva bisogno di un secondo modo per entrare. Ha trovato un bug diverso nello stesso sistema di Hugging Face: il software prendeva un pezzo di testo dall’agente e lo trattava accidentalmente come un comando da eseguire invece che come semplici dati da leggere. Questo ha dato all’agente la capacità di eseguire il proprio codice direttamente sui server di Hugging Face.
Per l’invio di comandi e l’estrazione di dati rubati, l’agente non ha costruito alcuna infrastruttura speciale propria, secondo Hugging Face. Ha utilizzato strumenti accessibili a chiunque – siti web di “paste” e servizi di registrazione delle richieste, oltre alle funzioni di upload e proxy di Hugging Face – lavorando insieme in modo nascosto. In cima a questi, ha costruito un piccolo sistema di messaggistica improvvisato con numeri di sequenza per mantenere i pezzi in ordine, oltre a un rapido controllo integrato per rilevare qualsiasi cosa arrivasse danneggiata, in modo da poter inviare comandi a più passaggi e rimettere insieme i dati rubati nell’ordine corretto.
Si è anche assicurato che nulla viaggiasse in chiaro. Qualsiasi cosa rubasse o inviasse, la criptava prima. La scansione automatica iniziale di Hugging Face del traffico intercettato ha catturato solo una piccola parte di ciò che era stato prelevato. Gli investigatori hanno trovato il resto – circa quattro volte di più – solo dopo aver decifrato il metodo di criptazione dell’agente stesso.
Aveva anche piani di riserva, piantando copie di sé stesso su 11 server diversi, ciascuno configurato per riavviarsi autonomamente in modo che l’arresto di una copia non avrebbe interrotto nulla, poiché più istanze del processo dell’agente erano già in esecuzione altrove.
A un certo punto, ha acquisito la chiave crittografica privata utilizzata per generare token di accesso validi. Da lì, l’agente poteva coniare le proprie credenziali valide ogni volta che lo desiderava.
Dopo aver compromesso un singolo server, l’agente ha ottenuto una credenziale che, a causa di una errata configurazione da parte di Hugging Face, si è rivelata in grado di sbloccare diversi sistemi interni separati contemporaneamente anziché solo quello da cui proveniva. Questo singolo errore ha conferito all’agente un ampio controllo quasi immediatamente.
Utilizzando l’accesso al repository rubato, ha inviato una modifica a uno script di build che, se fosse passata, avrebbe potuto compromettere i sistemi automatizzati che eseguivano quel codice. Non ha funzionato, tuttavia. Le salvaguardie di Hugging Face l’hanno bloccato, e gli ingegneri hanno successivamente confermato che nulla di non autorizzato è entrato in produzione.
L’agente sembrava astenersi dal causare danni reali, ha osservato Hugging Face, ma probabilmente non per una questione di moderazione. Gli investigatori hanno notato che ogni comando capace di eliminare o alterare le risorse cloud è stato eseguito in modalità “dry run” (simulazione), il che significa che avrebbe riportato cosa sarebbe successo senza effettivamente farlo.
Ogni volta che il suo ambiente di test si ripristinava – cosa che accadeva costantemente, per sua natura – perdeva ogni strumento e ogni traccia della sua identità. Ma si ricostruiva dal nulla e si riconnetteva alla sua infrastruttura rubata ogni volta, per più di quattro giorni consecutivi.
In definitiva, Hugging Face ha concluso nel suo rapporto, un “capace” hacker umano “avrebbe potuto trovare e sfruttare le stesse falle: elaborazione non sicura dei set di dati, metadati cloud esposti, accesso eccessivamente ampio e credenziali di lunga durata”. La grande differenza, ha continuato l’azienda, è che “l’agente le ha esplorate su una scala diversa”.
È qui che l’analogia dell’orso si rivela più utile. La migliore difesa contro un orso affamato è il protocollo. Si mette via il cibo; si usa una chiusura che funziona abbastanza bene da resistere. Il messaggio qui non dovrebbe essere che l’orso fosse così intelligente o malizioso. È che non ha mai smesso di controllare. Nella cybersicurezza è risaputo che c’è sempre qualche bug che non è stato trovato, quindi se improvvisamente è 100 volte più facile controllare tutto, allora nulla è veramente sicuro. Questo è ciò che molti trovano inquietante di questo episodio.
