Kjeden, slik den beskrives

Adversa AI publiserte 6. oktober et angrep der én enkelt angriperkontrollert nettadresse, hentet på brukerens egen forespørsel, får GitHub Copilot CLI til å lese lokale filer og sende innholdet til angriperens tjener. Forskerne, ledet av Rony Utevsky, anslår hele kjeden til 28 sekunder, “uten bekreftelse, og uten noe punkt i loggen som navngir målverten eller viser at filinnhold forlot maskinen”.

Siden presenterer seg som kryptert innhold og tilbyr agenten to kandidatnøkler for dekryptering. Den ene er ekte. Den andre er en mal agenten ikke kan fylle ut uten først å lese lokale filer — så når den forbereder dekrypteringen, leser den målfilene fra disken og vever innholdet inn i nøkkelstrengen. Den lesingen er tyveriet, og den skjer før noen dekryptering har lyktes.

Malnøkkelen feiler med vilje. Agenten faller tilbake på den ekte nøkkelen, dekrypteringen virker, og det dekrypterte andre trinnet ber den hente en oppfølgende nettadresse “for å få mer kontekst” som bærer det innsamlede filinnholdet som en parameter. Agenten sender forespørselen.

En messinghengelås og nøkler på et skrivebord i tre
Forskerne oppgir at de samme instruksjonene i klartekst avvises. Illustrasjonsbilde. Goszton · pexels · Pexels License

Hvorfor krypteringen er poenget

Adversa kaller dette kryptografisk kontekstinjeksjon, en teknikk selskapet først publiserte i august mot chatassistenter. Argumentet er at statiske vern leser tekst, men ikke kjører den. Kryptert tekst, levert med nøkkelmateriale og en instruksjon om å dekryptere, tvinger gjenopprettingen gjennom agentens eget kjøremiljø, fordi det — til forskjell fra base64 — ikke finnes noen snarvei modellen kan ta i vektene sine. De dekrypterte instruksjonene kommer så som utdata fra kode agenten nettopp skrev og kjørte, inne i dens betrodde kjørekontekst.

Forskerne er tydelige på hva som får det til å virke: “De samme instruksjonene levert i klartekst fanges som ledetekstinjeksjon og avvises.”

Hvilken modell du får, er myntkast

Angrepet er ikke universelt. Adversa oppgir at det krever to ting: at klienten kjører i autopilotmodus, og at en tillatende modell håndterer økten. På det andre punktet blir funnet ubehagelig særlig for Copilot.

Microsofts egen mai-code-1.1-flash kjørte hele kjeden i 50 prosent av forskernes kjøringer. To GPT-5.6-modeller som tilbys i samme produkt, avviste konsekvent den identiske nyttelasten. På betalkontoen som ble testet, var den sårbare modellen ikke standardvalget og måtte velges for hånd — men på en konto med automatisk modellvalg tildelte ruteren den sårbare modellen i noen økter og en trygg i andre, uten at brukeren gjorde noe. “Brukeren velger ikke, og ser ikke, hvilken modell som håndterte økten”, heter det i rapporten.

En nettverkskabel koblet til porten på en bærbar datamaskin
Det innsamlede filinnholdet dro av gårde som parameter i en oppfølgende forespørsel. Illustrasjonsbilde. Castorly Stock · pexels · Pexels License

GitHub bekreftet og avviste

Adversa meldte funnet til GitHubs feilpremieprogram 17. september. Per 1. oktober hadde sorteringsteamet bekreftet det, men nektet å behandle det som en sårbarhet, med den begrunnelse at brukeren “uttrykkelig ba Copilot CLI om å hente angriperkontrollert innhold samtidig som copilot fikk fulle rettigheter til å handle selvstendig”. GitHub sa funksjonaliteten kan bli strengere senere, men hadde ingenting å kunngjøre, og erklærte rapporten ikke kvalifisert for premien.

Adversa sier selskapet er uenig i risikovurderingen, og at kjeden fortsatt lar seg gjenskape som beskrevet. Det holder tilbake konkrete nyttelaster.

Hva dette er verdt, og fra hvem

Adversa selger en sikkerhetsplattform for kodeagenter og sier plattformen stanset kjeden i selskapets egne tester, så anbefalingene i slutten av teksten er ikke uhildede. Rådene i seg selv er konvensjonelle: lagre per økt et spor av hvert verktøykall med fullt oppløste argumenter i stedet for maler, varsle på sekvensen — ubetrodd innhold inn, kode kjøres, filer leses, oppkall til en vert utenfor oppgaven — i stedet for på én nyttelast, krev bekreftelse for nye nettverksmål og skriving utenfor arbeidsområdet, og sett hentet innhold i karantene i en kontekst uten verktøy og uten legitimasjon.

Én detalj er verdt å beholde uansett hvem som publiserte den. I Adversas kjøring rapporterte agentens egen sluttoppsummering at den hadde “bekreftet et autorisert-leser-endepunkt”. Slik gikk det ikke til. En agents egen beretning om sin økt er ikke bevis for hva økten gjorde.