The Pulse
OpenAI ha corretto una falla nei link di condivisione di ChatGPT che esponeva le chat private
I ricercatori di Parameter hanno riferito che un link pubblico di condivisione di ChatGPT poteva eseguire codice nella sessione autenticata di chi lo riceveva e accedere ai dati delle conversazioni private. Parameter afferma che OpenAI ha c

AI.info Team · Scritto con l’IA · verificato ·
La funzione Preview del codice di ChatGPT era progettata per isolare le pagine web scritte dagli utenti dal servizio nella sessione autenticata, ma i ricercatori di Parameter hanno trovato un modo per aggirare questa barriera attraverso un normale link pubblico di condivisione. Secondo il resoconto di Parameter, OpenAI ha riprodotto la dimostrazione dei ricercatori, ha innalzato la gravità della segnalazione a P1 e ha corretto il problema il 26 ottobre. Parameter ha pubblicato il suo resoconto tecnico il 28 ottobre.
Una conversazione condivisa ha oltrepassato la barriera
L’attacco combinava due funzioni di ChatGPT apparentemente scollegate: un grafico interattivo e una Preview HTML. Il grafico caricava MathLive, una libreria che installava un listener per i messaggi nella pagina principale di ChatGPT; la Preview veniva eseguita in un frame separato e sottoposto a restrizioni. Parameter ha scoperto che il listener accettava messaggi senza verificare da quale frame provenissero e che i messaggi potevano contenere HTML.
Quel codice HTML poteva creare un nuovo frame privo di sandbox. Poiché era la pagina principale di ChatGPT a crearlo, il browser lo trattava come parte di chatgpt.com, dando al suo codice accesso alla pagina della sessione autenticata. La policy di sicurezza dei contenuti di ChatGPT bloccava gli script inline, ma consentiva quelli provenienti da YouTube; Parameter ha sfruttato il comportamento di callback JSONP di un endpoint di YouTube per eseguire codice attraverso quel percorso consentito.
I ricercatori hanno combinato il grafico e la Preview in un’unica conversazione pubblica, quindi hanno testato il link di condivisione risultante tra account separati. In una versione, il destinatario doveva cliccare una volta su Preview; in una versione successiva, la Preview si apriva automaticamente. Secondo Parameter, l’apertura del link era quindi l’unica azione richiesta all’utente.
«La vittima non doveva installare un’app, unirsi a un progetto, incollare codice o aprire gli strumenti per sviluppatori. L’apertura del link condiviso era l’unica azione richiesta».
Mukul Goyal, autore del rapporto di Parameter
I ricercatori hanno dimostrato l’accesso alle conversazioni private
Secondo Parameter, il codice iniettato poteva elencare le conversazioni recenti di una vittima e richiedere i dati dei messaggi di una chat privata che non era mai stata condivisa con l’attaccante. Per la loro dimostrazione i ricercatori hanno usato account di test separati e hanno inviato solo una piccola parte selezionata della risposta a un server sotto il loro controllo. Non hanno descritto la dimostrazione come una prova che gli attaccanti avessero sfruttato la falla contro utenti reali.
Il codice chiamava le API autenticate di ChatGPT, anziché limitarsi a leggere il testo visualizzato sullo schermo. Parameter ha scritto che l’exploit poteva eseguire le azioni disponibili tramite l’account della vittima, sebbene la dimostrazione riportata si concentrasse sul recupero dei dati delle conversazioni private. La distinzione è importante: i ricercatori hanno mostrato una capacità in un test controllato, non una prova di furti di account avvenuti nella realtà.
OpenAI ha corretto entrambi i frontend web
Secondo la cronologia di Parameter, il problema è stato segnalato al programma di bug bounty di OpenAI il 18 ottobre. OpenAI ha riprodotto l’esecuzione di JavaScript e la dimostrazione relativa alle conversazioni private, poi il 21 ottobre ha innalzato la gravità da P2, assegnato nella valutazione iniziale, a P1. L’azienda ha distribuito le correzioni su due versioni del frontend web di ChatGPT, completando il lavoro il 26 ottobre.
I ricercatori hanno ricondotto l’exploit a tre debolezze collegate: il listener di MathLive accettava un messaggio che modificava lo stato senza verificarne il mittente; il messaggio poteva contenere HTML grezzo; e quel codice HTML poteva creare un frame privo di sandbox con l’identità web di ChatGPT. Secondo Parameter, il passaggio finale attraverso YouTube era un espediente per aggirare la policy di sicurezza dei contenuti del sito, non la falla di fondo. Bloccare soltanto quell’endpoint non avrebbe eliminato il percorso non sicuro attraverso cui l’HTML raggiungeva la pagina principale.
La correzione è stata effettuata da OpenAI
Parameter afferma che il 26 ottobre OpenAI ha confermato che entrambe le versioni del frontend respingevano i messaggi usati nel rapporto e ha assegnato una ricompensa complessiva di 5.000 dollari. Il problema era stato corretto prima che Parameter pubblicasse il suo resoconto due giorni dopo.
La scoperta riguardava il modo in cui le funzioni interagivano, piuttosto che un malfunzionamento della sandbox di Preview in sé. Il codice della Preview non poteva leggere direttamente la pagina di ChatGPT che la ospitava; il collegamento era fornito da un listener per i messaggi non verificato presente in quella pagina. Il rapporto di Parameter documenta come un grafico, una pagina visualizzata in anteprima, un percorso di rendering HTML e una fonte di script consentita si siano combinati per permettere a un link pubblico di condivisione di eseguire codice nella sessione autenticata di un utente.