Introduzione
ChatGPT, rilasciato meno di due mesi fa, è ormai noto in tutto il mondo, è diventato rilevante ed è utilizzato ovunque, dalle attività di automazione fino alla composizione di musica classica del XVIII secolo. Le sue caratteristiche offrono esempi di codice veloci e intuitivi, incredibilmente vantaggiosi per chiunque lavori nel settore software. Tuttavia, troviamo che anche la sua capacità di scrivere malware sofisticato che non contiene codice maligno sia piuttosto avanzata e desideriamo sensibilizzare l’opinione pubblica sui rischi potenziali.
Grazie al machine learning genera risposte utilizzando un’enorme raccolta di dati disponibili. Come indicato dallo sviluppatore, OpenAI, ChatGPT non ha accesso a Internet e, pertanto, non può fornire risposte o codici aggiornati, ma potrebbe essere usato facilmente per creare malware polimorfo, le cui avanzate capacità possono permettere all’attaccante di eludere facilmente – con un minimo sforzo o investimento – le soluzioni di sicurezza e rendere difficile la mitigazione.
Filtri e bypass dei contenuti
L’esistenza di filtri di contenuto è familiare nel modello di apprendimento delle chatbot. Spesso vengono applicati per limitare l’accesso a determinati tipi di contenuti o per proteggere gli utenti da materiale potenzialmente pericoloso o inappropriato. Nel nostro caso, sembra che chiedere a ChatGPT un codice subdolo non funzionerebbe. Proviamo. Ebbene, il filtro dei contenuti è stato attivato e ChatGPT ha rifiutato di eseguire la richiesta. È successo perché abbiamo chiesto di iniettare uno shellcode in explorer.exe. Avevamo previsto e anticipato che sarebbe potuto accadere, anche se l’iniezione di codice viene solitamente effettuata da barre degli strumenti e componenti aggiuntivi e potrebbe essere utilizzata per scopi legittimi.
Il più delle volte, le chatbot hanno dei punti ciechi e il nostro primo obiettivo era trovare un modo per aggirare questo filtro e si può ottenere insistendo e pretendendo.
È interessante notare però che, chiedendo a ChatGPT di fare la stessa cosa utilizzando più vincoli e chiedendogli di obbedire, abbiamo ottenuto un codice funzionale. Ecco un semplice codice che inietta una DLL in explorer.exe.