Det er ingen hemmelighet at AI-baserte kodeassistenter som GitHub Copilot kan foreslå kode som inneholder sikkerhetshull og sårbarheter. AI-assistentene forstår jo ikke koden, men foreslår ting den har sett før basert på hva som er mest sannsynlig.
ChatGPT lagde nesten bare usikker kode. Og sier bare i fra hvis du spør
Nå melder InfoWorld at sikkerhetsselskapet Snyk advarer om en annen fare ved ukritisk bruk av kodeassistenter:
– Når Copilot foreslår kode, så kan den utilsiktet kopiere eksisterende sårbarheter og dårlig praksis som finnes i "nabofilene". Dette kan føre til usikker kodepraksis og åpne for en rekke sikkerhets-sårbarheter, skriver Randall Degges, sjef for "developer relations" i Snyk, i et blogginnlegg.
Det er verdt å være oppmerksom på at Snyk selger verktøy som skal finne sikkerhetshull i programkode, og derfor har en egeninteresse av å hevde dette.
Koden blir gradvis mer usikker
Det at kodeassistenter foreslår mer usikker kode hvis du allerede har skrevet usikker kode er kanskje ikke så rart:
- Noe av det som skiller gode kodeassistenter fra dårlige er at de gode skjønner konteksten de jobber i, og kommer med forslag som samsvarer med hvordan du har gjort ting tidligere.
- Med andre ord: Har du allerede skrevet en kodesnutt som inneholder et sikkerhetshull, er det med andre ord sannsynlig at kodeassistenten vil foreslå at du skriver den samme koden på et senere tidspunkt.
- Koden vil dermed kunne bli mer og mer usikker over tid etter hvert som kodeassistenten ber deg gjenta de gamle tabbene dine.
– På den annen side, hvis kodebasen din allerede er veldig sikker, så er det mindre sannsynlig at Copilot vil generere kode med sikkerhetsproblemer, skriver Degges.
Kodekvaliteten synker, AI får skylda
Bedre Copilot har gjort problemet større
Degges mener problemet med at allerede eksisterende sårbarheter blir gjentatt har blitt større etter hvert som kodeassistentene har blitt bedre – og peker spesifikt på GitHub Copilot.
I starten kunne nemlig Copilot bare se på den ene filen du kodet i, men nå inkluderes mange flere filer i konteksten slik at forslagene du får skal bli mer relevante.
Ifølge GitHub skal fordelen med dette være at antallet aksepterte Copilot-forslag har økt fra rundt 20 prosent til 35 prosent.
– Men hva om utviklerne dine på det prosjektet ikke har en sterk sikkerhetsbakgrunn? Hva om disse prosjektene allerede har sikkerhetsmangler og kvalitetsmessige feil som befinner seg i prosjektet ditt som teknisk gjeld du ikke har kontroll på? spør Degges.
Han oppfordrer utviklere til å alltid manuelt gjennomgå og vurdere kode generert av kodeassistenter med tanke på å identifisere og rette sårbarheter.
– Det er viktig å huske på at generative AI-kodeassistenter som Copilot ikke forstår kode-semantikk, og derfor ikke kan vurdere koden. I praksis imiterer verktøyet bare kode den har sett tidligere under trening av modellen.