Il sistema basato su AI GitHub Copilot crea codice vulnerabile in circa il 40% dei casi

Posted by

Il codice generato dall’assistente alla programmazione è buggato nel migliore dei casi e potenzialmente vulnerabile agli attacchi nel peggiore dei casi.

Scienziati della Tandon School of Engineering, New York University, hanno testato il sistema di intelligenza artificiale GitHub Copilot per la sicurezza e hanno scoperto che circa il 40% delle volte, il codice generato dall’assistente di programmazione è nel migliore dei casi bug e nel peggiore potenzialmente vulnerabile agli attacchi.

Secondo An Empirical Cybersecurity Evaluation of GitHub Copilot’s Code Contributions, i ricercatori hanno creato 89 script di sviluppo del codice per Copilot, risultando in 1.692 programmi. Come si è scoperto, circa il 40% delle soluzioni conteneva vulnerabilità o difetti di progettazione che potevano essere sfruttati da un utente malintenzionato.

Copilot è disponibile per i beta test privati ​​come estensione di Microsoft Visual Studio Code. Il sistema consente agli sviluppatori di descrivere la funzionalità in una riga di commento e quindi tenta di generare codice che corrisponda alla descrizione. Copilot può anche prevedere da nomi di variabili e funzioni e altri suggerimenti cosa scriverà lo sviluppatore in seguito.

I ricercatori hanno esaminato tre aspetti distinti dei risultati di Copilot: la misura in cui genera codice che visualizza un elenco delle 25 vulnerabilità più comuni; la probabilità che vari suggerimenti generino vulnerabilità di SQL injection; e come gestisce i suggerimenti di codice per le lingue meno popolari (come Verilog).

Secondo gli esperti, in un certo numero di casi Copilot ha creato in linguaggio C utilizzando puntatori malloc() senza verificare che non siano NULL, codice con credenziali incorporate, codice che ha passato input utente non attendibile direttamente alla riga di comando e un codice che visualizza più delle ultime quattro cifre del numero di previdenza sociale statunitense.

Vuoi commentare? Accendi la discussione