L'intelligenza artificiale continua a dare prova delle sue capacità in ogni ambito, compreso quello della sicurezza informatica. I tool di IA possono velocizzare l'individuazione delle minacce, analizzare gli alert in real time e guidare i team di sicurezza nel processo di risposta agli incidenti.
Tra le applicazioni più interessanti dell'IA nella cybersecurity c'è l'analisi del codice per individuare le vulnerabilità: i tool possono esaminare grandi codebase in pochi secondi per identificare bug e notificarli agli sviluppatori in modo da risolverli prima che arrivino in produzione.
Chris Koch, sviluppatore presso Google e ricercatore dell'Università della Pennsylvania, ha messo alla prova la capacità di GPT-3 di identificare i bug presenti in un repository GitHub contenente 129 file vulnerabili.
L'esperimento
Koch ha utilizzato text-davinci-003, una variante di GPT-3 con una context window di 4000 token, ovvero circa 3000 parole.
Poiché il modello non riesce a gestire un intero repository in una volta sola, Koch ha dovuto far scansionare a GPT-3 i file in maniera separata; ciò ha complicato l'analisi nei casi in cui le vulnerabilità erano il risultato di interazioni tra i diversi esempi. GPT-3 è riuscito comunque a individuare molti di questi bug sfruttando la conoscenza pregressa sulle librerie importate dai file.
Ogni cartella del repository corrisponde a una specifica falla e contiene file con più vulnerabilità del tipo dichiarato. Alcune porzioni di codice sono esemplificative, mentre altre si rifanno a snippet realistici presenti nelle codebase di produzione.
Oltre a individuare le vulnerabilità, Koch ha richiesto a GPT-3 di esplicitare una breve descrizione di ciascun bug per motivare l'analisi.
I risultati
GPT-3 è riuscito a individuare vulnerabilità su 85 file dei 129 del repo, per un totale di 213 bug. Considerando che Snyk Code, uno dei tool di analisi di vulnerabilità migliori sul mercato ne ha individuate soltanto 99, il risultato è molto promettente.
Va detto che Snyk Code supporta solo alcuni linguaggi di programmazione ed è riuscito ad analizzare 103 file rispetto ai 129 di GPT-3, ma in proporzione il modello di OpenAI ha ottenuto risultati migliori del tool di analisi.
Koch ha analizzato manualmente 60 delle 213 vulnerabilità individuate dal modello e ha trovato che solo 4 di esse erano falsi positivi.
In alcuni casi, pur avendo correttamente individuato i bug, GPT-3 ha formulato la spiegazione in maniera fuorviante, per esempio sbagliando i nomi delle variabili o riferendosi a numeri di linea di codice errati.
Nonostante le imprecisioni, l'esperimento ha dimostrato le enormi potenzialità del modello di OpenAI. Koch ha svolto il test a febbraio, quando GPT-4 non era stato ancora rilasciato; sarebbe interessante valutare le performance dell'ultima versione del modello e valutare quanto sia migliorato nell'individuazione delle vulnerabilità.
Considerati i limiti del modello per la scansione l'intero repository, al momento è difficile pensare a un'applicazione su larga scala di questa analisi. L'idea è integrare GPT-X e gli altri modelli nei tool di sicurezza per potenziare l'analisi delle vulnerabilità, addestrandoli su dataset specifici.
L'intelligenza artificiale ha il potenziale di migliorare significativamente il processo di analisi dei bug durante lo sviluppo, aiutando i programmatori a risolvere le anomalie prima della pubblicazione di codice e dei test in ambiente e promuovendo di conseguenza una cultura di cybersecurity più robusta.