Vai al contenuto
sobolewski.proL'IA di oggi, ogni seraIscriviti

Una volta al giorno. Disiscriviti con un clic. Informativa sulla privacy

Vulnerabilità ChatGPT: bastava un link per rubare l'account

Una vulnerabilità di ChatGPT permetteva di rubare l'account con un link pubblico a una chat e leggere le chat altrui. OpenAI ha pagato 5000 USD. Ecco come.

4 min di lettura

Questo articolo in altre lingue:العربيةDeutschEnglishEspañolFrançais日本語Polski简体中文

In questo articolo
  1. Come funzionava la vulnerabilità di ChatGPT
  2. Cosa poteva fare esattamente l’attaccante?
  3. Come ha reagito OpenAI?
  4. Perché se ne parla tanto?
  5. A cosa fare attenzione in futuro?
  6. FAQ

Il 28 ottobre Mukul Goyal di Parameter ha pubblicato la descrizione di una vulnerabilità di ChatGPT che permetteva di prendere il controllo di un account con un normale link pubblico a una conversazione (chatgpt.com/share/…). Il codice dell’attaccante veniva eseguito nella sessione autenticata di chi apriva il link. OpenAI ha chiuso la segnalazione il 26 ottobre e ha pagato 5000 USD tramite il suo programma di bug bounty.

Come funzionava la vulnerabilità di ChatGPT

L’attacco è una catena di quattro bug (così come li descrivono i ricercatori):

  1. Un grafico interattivo nella conversazione caricava MathLive, una libreria open source per scrivere formule matematiche. La libreria accettava messaggi tra i frame della pagina da qualsiasi mittente, senza verificare chi li avesse inviati.
  2. I dati del layout della tastiera di MathLive potevano contenere HTML, che la libreria inseriva nella pagina principale senza filtrarlo.
  3. Quell’HTML creava un iframe senza l’attributo sandbox, quindi il nuovo documento ereditava l’origine chatgpt.com.
  4. La Content Security Policy di ChatGPT bloccava gli script inline, ma consentiva YouTube. L’endpoint oEmbed di YouTube supportava un callback in stile JSONP, grazie al quale i ricercatori potevano caricare il proprio codice da un dominio consentito.

In pratica l’attaccante pubblicava una conversazione dall’aspetto normale. All’inizio c’era un vero grafico (per caricare MathLive), più avanti un’anteprima HTML, cioè la funzione Preview, che trasforma un blocco di codice HTML in una piccola pagina funzionante. Era proprio l’anteprima a inviare i messaggi malevoli alla libreria.

Secondo i ricercatori, aprire il link condiviso era l’unica azione necessaria. Nella versione più stabile la vittima cliccava una volta su Preview. In una successiva l’anteprima si apriva da sola, e la prova dell’esecuzione del codice compariva dopo circa 4,5 secondi.

Cosa poteva fare esattamente l’attaccante?

Il codice girava come chatgpt.com nella sessione della vittima, quindi poteva chiamare l’API autenticata di ChatGPT a suo nome. Nel proof of concept i ricercatori hanno scaricato l’elenco delle conversazioni recenti, poi il contenuto di una conversazione privata che nessuno aveva condiviso con loro, e ne hanno inviato un piccolo frammento al proprio server.

Secondo il post, in questo modo potevano compiere praticamente qualsiasi azione sull’account della vittima («Essentially, we could perform any action on behalf of the victim’s ChatGPT account»). L’attacco funzionava anche tra account e workspace separati.

Come ha reagito OpenAI?

La cronologia dal post di Parameter:

  1. 13 ottobre: i ricercatori confermano il percorso vulnerabile di MathLive nel codice di produzione.
  2. 18 ottobre: segnalano la falla al programma di bug bounty di OpenAI.
  3. 21 ottobre: OpenAI riproduce il bug e ne alza la priorità da P2 a P1.
  4. 22 ottobre: la correzione arriva su uno dei due frontend web, e il 23 ottobre alcune modifiche alla CSP bloccano parte della catena.
  5. 26 ottobre: entrambi i frontend rifiutano i messaggi usati nell’attacco, la segnalazione viene chiusa e i ricercatori ricevono la ricompensa.

Il post non parla di sfruttamento della vulnerabilità in attacchi reali. Non descrive nemmeno cosa abbia cambiato esattamente OpenAI nel codice.

Perché se ne parla tanto?

Primo, per la semplicità dell’attacco. Il link sembrava una qualsiasi altra chat di ChatGPT condivisa, quindi controllare l’indirizzo non sarebbe servito a nulla.

Secondo, per la ricompensa. Il post è finito in prima pagina su Hacker News e nei commenti torna soprattutto la cifra: a molti 5000 USD per rubare un account con un solo link sembrano pochi, e alcuni temono che ricompense così basse scoraggino i ricercatori dal segnalare i bug.

Terzo, per l’origine del problema. Curiosamente, tutta la catena partiva da una libreria per scrivere formule matematiche (da qui il titolo del post, «Do the Math»). Più extra interattivi ha una chat – grafici, anteprime di pagine – più punti ci sono in cui qualcosa può andare storto. E le conversazioni condivise avevano già creato problemi: come sappiamo, nella fuga di dati di Meta Muse i titoli delle chat condivise erano finiti nel DNS pubblico.

A cosa fare attenzione in futuro?

I ricercatori indicano due lezioni per chi sviluppa applicazioni web:

  1. Chi riceve messaggi tra frame dovrebbe verificare sia l’origine del mittente sia la finestra esatta a cui ha dato i permessi.
  2. La CSP deve essere una protezione di riserva, non l’unica barriera quando l’HTML dell’attaccante è già sulla pagina.

Per noi utenti questa vulnerabilità è già stata corretta. Vale comunque la pena ricordare che il link alla conversazione di qualcun altro con un chatbot resta un link ricevuto da uno sconosciuto. Scrivo di più su come proteggere account e chiavi API nella guida alla sicurezza degli agenti AI.

FAQ

La vulnerabilità di ChatGPT è già stata corretta?

Sì. Secondo i ricercatori, il 26 ottobre OpenAI ha confermato che entrambi i frontend web di ChatGPT rifiutano i messaggi usati nell’attacco.

Devo fare qualcosa con il mio account?

Il post di Parameter non indica alcun passaggio per gli utenti e non menziona attacchi al di fuori dei test dei ricercatori.

Quanto ha pagato OpenAI per la segnalazione?

5000 USD nell’ambito del programma di bug bounty. La segnalazione ha ricevuto priorità P1.

Secondo i ricercatori sì. In una versione dell’attacco bisognava ancora cliccare una volta su Preview, in una successiva l’anteprima partiva da sola.

  • AI
  • sicurezza
  • OpenAI

L'IA di oggi, ogni sera

Ogni sera le notizie più importanti sull'IA e i nuovi articoli del blog. In breve, con le fonti.

Una volta al giorno. Disiscriviti con un clic. Informativa sulla privacy