AI-medprogrammerare kommer kanske inte att skapa så många buggar som man fruktade PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

AI-medprogrammerare kommer kanske inte att skapa så många buggar som befarat

Maskininlärningsmodeller som driver nästa generations kodkompletteringsverktyg som GitHub Copilot kan hjälpa mjukvaruutvecklare att skriva mer funktionell kod utan att göra den mindre säker.

Det är det preliminära resultatet av en om än liten 58-personers undersökning gjord av en grupp datavetare vid New York University.

In ett papper distribueras via ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt och Siddharth Garg berättar om hur de sätter säkerheten för källkod skapad med hjälp av stora språkmodeller (LLM) på prov.

LLM:er som OpenAI GPT-familjen har tränats på enorma mängder offentlig textdata, eller offentlig källkod i fallet med OpenAI:s Codex, en GPT-ättling och grunden till GitHubs Copilot. Som sådana kan de återskapa fel som gjorts tidigare av mänskliga programmerare, vilket illustrerar maximen "skräp in, skräp ut." Det fanns en rädsla för att dessa verktyg skulle återuppstå och föreslå dålig kod för utvecklare, som skulle infoga sakerna i sina projekt.

Dessutom kan kodsäkerhet vara kontextuell: kod som är säker isolerat kan vara osäker när den körs i en viss sekvens med annan programvara. Så dessa automatiska kompletteringsverktyg kan erbjuda kodförslag som i sig är bra, men kopplade till annan kod, nu är sårbara för attacker eller helt enkelt trasiga. Som sagt, det visar sig att dessa verktyg faktiskt inte gör människor sämre på att programmera.

I någon mening släckte forskarna sin egen eld. För ungefär ett år sedan bidrog två av samma datavetare till en artikel med titeln "Sover vid tangentbordet? Bedömer säkerheten för GitHub Copilots kodbidrag.” Det arbetet hittat ungefär 40 procent av produktionen från Copilot inkluderade potentiellt exploaterbara svagheter (CWE).

"Skillnaden mellan de två tidningarna är att "Som vid tangentbordet" tittade på helautomatisk kodgenerering (ingen människa i slingan), och vi hade inga mänskliga användare att jämföra med, så vi kunde inte säga något om hur säkerheten för Copilots jämfört med säkerheten för mänsklig skriven kod, säger Brendan Dolan-Gavitt, medförfattare på både tidningar och biträdande professor vid datavetenskap och ingenjörsavdelningen vid NYU Tandon, i ett mejl till Registret.

"Användarstudiepapperet försöker ta itu med de saknade bitarna direkt genom att låta hälften av användarna få hjälp från Codex (modellen som driver Copilot) och låta den andra hälften skriva koden själva. Men det är också smalare än "Som vid tangentbordet": vi tittade bara på en uppgift och ett språk (att skriva en länkad lista i C)."

I den senaste rapporten, "Security Impplications of Large Language Model Code Assistants: A User Study", erkänner en något varierad uppsättning NYU-forskare att tidigare arbete misslyckas med att modellera användningen av LLM-baserade verktyg som Copilot realistiskt.

"För det första antar dessa studier att hela koden genereras automatiskt av LLM (vi kommer att kalla detta autopilotläge)", förklarar boffinerna i sin tidning.

"I praktiken hjälper LLM:er för kodkomplettering utvecklare med förslag som de kommer att välja att acceptera, redigera eller avvisa. Detta innebär att även om programmerare som är benägna till automatiseringsbias på ett naivt sätt accepterar buggyfullbordanden, kan andra utvecklare producera mindre buggykod genom att använda den sparade tiden för att fixa buggar.”

För det andra observerar de att medan LLM har visat sig producera buggykod, gör människor det också. Buggarna i LLM-utbildningsdata kom från människor.

Så istället för att bedöma bugginess av LLM-genererad kod på egen hand, satte de sig för att jämföra hur koden som produceras av mänskliga utvecklare med hjälp av maskininlärningsmodeller skiljer sig från kod som produceras av programmering som fungerar på egen hand.

NYUs datavetare rekryterade 58 undersökningsdeltagare – studenter och doktorander i programvaruutvecklingskurser – och delade upp dem i en kontrollgrupp, som skulle arbeta utan förslag, och en assisterad grupp, som hade tillgång till ett anpassat förslagssystem byggt med OpenAI Codex API. De använde också Codex-modellen för att skapa 30 lösningar på de givna programmeringsproblemen som en jämförelse. Denna autopilotgrupp fungerade huvudsakligen som en andra kontrollgrupp.

Både Assisted- och Control-grupperna fick konsultera webbresurser, som Google och Stack Overflow, men inte be andra om hjälp. Arbetet utfördes i Visual Studio Code i en webbaserad container byggd med öppen källkod Anubis.

Deltagarna ombads att slutföra ett inköpslistprogram med programmeringsspråket C eftersom "det är lätt för utvecklare att oavsiktligt uttrycka sårbara designmönster i C" och eftersom C-kompilatorns verktygskedja som används inte kontrollerar fel i samma grad som verktygskedjor för moderna språk, som Go och Rust, gör det.

När forskarna manuellt analyserade koden som producerats av kontroll- och assistentgrupperna fann de att, i motsats till tidigare arbete, AI-kodförslag inte gjorde saken värre totalt sett.

Ser tydligt ut, men det finns detaljer

"[Vi fann inga bevis som tyder på att Codex-hjälp ökar förekomsten av säkerhetsbuggar", konstaterade tidningen, samtidigt som det noterade att studiens lilla urvalsstorlek innebär att ytterligare studier är motiverade. "Tvärtom, det finns några bevis som tyder på att CWEs/LoC [kodrader] minskar med hjälp från Codex."

"Det är svårt att avsluta detta med mycket statistiskt tillförlitlighet", sa Siddharth Garg, en cybersäkerhetsforskare och docent vid ingenjörsavdelningen vid NYU Tandon, i en telefonintervju med Registret.

Det är svårt att avsluta detta med stor statistisk tillförsikt

Icke desto mindre sa han, "Datan tyder på att Copilot-användare inte hade det mycket sämre."

Dolan-Gavitt är på samma sätt försiktig med fynden.

"Nuvarande analys av våra användarstudieresultat har inte hittat några statistiskt signifikanta skillnader – vi analyserar fortfarande detta, inklusive kvalitativt, så jag skulle inte dra några starka slutsatser av detta, särskilt eftersom det var en liten studie (58 användare totalt) och Användare var alla studenter snarare än professionella utvecklare”, sa han.

"Ändå kan vi säga att med dessa användare, på denna uppgift, var säkerhetseffekten av att ha AI-assistans förmodligen inte stor: om det hade en mycket stor inverkan, skulle vi ha observerat en större skillnad mellan de två grupperna. Vi gör lite mer statistisk analys för att göra det exakt nu."

Utöver det dök det upp några andra insikter. En är att Assistentgruppsdeltagare var mer produktiva, genererade fler rader kod och utförde en större del av funktionerna i uppdraget.

"Användare i Assisted-gruppen klarade fler funktionella tester och producerade mer funktionell kod," sa Garg och tillade att resultat av det här slaget kan hjälpa företag som tittar på hjälpmedel för kodning att besluta om de ska distribueras.

En annan är att forskarna kunde särskilja resultatet som producerades av kontroll-, assisterad- och autopilotgrupperna, vilket kan dämpa oro om fusk med AI-kraft i utbildningsmiljöer.

Boffinerna fann också att AI-verktyg måste beaktas i samband med användarfel. "Användare tillhandahåller uppmaningar som kan inkludera buggar, acceptera buggyprompts som hamnar i de "slutförda" programmen samt acceptera buggar som senare tas bort, säger tidningen. "I vissa fall slutar användare också med fler buggar än vad modellen föreslog!"

Räkna med ytterligare arbete i denna linje. ®

Tidsstämpel:

Mer från Registret