OpenAI corregge due fughe dal sandbox di Codex trovate dai ricercatori

OpenAI corregge due fughe dal sandbox di Codex trovate dai ricercatori

I ricercatori di sicurezza hanno trovato due modi per uscire dal sandbox di OpenAI Codex, incluso uno che esegue comandi sulla macchina di uno sviluppatore partendo dalla modalità di sola lettura.

Due tecniche di fuga dal sandbox di Codex appena divulgate mostrano come un assistente di programmazione basato sull'intelligenza artificiale possa essere spinto fuori dallo spazio protetto in cui dovrebbe restare, ed entrambe sono state corrette entro otto giorni dalla segnalazione. Le scoperte arrivano da Oren Yomtov di Accomplish AI, che ha segnalato i difetti a OpenAI il 12 agosto. Codex è l'agente di programmazione di OpenAI, offerto come strumento da riga di comando e come applicazione desktop, e come agenti simili di altri fornitori è progettato per eseguire le azioni del modello all'interno di un sandbox, un'area isolata che impedisce al codice non attendibile di toccare il resto della macchina. Entrambe le fughe funzionano sconfiggendo quel confine dall'interno invece di entrare dall'esterno.

Il difetto più grave, che i ricercatori chiamano Heapjack, trasforma un'azione ordinaria in esecuzione di codice da remoto, il che significa che il codice dell'attaccante viene eseguito sul computer stesso della vittima. Il percorso è breve: aprire il repository di codice di qualcun altro in Codex, fare all'agente una domanda su quel codice, e la persona che ha scritto il repository finisce per ottenere l'esecuzione di comandi fuori dal sandbox sulla tua macchina. Secondo la descrizione di Yomtov, la tecnica prende di mira un componente chiamato node_repl, che Codex Desktop scrive nel file di configurazione globale in ~/.codex/config.toml al momento dell'installazione. Non c'è alcuna adesione volontaria né un'impostazione per disattivarlo, e poiché la voce vive nella configurazione condivisa, chi usa il semplice strumento da riga di comando Codex eredita lo stesso componente senza che gli venga mai chiesto nulla.

Il motivo per cui la fuga funziona è una scelta di progettazione interna a node_repl. Esegue un singolo processo Node.js, un ambiente di esecuzione per programmi JavaScript, che contiene due contesti di esecuzione JavaScript separati. Uno è attendibile e contiene il codice di OpenAI stesso, e l'altro è non attendibile ed esegue il codice dell'agente. Il lato attendibile dimostra di essere attendibile presentando un token casuale che viene generato da zero a ogni esecuzione. Il problema è che entrambi i contesti si trovano nello stesso processo e condividono lo stesso heap di memoria, quindi quel token segreto è solo una stringa che sta in memoria dove il lato non attendibile può leggerla.

Il codice non attendibile cattura un'istantanea dell'heap con una funzione chiamata v8.getHeapSnapshot() e poi prova ogni stringa che assomiglia a un identificatore univoco universale, o UUID. Un tentativo sbagliato restituisce un messaggio che dice non autorizzato. Un token corretto inviato con un argomento volutamente errato produce un vero errore di convalida, il che dice all'attaccante che il token è quello giusto. Con il token in mano, il codice non attendibile scrive la propria richiesta sullo stesso canale che il contesto attendibile usa per parlare con un processo padre nativo, fuori dal sandbox. Il padre controlla il token, ne vede uno valido, e fa il lavoro. La prova di concetto ha usato il comando 'open' del sistema per avviare un'applicazione completamente fuori dall'albero dei processi di Codex. La descrizione osserva che lo stesso accesso raggiunge qualsiasi socket Unix, con il socket del demone Docker come obiettivo ovvio, e uno strumento per modificare il file di configurazione globale. Tutto questo viene eseguito in sola lettura, la modalità di sandbox più rigorosa, dove l'agente non dovrebbe poter scrivere nulla.

Il secondo difetto, Overpatch, si trova nel Codex CLI open source. In modalità workspace-write, l'agente può scrivere solo dentro la cartella del progetto, e un comando di shell rivolto alla cartella home viene rifiutato. I ricercatori hanno fatto sì che lo strumento di patch di Codex stesso, apply_patch, scrivesse comunque lì. Lo strumento concede l'accesso in scrittura alla cartella superiore di ogni percorso indicato in una patch, quindi nominare '/tmp' basta per concedere l'accesso in scrittura alla radice del disco. L'exploit funzionante usa una patch con due modifiche: una che nomina '/tmp' e non fa nulla di utile se non ampliare il permesso, e una che aggiunge una riga a '.zshrc' attraverso un symlink nella cartella home. Rimuovi la prima modifica e la scrittura viene rifiutata. Lasciala, e il prossimo terminale che lo sviluppatore apre esegue la riga dell'attaccante senza alcun sandbox attorno.

Entrambi i bug hanno la stessa forma, cioè che il meccanismo di applicazione viveva proprio dentro la cosa che doveva controllare. apply_patch calcolava i propri permessi da input forniti dall'attaccante, e node_repl teneva il segreto che separa il codice attendibile da quello non attendibile nella stessa memoria del codice non attendibile. In ogni caso, al sandbox è stato detto dall'interno di lasciar passare qualcosa.

Questa classe di bug non è nuova. A luglio 2026, i ricercatori di Pillar Security hanno dimostrato la stessa idea su Cursor, Codex, Gemini CLI e Antigravity di Google, mostrando un agente che resta dentro il suo sandbox mentre scrive un file che uno strumento attendibile fuori dal sandbox esegue in seguito. Reagendo al post di Yomtov su X, un commentatore ha scritto che "i contesti V8 isolano le variabili globali, non la memoria, quindi il sandbox era davvero una promessa che l'heap non ha mai accettato". Un altro ha descritto il confine di fiducia come un divisorio. Il fatto che il componente node_repl sia abilitato per impostazione predefinita ha attirato anch'esso attenzione, con un commentatore che chiedeva perché un token privilegiato fosse raggiungibile da JavaScript non attendibile.

OpenAI ha corretto Heapjack nella build 26.818.21641 di Codex Desktop e Overpatch in Codex CLI 0.149.0, secondo Accomplish. Gli utenti dovrebbero aggiornare a quelle versioni o successive. Yomtov ha riconosciuto a OpenAI il merito di aver risolto entrambi i problemi entro otto giorni dalla sua segnalazione. BleepingComputer ha dichiarato di aver contattato OpenAI per un commento prima della pubblicazione.

Per i team che desiderano un aiuto nel verificare come sono configurati gli strumenti di sviluppo e cloud in tutta la loro organizzazione, AEU-I fornisce servizi di IT, infrastruttura e consulenza orientati alla sicurezza.

Come Proteggerti

  1. Aggiorna l'app desktop Codex alla build 26.818.21641 o successiva e lo strumento da riga di comando Codex alla versione 0.149.0 o successiva, e attiva gli aggiornamenti automatici così le correzioni future arrivano senza che tu debba contro
  2. Fai attenzione ad aprire repository di codice di persone che non conosci dentro un assistente di programmazione basato sull'intelligenza artificiale, perché questa storia mostra che è bastato aprire un progetto del genere e fare una domanda
  3. Tieni gli assistenti di programmazione basati sull'intelligenza artificiale lontani dal computer e dall'account che contengono le tue password, i dati dei clienti o i dettagli di pagamento, così un errore come questo ha meno cose da raggiun
  4. Chiedi al tuo team IT o al tuo fornitore di tecnologia di confermare che gli strumenti di sviluppo usati dalla tua azienda eseguono la versione più recente, e di dirlo per iscritto.
  5. Conserva un backup recente del tuo sito web e dei file importanti che sai come ripristinare, nel caso qualcosa su una macchina di lavoro venga modificato a tua insaputa.

I Termini Spiegati

  • sandbox Un'area limitata all'interno di un computer dove a un programma è permesso di funzionare, così che qualsiasi cosa dannosa faccia resti lontana dal resto della macchina.
  • remote code execution Una situazione in cui un attaccante riesce a far eseguire i propri comandi sul computer di qualcun altro.
  • Node.js Un popolare software che permette ai programmi scritti nel linguaggio JavaScript di funzionare fuori da un browser web.
  • token Una lunga stringa casuale di caratteri usata come una password, così una parte di un programma può dimostrare a un'altra parte di essere autorizzata ad agire.
  • Unix socket Un punto di connessione privato su un computer che i programmi usano per scambiarsi istruzioni, per esempio per controllare altro software in esecuzione sulla stessa macchina.
  • symlink Un file scorciatoia che punta a un altro file o cartella da qualche altra parte sul computer, così aprendo la scorciatoia si apre la cosa reale.

Servizi AEU correlati