Esplorare l'impatto degli assistenti AI come GitHub Copilot sulla sicurezza del codice

Un gruppo di ricercatori della Stanford University ha studiato l'impatto dell'utilizzo di assistenti intelligenti durante la scrittura del codice sulla comparsa di vulnerabilità nel codice. Abbiamo preso in considerazione soluzioni basate sulla piattaforma di machine learning OpenAI Codex, come GitHub Copilot, che consentono di generare blocchi di codice abbastanza complessi, fino a funzioni già pronte. Le preoccupazioni sono legate al fatto che, poiché per addestrare il modello di apprendimento automatico è stato utilizzato codice reale proveniente da repository GitHub pubblici, inclusi quelli contenenti vulnerabilità, il codice sintetizzato potrebbe ripetere errori e suggerire codice che contiene vulnerabilità e inoltre non tiene conto la necessità di eseguire controlli aggiuntivi durante l'elaborazione di dati esterni.

Lo studio ha coinvolto 47 volontari con diverse esperienze nella programmazione - da studenti a professionisti con dieci anni di esperienza. I partecipanti sono stati divisi in due gruppi: sperimentale (33 persone) e controllo (14 persone). Entrambi i gruppi avevano accesso a qualsiasi libreria e risorsa Internet, incluso l'utilizzo di esempi già pronti da Stack Overflow. Al gruppo sperimentale è stata data l'opportunità di utilizzare l'assistente AI.

Ad ogni partecipante sono state assegnate 5 attività relative alla scrittura di codice in cui è potenzialmente facile commettere errori che portano a vulnerabilità. Ad esempio, c'erano attività sulla scrittura di funzioni di crittografia e decrittografia, utilizzo di firme digitali, elaborazione di dati coinvolti nella formazione di percorsi di file o query SQL, manipolazione di grandi numeri nel codice C, elaborazione di input visualizzati nelle pagine web. Per considerare l'impatto dei linguaggi di programmazione sulla sicurezza del codice ottenuto utilizzando gli assistenti AI, gli incarichi hanno riguardato Python, C e JavaScript.

Di conseguenza, è emerso che i partecipanti che hanno utilizzato un assistente AI intelligente basato sul modello codex-davinci-002 hanno prodotto un codice significativamente meno sicuro rispetto ai partecipanti che non hanno utilizzato un assistente AI. In generale, solo il 67% dei partecipanti al gruppo che utilizzava l'assistente AI è stato in grado di fornire un codice corretto e sicuro, mentre nell'altro gruppo questa cifra era del 79%.

Allo stesso tempo, gli indicatori di autostima sono stati invertiti: i partecipanti che hanno utilizzato l'assistente AI credevano che il loro codice sarebbe stato più sicuro di quello dei partecipanti dell'altro gruppo. Inoltre, è stato notato che i partecipanti che si fidavano meno dell'assistente AI e passavano più tempo ad analizzare e apportare modifiche ai suggerimenti forniti creavano meno vulnerabilità nel codice.

Ad esempio, il codice copiato dalle librerie crittografiche conteneva valori dei parametri predefiniti più sicuri rispetto al codice suggerito dall'assistente AI. Inoltre, quando si utilizza l'assistente AI, è stata corretta la scelta di algoritmi di crittografia meno affidabili e l'assenza di autenticazione dei valori restituiti. Nell'attività di manipolazione del numero C, il codice scritto utilizzando l'assistente AI presentava più errori con conseguente overflow di numeri interi.

Si segnala, inoltre, uno studio analogo di un gruppo della New York University, condotto a novembre con il coinvolgimento di 58 studenti, ai quali è stato chiesto di implementare una struttura per l'elaborazione di una lista della spesa in C. I risultati hanno mostrato un impatto trascurabile dell'assistente AI sulla sicurezza del codice: gli utenti che hanno utilizzato l'assistente AI hanno commesso, in media, circa il 10% in più di errori relativi alla sicurezza.

Esplorare l'impatto degli assistenti AI come GitHub Copilot sulla sicurezza del codice


Fonte: opennet.ru

Aggiungi un commento