Tekoälyyhteisohjelmoijat eivät ehkä synny niin paljon bugeja kuin pelkäsivät PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai.

Tekoälyapuohjelmat eivät ehkä synny niin paljon bugeja kuin pelättiin

Seuraavan sukupolven koodinsyötön työkalut, kuten GitHub Copilot, tukevat koneoppimismallit voivat auttaa ohjelmistokehittäjiä kirjoittamaan toiminnallisempaa koodia ilman, että se heikentää sen turvallisuutta.

Tämä on alustava tulos New Yorkin yliopiston tietotekniikan tutkijoiden ryhmän tekemästä, vaikkakin pienestä 58 hengen tutkimuksesta.

In paperi ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt ja Siddharth Garg kertovat, kuinka he testasivat suurten kielimallien (LLM) avulla luodun lähdekoodin turvallisuutta.

OpenAI GPT -perheen kaltaiset LLM:t on koulutettu käyttämään valtavia määriä julkista tekstidataa tai julkista lähdekoodia OpenAI:n Codexin tapauksessa, joka on GPT:n jälkeläinen ja GitHubin Copilotin perusta. Sellaisenaan ne voivat toistaa ohjelmoijien menneisyydessä tekemiä virheitä havainnollistaen maksiimia "roskat sisään, roskat ulos". Pelättiin, että nämä työkalut ruuhkautuisivat ja ehdottaisivat huonoa koodia kehittäjille, jotka lisäisivät tavaraa projekteihinsa.

Lisäksi koodin suojaus voi olla asiayhteyteen perustuvaa: koodi, joka on turvallinen erikseen, voi olla turvaton, kun se suoritetaan tietyssä järjestyksessä muiden ohjelmistojen kanssa. Nämä automaattisen täydennyksen työkalut voivat siis tarjota koodiehdotuksia, jotka itsessään ovat hyviä, mutta yhdistettynä muuhun koodiin, ovat nyt alttiina hyökkäyksille tai yksinkertaisesti rikki. On kuitenkin käynyt ilmi, että nämä työkalut eivät välttämättä tee ihmisistä yhtään huonompaa ohjelmointia.

Tietyssä mielessä tutkijat sammuttivat omaa tulipaloaan. Noin vuosi sitten kaksi samaa tietotekniikan tutkijaa osallistui artikkeliin "Sleep at the Keyboard? GitHub Copilotin koodipanosten turvallisuuden arvioiminen." Se työ löytyi noin 40 prosenttia Copilotin tuotosta sisälsi mahdollisesti hyödynnettävissä olevia heikkouksia (CWEt).

"Ero näiden kahden paperin välillä on se, että "Nukkumassa näppäimistöllä" tarkasteltiin täysin automatisoitua koodin luomista (ei ihmistä silmukassa), eikä meillä ollut ihmiskäyttäjiä, joihin verrata, joten emme voineet sanoa mitään siitä, miten. Copilotin turvallisuus verrattuna ihmisen kirjoittaman koodin turvallisuuteen", sanoi Brendan Dolan-Gavitt, molempien papereiden toinen kirjoittaja ja NYU Tandonin tietojenkäsittelytieteen ja tekniikan osaston apulaisprofessori, sähköpostissa. Rekisteri.

"Käyttäjätutkimuspaperi yrittää puuttua suoraan puuttuviin osiin antamalla puolet käyttäjistä saa apua Codexilta (Copilotin tehonlähteenä toimiva malli) ja toinen puoli kirjoittaa koodin itse. Se on kuitenkin myös kapeampi kuin "Näppäimistössä nukkumassa": tarkastelimme vain yhtä tehtävää ja yhtä kieltä (kirjoitimme linkitettyjen luettelon C-kielellä).

Viimeisimmässä raportissa "Suurten kielten mallikoodiavustajien turvallisuusvaikutukset: käyttäjätutkimus" hieman vaihteleva joukko NYU:n tutkijoita myöntää, että aiempi työ ei onnistu mallintamaan LLM-pohjaisten työkalujen, kuten Copilotin, käyttöä realistisesti.

"Ensinnäkin näissä tutkimuksissa oletetaan, että LLM (kutsumme tätä autopilottitilaksi) generoi automaattisesti koko koodin", Boffins selittää paperissaan.

"Käytännössä koodinsyötön LLM:t auttavat kehittäjiä ehdotuksissa, jotka he voivat hyväksyä, muokata tai hylätä. Tämä tarkoittaa, että vaikka ohjelmoijat, jotka ovat alttiita automaatioharhalle, saattavat naiivisti hyväksyä virheelliset täydennykset, muut kehittäjät saattavat tuottaa vähemmän bugista koodia käyttämällä säästettyyn aikaan virheitä."

Toiseksi he havaitsevat, että vaikka LLM:iden on osoitettu tuottavan bugista koodia, myös ihmiset tekevät niin. LLM-koulutustietojen virheet tulivat ihmisiltä.

Sen sijaan, että arvioitaisiin LLM:n luoman koodin virheellisyyttä yksinään, he ryhtyivät vertailemaan sitä, kuinka ihmisten kehittäjien koneoppimismallien avulla tuottama koodi eroaa itse ohjelmoinnin tuottamasta koodista.

NYU:n tietojenkäsittelytieteilijät rekrytoivat 58 kyselyyn osallistunutta – ohjelmistokehityskurssien perustutkinto-opiskelijaa ja jatko-opiskelijaa – ja jakoivat heidät ohjausryhmään, joka työskenteli ilman ehdotuksia, ja avustajaryhmään, jolla oli pääsy räätälöityyn ehdotusjärjestelmään, joka oli rakennettu OpenAI:n avulla. Codex API. He käyttivät myös Codex-mallia luodakseen vertailuksi 30 ratkaisua annettuihin ohjelmointiongelmiin. Tämä Autopilot-ryhmä toimi pääasiassa toisena kontrolliryhmänä.

Sekä Assisted- että Control-ryhmät saivat tutustua verkkoresursseihin, kuten Google ja Stack Overflow, mutta eivät pyytää muilta apua. Työ tehtiin Visual Studio Codessa avoimella lähdekoodilla rakennetussa verkkopohjaisessa säilössä Anubis.

Osallistujia pyydettiin suorittamaan ostoslistaohjelma C-ohjelmointikielellä, koska "kehittäjien on helppo ilmaista vahingossa haavoittuvia suunnittelumalleja C-kielellä" ja koska käytetty C-kääntäjän työkaluketju ei tarkista virheitä samalla tavalla kuin työkaluketjut. nykykielet, kuten Go ja Rust, tekevät.

Kun tutkijat analysoivat manuaalisesti Control- ja Assistant-ryhmien tuottamaa koodia, he havaitsivat, että toisin kuin aikaisempi työ, tekoälykoodiehdotukset eivät pahentaneet asioita yleisesti.

Näyttää selkeältä, mutta siinä on yksityiskohtia

"Emme löytäneet todisteita siitä, että Codex-apu lisää tietoturvavirheiden esiintyvyyttä", paperi totesi, mutta huomautti, että tutkimuksen pieni otoskoko tarkoittaa, että lisätutkimukset ovat perusteltuja. "Päinvastoin, on olemassa todisteita, jotka viittaavat siihen, että CWE:t/LoC [koodirivit] vähenevät Codex-avulla."

"Tätä on vaikea päätellä suurella tilastollisella varmuudella", sanoi kyberturvallisuuden tutkija ja apulaisprofessori Siddharth Garg NYU Tandonin insinööriosastolta puhelinhaastattelussa. Rekisteri.

Tätä on vaikea päätellä suurella tilastollisella varmuudella

Siitä huolimatta hän sanoi: "Tiedot viittaavat siihen, että Copilot-käyttäjien tilanne ei ollut paljon huonompi."

Dolan-Gavitt on yhtä varovainen tuloksista.

"Nykyinen käyttäjätutkimuksemme tulosten analyysi ei ole löytänyt tilastollisesti merkittäviä eroja – analysoimme tätä edelleen, myös laadullisesti, joten en tekisi tästä vahvoja johtopäätöksiä, varsinkin kun kyseessä oli pieni tutkimus (yhteensä 58 käyttäjää) ja käyttäjät olivat kaikki opiskelijoita eikä ammattikehittäjiä", hän sanoi.

"Voimme kuitenkin sanoa, että näillä käyttäjillä tässä tehtävässä tekoälyavun turvallisuusvaikutus ei todennäköisesti ollut suuri: jos sillä olisi ollut erittäin suuri vaikutus, olisimme havainneet suuremman eron näiden kahden ryhmän välillä. Teemme nyt hieman enemmän tilastollista analyysiä, jotta se tarkentuu."

Sen lisäksi tuli esiin muitakin oivalluksia. Yksi on, että Assistant-ryhmän osallistujat olivat tuottavampia, loivat enemmän koodirivejä ja suorittivat suuremman osan tehtävän toiminnoista.

"Assisted-ryhmän käyttäjät läpäisivät enemmän toiminnallisia testejä ja tuottivat enemmän toimivaa koodia", sanoi Garg ja lisäsi, että tällaiset tulokset voivat auttaa apukoodaustyökaluja etsiviä yrityksiä päättämään, ottaako ne käyttöön.

Toinen on se, että tutkijat pystyivät erottamaan Control-, Assisted- ja Autopilot-ryhmien tuottaman lähdön, mikä saattaa heikentää koskee tekoälyn huijaamisesta koulutusympäristöissä.

Boffins huomasi myös, että tekoälytyökaluja on harkittava käyttäjän virheiden yhteydessä. "Käyttäjät tarjoavat kehotteita, jotka voivat sisältää virheitä, hyväksyvät virheelliset kehotteet, jotka päätyvät "valmiisiin" ohjelmiin, sekä hyväksyvät virheitä, jotka poistetaan myöhemmin", lehdessä sanotaan. "Joissakin tapauksissa käyttäjät päätyvät myös enemmän virheisiin kuin malli ehdotti!"

Odotettavissa lisätyötä näillä linjoilla. ®

Aikaleima:

Lisää aiheesta Rekisteri