Copilot-forslag inneholdt andres API-nøkler

Det er dumt å pushe hemmeligheter til git. Enda verre er det når de blir brukt som AI-treningsdata.

GitHub Copilot kan av og til foreslå kode som inneholder API-nøkler og andre hemmeligheter, avslører kinesiske forskere. 📸: Ole Petter Baugerød Stokke
GitHub Copilot kan av og til foreslå kode som inneholder API-nøkler og andre hemmeligheter, avslører kinesiske forskere. 📸: Ole Petter Baugerød Stokke Vis mer

Kodeassistenter basert på store språkmodeller, som GitHub Copilot og Amazon Code Whisperer, kan i noen tilfeller foreslå kode som inneholder API-nøkler og andre hemmeligheter som er fanget opp under trening av språkmodellen, skriver The Register.

En gruppe forskere ved The Chinese University i Hong Kong og Sun Yat-sen University i Kina har laget en forskningsrapport der de har undersøkt hvorvidt verktøy for kodefullføring kan avsløre hemmeligheter fra treningsdataene.

Og det kan de.

«Uforsiktige utviklere kan komme til å hardkode slike kredentialer i koden.»

Bygget verktøy

Hvis en utvikler ved en feil pusher kode som inneholder hemmeligheter til Github eller andre git-baserte tjenester, bør man i utgangspunktet regne disse hemmelighetene som "tapt". Du vet aldri om noen har fått tak i dem, og en API-nøkkel eller annen hemmelighet som er på avveie bør derfor tilbakekalles/ugyldiggjøres.

Uansett viser forskningsrapporten at man bør være ekstra forsiktig nå som vi har fått AI-baserte kodeassistenter:

Ikke bare kode, men også andre data du har liggende i åpne repoer kan dukke opp som kodeforslag hos andre utviklere som bruker for eksempel Copilot.

For å finne ut om dette var et problem laget forskerne et verktøy de kalte "Hardcoded Credential Revealer" (HCR).

Verktøyet kan lete etter blant annet API-nøkler, access-tokens og OAuth ID-er. Altså informasjon som bør ligge i en .env-fil eller lignende som utelukkes fra git via .gitignore.

Uforsiktige utviklere

– Uforsiktige utviklere kan komme til å hardkode slike kredentialer i koden og til og med committe dem til tjenester som GitHub, forklarer forfatterne av forskningsrapporten.

Ifølge en annen rapport som The Register viser til, committes tusenvis av nye hemmeligheter til GitHub hver dag. Rundt 100.000 repoer inneholder allerede kode der hemmeligheter er hardkodet.

Ved hjelp av verktøyet de hadde laget, fikk de kinesiske forskerne 8127 kodeforslag med hemmeligheter – hvorav 2702 inneholdt gyldige hemmeligheter.

På grunn av etiske vurderinger valgte forskerne å ikke sjekke om hemmeligheter som kunne være en personvernrisiko faktisk fungerte – som API-nøkler til betalingstjenester. Men de sjekket enkelte "harmløse" hemmeligheter, som API-nøkler til test-API-er.