I co-programmatori di intelligenza artificiale forse non genereranno tanti bug quanto temuto PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

I co-programmatori di IA forse non genereranno tutti i bug temuti

I modelli di apprendimento automatico che alimentano gli strumenti di completamento del codice di nuova generazione come GitHub Copilot possono aiutare gli sviluppatori di software a scrivere codice più funzionale, senza renderlo meno sicuro.

Questo è il risultato provvisorio di un piccolo sondaggio di 58 persone condotto da un gruppo di scienziati informatici della New York University.

In un documento distribuito tramite ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt e Siddharth Garg raccontano come hanno messo alla prova la sicurezza del codice sorgente creato con l'aiuto di Large Language Model (LLM).

Gli LLM come la famiglia OpenAI GPT sono stati formati su enormi quantità di dati di testo pubblico o codice sorgente pubblico nel caso di Codex di OpenAI, un discendente di GPT e la base di GitHub's Copilot. In quanto tali, possono riprodurre errori commessi in passato da programmatori umani, illustrando la massima "spazzatura dentro, spazzatura fuori". C'era il timore che questi strumenti rigurgitassero e suggerissero codice errato agli sviluppatori, che avrebbero inserito le cose nei loro progetti.

Inoltre, la sicurezza del codice può essere contestuale: il codice protetto in isolamento può non essere sicuro se eseguito in una sequenza particolare con altro software. Quindi, questi strumenti di completamento automatico possono offrire suggerimenti di codice che da soli vanno bene, ma collegati ad altro codice, ora sono vulnerabili agli attacchi o semplicemente rotti. Detto questo, si scopre che questi strumenti potrebbero in realtà non peggiorare gli esseri umani nella programmazione.

In un certo senso, i ricercatori stavano spegnendo il proprio fuoco. Circa un anno fa, due degli stessi informatici hanno contribuito a un articolo intitolato “Dormire alla tastiera? Valutare la sicurezza dei contributi del codice di GitHub Copilot." Quel lavoro trovato circa cento 40 dei risultati di Copilot includevano debolezze potenzialmente sfruttabili (CWE).

"La differenza tra i due articoli è che 'Asleep at the Keyboard' stava esaminando la generazione di codice completamente automatizzata (nessun essere umano nel ciclo) e non avevamo utenti umani con cui confrontarci, quindi non potevamo dire nulla su come la sicurezza di Copilot rispetto alla sicurezza del codice scritto dall'uomo", ha affermato Brendan Dolan-Gavitt, coautore di entrambi i documenti e assistente professore nel dipartimento di informatica e ingegneria presso la NYU Tandon, in un'e-mail a Il registro.

"Il documento di studio dell'utente cerca di affrontare direttamente quei pezzi mancanti, facendo in modo che metà degli utenti riceva assistenza da Codex (il modello che alimenta Copilot) e l'altra metà scriva il codice da sola. Tuttavia, è anche più ristretto di "Addormentato sulla tastiera": abbiamo esaminato solo un'attività e una lingua (scrivendo un elenco collegato in C)."

Nell'ultimo rapporto, "Security Implications of Large Language Model Code Assistants: A User Study", una serie leggermente varia di ricercatori della NYU riconosce che il lavoro precedente non riesce a modellare realisticamente l'utilizzo di strumenti basati su LLM come Copilot.

"In primo luogo, questi studi presuppongono che l'intero codice sia generato automaticamente dall'LLM (lo chiameremo modalità pilota automatico)", spiegano i boffin nel loro articolo.

“In pratica, gli LLM di completamento del codice assistono gli sviluppatori con suggerimenti che sceglieranno di accettare, modificare o rifiutare. Ciò significa che mentre i programmatori inclini al pregiudizio dell'automazione potrebbero accettare ingenuamente completamenti con bug, altri sviluppatori potrebbero produrre meno codice con bug utilizzando il tempo risparmiato per correggere i bug.

In secondo luogo, osservano che mentre è stato dimostrato che gli LLM producono codice buggato, lo fanno anche gli esseri umani. I bug nei dati di addestramento LLM provenivano dalle persone.

Quindi, piuttosto che valutare da solo il bug del codice generato da LLM, hanno deciso di confrontare come il codice prodotto da sviluppatori umani assistiti da modelli di apprendimento automatico differisca dal codice prodotto dalla programmazione che lavora in proprio.

Gli informatici della NYU hanno reclutato 58 partecipanti al sondaggio - studenti universitari e laureati in corsi di sviluppo software - e li hanno divisi in un gruppo di controllo, che avrebbe lavorato senza suggerimenti, e un gruppo assistito, che aveva accesso a un sistema di suggerimenti personalizzato creato utilizzando OpenAI Codice API. Hanno anche utilizzato il modello Codex per creare 30 soluzioni ai problemi di programmazione dati come punto di confronto. Questo gruppo di pilota automatico funzionava principalmente come un secondo gruppo di controllo.

Sia il gruppo Assisted che quello di controllo potevano consultare risorse web, come Google e Stack Overflow, ma non chiedere aiuto ad altri. Il lavoro è stato svolto in Visual Studio Code all'interno di un contenitore basato sul Web creato con open source Anubis.

Ai partecipanti è stato chiesto di completare un programma di lista della spesa utilizzando il linguaggio di programmazione C perché "è facile per gli sviluppatori esprimere inavvertitamente modelli di progettazione vulnerabili in C" e perché la toolchain del compilatore C utilizzata non controlla gli errori nella stessa misura delle toolchain per lingue moderne, come Go e Rust, lo fanno.

Quando i ricercatori hanno analizzato manualmente il codice prodotto dai gruppi di controllo e assistente, hanno scoperto che, contrariamente al lavoro precedente, i suggerimenti sul codice dell'IA non peggioravano le cose nel complesso.

Sembra chiaro, ma ci sono dettagli

"[Non] abbiamo trovato prove che suggeriscano che l'assistenza del Codex aumenti l'incidenza dei bug di sicurezza", affermava il documento, pur osservando che la piccola dimensione del campione dello studio significa che sono necessari ulteriori studi. "Al contrario, ci sono alcune prove che suggeriscono che CWEs/LoC [linee di codice] diminuiscono con l'assistenza del Codex."

"È difficile concludere questo con molta sicurezza statistica", ha affermato Siddharth Garg, ricercatore di sicurezza informatica e professore associato nel dipartimento di ingegneria della NYU Tandon, in un'intervista telefonica con Il registro.

È difficile concludere questo con molta sicurezza statistica

Tuttavia, ha affermato: "I dati suggeriscono che gli utenti di Copilot non stavano molto peggio".

Dolan-Gavitt è altrettanto cauto riguardo ai risultati.

"L'attuale analisi dei risultati del nostro studio sugli utenti non ha riscontrato differenze statisticamente significative - lo stiamo ancora analizzando, anche qualitativamente, quindi non trarrei conclusioni forti da questo, soprattutto perché si trattava di un piccolo studio (58 utenti in totale) e il gli utenti erano tutti studenti piuttosto che sviluppatori professionisti", ha affermato.

“Tuttavia, possiamo dire che con questi utenti, su questo compito, l'impatto sulla sicurezza dell'assistenza dell'IA probabilmente non è stato grande: se avesse avuto un impatto molto grande, avremmo osservato una differenza maggiore tra i due gruppi. Stiamo facendo un po' più di analisi statistica per renderlo preciso in questo momento".

Oltre a ciò, sono emerse alcune altre intuizioni. Uno è che i partecipanti al gruppo dell'assistente sono stati più produttivi, generando più righe di codice e completando una frazione maggiore delle funzioni del compito.

"Gli utenti del gruppo Assisted hanno superato più test funzionali e prodotto codice più funzionale", ha affermato Garg, aggiungendo che risultati di questo tipo possono aiutare le aziende che cercano strumenti di codifica assistiva a decidere se implementarli.

Un altro è che i ricercatori sono stati in grado di distinguere l'output prodotto dai gruppi Control, Assisted e Autopilot, che potrebbero attenuare preoccupazioni sull'inganno del potere dell'IA negli ambienti educativi.

I boffin hanno anche scoperto che gli strumenti di intelligenza artificiale devono essere considerati nel contesto dell'errore dell'utente. "Gli utenti forniscono prompt che possono includere bug, accettano prompt buggy che finiscono nei programmi 'completati' e accettano bug che vengono successivamente rimossi", afferma il documento. "In alcuni casi, gli utenti finiscono anche con più bug di quelli suggeriti dal modello!"

Aspettatevi un ulteriore lavoro in questo senso. ®

Timestamp:

Di più da Il registro