Salta al contenuto principale


Non fidarti del codice prodotto dalle AI! Un bug Giurassico del 2010 infetta anche GPT-4


E se le intelligenze artificiali producessero del codice vulnerabile oppure utilizzassero librerie e costrutti contenenti bug vecchi mai sanati? Si tratta di allucinazione o apprendimento errato?

Una vulnerabilità risalente a quindici anni fa, pubblicata per la prima volta come Gist su GitHub nel 2010 , continua a infettare progetti open source, tutorial e persino modelli linguistici di grandi dimensioni. Nonostante gli avvertimenti degli sviluppatori del 2012, 2014 e 2018, un esempio del codice vulnerabile è migrato nella documentazione di MDN e nelle risposte di Stack Overflow, per poi finire nei dati di training di LLM.

Il ricercatore Yafar Akhundali dell’Università di Leida e i suoi colleghi hanno sviluppato un sistema automatizzato in grado di individuare, sfruttare e correggere questa vulnerabilità nei progetti GitHub. Il lavoro è descritto in un preprint su arXiv intitolato “Eradicating the Unseen: Detecting, Exploiting, and Remediating a Path Traversal Vulnerability across GitHub”.

Questo è un caso di CWE-22, una tipica vulnerabilità di path traversal in cui un costrutto può essere utilizzato per accedere a directory al di fuori dell’area consentita. In pratica, questo può portare sia a perdite di file che ad attacchi DoS tramite overflow di memoria.

Gli autori hanno condotto un test che ha coinvolto Claude, Gemini, GPT-3.5, GPT-4, GPT-4o e diverse modalità Copilot. Quando ai modelli è stato chiesto di scrivere un server semplice senza librerie di terze parti, 76 richieste su 80 hanno restituito codice vulnerabile. Anche richiedendo direttamente la versione “sicura”, 56 esempi su 80 sono rimasti vulnerabili. GPT-3.5 e Copilot (bilanciato) hanno ottenuto prestazioni particolarmente scarse, non generando una singola variante sicura.

Il sistema automatizzato sviluppato dal team è in grado di analizzare repository pubblici, riprodurre un attacco in un ambiente sandbox e, se una vulnerabilità viene confermata, generare e inviare automaticamente una patch. Per generare le patch viene utilizzato il protocollo GPT-4 e le notifiche relative ai risultati vengono inviate via email agli autori del progetto, in modo da non divulgare pubblicamente le vulnerabilità.

Dei 40.546 repository, il sistema ha identificato 41.870 file vulnerabili. Dopo averli filtrati con l’analisi statica, ne sono rimasti 8.397, di cui 1.756 vulnerabili. Sono state generate e inviate 1.600 patch valide. Tuttavia, il numero totale di progetti che hanno applicato le correzioni è stato di soli 63, meno del 15% di quelli che hanno ricevuto una notifica.

Secondo Akhundali, il motivo della scarsa risposta è che molti progetti vengono abbandonati o il codice vulnerabile non raggiunge l’ambiente di produzione. Tuttavia, questo non riduce il rischio: se la vulnerabilità viene sfruttata, può portare alla compromissione del sistema.

Gli autori osservano: gli LLM oggi stanno diventando non solo uno strumento di generazione di codice, ma anche un canale per la distribuzione di vulnerabilità. Persino i modelli più diffusi producono con sicurezza soluzioni non sicure, pur dichiarando di essere protetti.

Data la crescita degli “agenti di programmazione” e la pratica del “vibe coding”, la fiducia cieca negli assistenti AI senza analizzarne l’output è la strada diretta verso gli incidenti .

L'articolo Non fidarti del codice prodotto dalle AI! Un bug Giurassico del 2010 infetta anche GPT-4 proviene da il blog della sicurezza informatica.