Filen, der aldrig blev åbnet
Forskeren lagde en lokkefil ud. En enkelt fil i et testrepository, som assistenten aldrig blev bedt om at åbne, og som den aldrig henviste til: en kanariefugl. Derefter sendte han trafikken gennem en proxy og så efter, hvad Grok Build, xAI's kodeassistent til kommandolinjen, i virkeligheden sendte hjem. Kanariefuglen dukkede op igen i den opfangede pakke. Den havde forladt maskinen uden nogensinde at være blevet læst.
Den offentliggjorte analyse på netværksniveau af version 0.2.93 beskriver to adskilte kanaler. Den første er den, alle forventer af en cloudbaseret kodeassistent: en modelkanal, der bærer de filer, agenten reelt læser, så den kan svare. Den anden er en baggrundskanal til lagring, der sender et øjebliksbillede af hele arbejdsområdet til en lagerbucket, uanset om agenten har kigget på de filer eller ej.
Forskellen mellem de to er selve fundet. På et testrepository på 12 gigabyte flyttede modelkanalen omkring 192 kilobyte. Baggrundskanalen flyttede 5,10 gibibyte fordelt på 73 bidder af cirka 75 megabyte hver. Det er en forskel på omkring 27.800 gange. Den ene kanal udførte arbejdet. Den anden kopierede bygningen.
Blandt de filer, der blev sendt af sted, var en sporet .env, netop den filkonvention, udviklere bruger til at opbevare præcis det, der aldrig må rejse nogen steder: API-nøgler og databaseadgangskoder. Den blev sendt ordret og uden maskering.
Kontakten på skærmen var ikke kontakten på ledningen
Ethvert AI-værktøj til udviklere leveres i dag med en kontakt, der siger en variant af "hjælp med at forbedre modellen". Det er den indstilling, indkøb spørger til, som en databeskyttelsesrådgiver skriver ind i konsekvensanalysen, og som en udviklingschef peger på, når nogen spørger, om koden er sikker.
Forskeren slog den fra og tjekkede derefter, hvad serveren mente. Indstillingsendepunktet blev ved med at returnere trace_upload_enabled som true. Uploadene fortsatte.
Det er den del, der er værd at skille ud fra overskriften. Fejlen var ikke, at en kodeassistent sender kode til en server, for det er hele præmissen for en cloudbaseret kodeassistent og grunden til, at I læser vilkårene, før I installerer den. Fejlen er, at samtykkekontrollen og datastien aldrig blev forbundet med hinanden. Kontakten styrede træningen. Uploadet gik gennem et andet rør, og intet på skærmen nåede derhen.
En kontrol, der ikke kontrollerer noget, er værre end ingen kontrol, for et hold, der ser den, holder op med at kigge efter.
Rettelsen på serversiden er det egentlige fund
Den 13. juli 2026 stoppede uploadene. Det lærerige er hvordan. Der kom ingen ny klientudgivelse, intet nyt versionsnummer, ingen ændringslog, som brugerne kunne gennemgå og godkende. Den samme binære fil 0.2.93 holdt simpelthen op med at sende lageranmodninger, fordi serveren begyndte at svare med et nyt flag, der slog upload af kodebasen fra. Elon Musk sagde, at de data, der allerede var uploadet, ville blive, med hans ord, "fuldstændig og aldeles slettet".
Læs den rækkefølge igen med governance-briller. Softwarens adfærd på jeres udvikleres bærbare blev ændret på afstand, af leverandøren, uden at nogen rørte det artefakt, I havde godkendt. Det betyder, at den kunne være ændret den anden vej på nøjagtig samme måde, og fra jeres side ville det have set nøjagtig ens ud.
Det er den strukturelle lektie, og den rækker langt ud over xAI. Hvis et værktøjs dataadfærd afgøres af flag på serversiden, så fortæller en gennemgang af klienten jer, hvad den gjorde den dag, I kiggede. Den fortæller jer ikke, hvad den gør nu. At låse en version fast, læse udgivelsesnoterne og skrive under er en proces bygget til software, der leverer sin adfærd i den binære fil. Det gør de fleste AI-værktøjer ikke længere.
xAI har ikke offentliggjort, hvorfor uploadene fandtes, hvor længe data blev opbevaret, hvem der kunne nå dem, eller hvor mange brugere der var berørt. Netop de fire svar er, hvad en kunde skal bruge for at måle hændelsens omfang, og deres fravær er i sig selv information.
Hvad et europæisk hold skylder sine kunder nu
Start med den antagelse, det koster mindst at tage fejl af: behandl enhver hemmelighed, der har ligget i et repository åbnet med Grok Build, som videregivet. Udskift API-nøgler, databaseadgangskoder, signeringsnøgler og tokens. Gør det ud fra, hvilke repositories der blev åbnet, ikke ud fra hvilke filer I tror, assistenten læste, for hele pointen i fundet er, at de to mængder ikke er de samme.
Undersøg dernæst, hvad der ellers lå i de repositories. Kildekode alene er et kommercielt problem. Personoplysninger, eller adgangsoplysninger til systemer, der rummer personoplysninger, er et juridisk. Under GDPR er en AI-leverandør, der behandler jeres repository på jeres instruks, en databehandler, og en kopi af det repository, der lander i en lagerbucket uden for det aftalte formål, er en videregivelse, I skal vurdere. Jeres underretningspligt løber fra det tidspunkt, hvor I blev bekendt med det, og en leverandørs udbedring nulstiller den ikke.
Væsentlige og vigtige enheder under NIS2 bør behandle det som en hændelse i forsyningskæden og journalisere den som sådan. For det er præcis, hvad det er: en fejl i en leverandørs produkt, der flyttede jeres data et sted hen, I ikke havde valgt.
Intet af dette kræver vished om, hvad xAI gjorde med data. Det kræver kun, at I ikke lige nu kan bevise, at det var ligegyldigt.
Sådan køber I et AI-kodeværktøj efter det her
Den nyttige ændring er ikke et forbud. Hold, der forbyder AI-kodeassistenter helt, opdager som regel, at udviklerne installerede en alligevel, og nu er der ingen, der fører log over det. Den nyttige ændring er at holde op med at behandle klienten som grænsen.
Stil en leverandør tre spørgsmål, før det næste værktøj kommer på en bærbar. Hvilke endepunkter taler det med, og kan vi se det på vores eget netværk frem for i jeres dokumentation. Kan jeres server ændre, hvad den installerede klient sender, uden at I udsender en ny version, og hvis ja, hvad fortæller os så, hvornår det sker. Hvis en indstilling er slået fra hos os, hvad er så indstillingens repræsentation på serversiden, og vil I lade os verificere den.
Gør derefter svarene testbare i stedet for kontraktlige. En proxy og en eftermiddag frembragte dette fund. Det er en billigere kontrol end noget sikkerhedsspørgeskema, og det er den eneste, der måler adfærd i stedet for hensigt. Hemmeligheder bør i øvrigt slet ikke ligge i et repository, som en kodeagent overhovedet kan se: injektion af miljøvariabler ved kørsel og en administreret tjeneste til hemmeligheder forvandler denne type hændelse fra et brud til et skuldertræk.
Værktøjerne er værd at have. Det, der ikke er værd at have, er en godkendelsesproces, der læser etiketten og aldrig kigger på ledningen.
Læs videre: Skattefilerne forsvandt via IT-supporten | En forespørgsel kunne kapre din WordPress-side



