I ricercatori di Parameter Labs hanno individuato una vulnerabilità in ChatGPT che consentiva di leggere le conversazioni private di un utente semplicemente aprendo un link condiviso. L'attacco scattava all'apertura della pagina web, senza alcuna interazione aggiuntiva da parte della vittima. OpenAI ha confermato il problema, corretto il frontend a fine ottobre e riconosciuto ai ricercatori un premio di 5.000 dollari nell'ambito del programma di bug bounty.
Il meccanismo della falla
ChatGPT può mostrare l'anteprima di una pagina web generata a partire da un blocco di codice HTML. Poiché in quella pagina può trovarsi qualsiasi tipo di contenuto, il chatbot esegue il codice in un frame isolato su un indirizzo separato, così da impedire l'accesso alla pagina principale. È il classico funzionamento tramite sandbox, pensato proprio per contenere eventuali codice malevolo.
Il problema nasceva dalla chat condivisa, che include anche un grafo interattivo. Per caricarlo, ChatGPT inseriva nella pagina principale la libreria MathLive, la quale lasciava attiva una funzione di ascolto dei messaggi relativi alla tastiera virtuale. I messaggi tra due frame dovrebbero essere accettati solo se il destinatario verifica il mittente: gli esperti hanno invece scoperto che il listener accettava codice HTML da un mittente qualsiasi.
Dalla sandbox all'account
L'anteprima della pagina web diventava così un veicolo per trasmettere codice alla pagina principale di ChatGPT, aggirando la restrizione della sandbox. Se la vittima ignara apriva il link condiviso, veniva eseguito il codice JavaScript presente nella pagina: da lì era possibile leggere le conversazioni private e compiere qualsiasi azione tramite l'account ChatGPT dell'utente.
OpenAI ha confermato la vulnerabilità e aggiornato il frontend web del chatbot a fine ottobre. La vicenda ricorda quanto sia delicato l'equilibrio tra funzionalità ricche, come le anteprime e i grafi interattivi, e la sicurezza dei dati degli utenti: la correzione è arrivata rapidamente, ma il caso mostra come anche un singolo listener poco rigoroso possa aprire una breccia in un sistema apparentemente isolato.