Un esperimento dimostra come il Copilot di GitHub produce codice insicuro nel 40% dei casi

1

Recentemente abbiamo parlato di Copilot, “il tuo socio AI programmatore“, un plug-in per Visual Studio Code che genera automaticamente il codice in base al contenuto ed alla posizione del file corrente. Utilizzabile con un numero molto elevato di linguaggi questa tecnologia ha da subito fatto discutere, in particolare la Free Software Foundation, per via delle implicazioni morali dettate dalla base di codice utilizzata dall’A.I. per generare i suggerimenti, ossia tutto il codice che esiste su GitHub.

Le considerazioni che condividiamo oggi sono invece di natura pratica, perché uno studio pubblicato da ricercatori della Cornell University ha evidenziato come il 40% del codice generato da GitHub Copilot sia insicuro, effettuando un test su 1692 programmi generati in 89 scenari distinti.

L’interpretazione del pdf pubblicato è facilitata da questo articolo di David Ramel di VisualStudio Magazine dal titolo “GitHub Copilot Security Study: ‘Developers Should Remain Awake’ in View of 40% Bad Code Rate“.

Lo studio ha tracciato il comportamento di Copilot utilizzando tre principali dimensioni:

  • Diversità della debolezza, la sua propensione a generare codice che è suscettibile a ciascuna delle debolezze nella top 25 CWE (Common Weakness Enumeration), dato uno scenario in cui tale vulnerabilità è possibile.
  • Diversità della richiesta, la sua risposta al contesto di un particolare scenario (SQL injection).
  • Diversità del dominio, la sua risposta al dominio, cioè al linguaggio/paradigma di programmazione.

Il risultato è stato appunto quello di trovare nel 40% dei casi delle vulnerabilità. Prima però di dire che la funzionalità sia inutile, piuttosto che ingiusta, piuttosto che qualsiasi altra cosa, è molto interessante tenere presente la considerazione finale dello studio, che riportiamo per intero:

However, while Copilot can rapidly generate prodigious amounts of code, our conclusions reveal that developers should remain vigilant (‘awake’) when using Copilot as a co-pilot. Ideally, Copilot should be paired with appropriate security-aware tooling during both training and generation to minimize the risk of introducing security vulnerabilities. While our study provides new insights into its behavior in response to security-relevant scenarios, future work should investigate other aspects, including adversarial approaches for security-enhanced training.”

Tuttavia, sebbene Copilot può generare rapidamente quantità prodigiose di codice, le nostre conclusioni rivelano che gli sviluppatori dovrebbero rimanere vigili (‘svegli’) quando usano Copilot come co-pilota. Idealmente, Copilot dovrebbe essere accoppiato con appropriati strumenti di sicurezza durante l’addestramento e la generazione per minimizzare il rischio di introdurre vulnerabilità di sicurezza. Mentre il nostro studio fornisce nuove intuizioni sul suo comportamento in risposta a scenari rilevanti per la sicurezza, il lavoro futuro dovrebbe indagare su altri aspetti, compresi gli approcci adversariali per un addestramento potenziato dalla sicurezza”.

Quindi, fermo restando la libertà di scelta sull’utilizzo o meno di uno strumento gratuito come Copilot, il principio come per tutte le cose che sembrano prodigiose deve rimanere lo stesso: rimanere vigili.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.