Ti tusind stjerner og et enkelt commit
Den 14. juli offentliggjorde xAI kildekoden til Grok Build under Apache 2.0, og her til morgen havde repositoryet over ti tusind stjerner. Udgivelsen fulgte efter en test på wire-niveau, der fandt version 0.2.93 af værktøjet uploade et tracket repository, og hele dets git-historik som et bundle, til cloudlagring kontrolleret af xAI, herunder et repository, som assistenten havde fået besked på ikke at læse. Vi dækkede det fund den 14. juli, og anvisningen dengang var at rotere alle hemmeligheder, værktøjet nogensinde havde set. Den anvisning står ved magt.
At offentliggøre koden ligner det stærkest mulige svar på et fund af den slags. Det er det træk, en ingeniørorganisation gør, når den mener, at optegnelserne frikender den, og det bliver læst sådan. Så det nyttige spørgsmål er ikke, om xAI havde ret i at offentliggøre. Det er snævrere og mere praktisk: hvis du nu gik ind i det repository for at få vished om, hvad værktøjet gjorde på dine maskiner, hvad ville du så rent faktisk kunne fastslå?
Meget lidt, viser det sig, og årsagerne er strukturelle snarere end ondsindede. Repositoryet bærer et enkelt commit, skrevet af en bot den 16. juli klokken 05:46 UTC, med beskeden om, at det offentliggør harness og TUI som open source. Et enkelt commit betyder ingen historik. Der er intet før, ingen diff, ingen række af ændringer, intet at sammenligne med. Ti tusind stjerner på et repository uden historik er ti tusind mennesker, der bakker op om en gestus.
Hvad repositoryet ikke kan fortælle dig
Begynd med det ene spørgsmål, fundet faktisk rejste: hvor endte koden? Uploads gik til en Google Cloud Storage-bucket, der er navngivet i den leverede binær. I den offentliggjorte kildekode optræder det navn ikke. Det læses fra en miljøvariabel på compile-tidspunktet og bliver opløst, når binæren bygges. Den, der kompilerer udgivelsen, leverer destinationen, og kildekoden siger intet om, hvad den leverede build var rettet mod. Den offentliggjorte kode kan ikke besvare spørgsmålet, i nogen af retningerne.
Se så på den funktion, der stod for uploaden. Den er der stadig, i shell-crate'et, og den gør ikke længere noget. Den tager sine parametre, markerer dem som ubrugte, venter på kanalen, smider resultatet væk og returnerer en fejl om, at upload af sessionstilstand ikke er tilgængelig. Kroppen er fjernet, mens omgivelserne blev stående: kaldstederne er intakte, manifestet lister stadig afhængighederne, lagringshjælperne er stadig kompileret ind. Det, du kan læse, er mekanismens skelet med mekanismen taget ud.
Det er også anden gang, at rettelsen er lavet et sted, du ikke kan inspicere. De oprindelige uploads blev stoppet den 13. juli af et flag på serversiden, ikke af en klientudgivelse, og det var det skarpeste ved den første historie: den binær, dit team gennemgik og pinnede, var aldrig det, der afgjorde, hvad der forlod maskinen. Nu er koden offentlig, og destinationen er stadig et input på byggetidspunktet, og kontakten sidder stadig på serveren. Det, der kan revideres, og det, der afgør, er ikke rykket tættere på hinanden.
Fire filer flyttede med, en kom ikke frem
Der er en detalje mere, og den skal formuleres omhyggeligt, fordi den er let at overfortolke. Strengene inde i den leverede 0.2.93-binær nævner et crate ved navn xai-data-collector, der indeholder fem kildefiler: lagringsklienten, laget til cloudlagring, køen, en circuit breaker-observer og en tracker for filadgang. Det offentliggjorte repository indeholder intet crate med det navn. Det samme sæt filer ligger i et crate ved navn xai-file-utils, og fire ud af de fem svarer til hinanden. Den femte, trackeren for filadgang, findes slet ikke i den offentliggjorte kildekode.
Hvad det fastslår og ikke fastslår, er hele pointen. Det fastslår ikke hensigt. At omdøbe et crate fra noget, der beskriver indsamling af data, til noget, der beskriver håndtering af filer, er præcis det, et team gør under en oprydning før en udgivelse, og at droppe et modul, der ikke længere er koblet til noget, er almindelig husholdning. Der er ingen beviser for tilsløring her, og vi påstår ikke, at der er nogen. Det er også værd at bemærke asymmetrien i selve materialet: siden med binæren hviler på en tredjeparts udtræk af strenge, mens kildesiden kan verificeres af enhver, der kloner repositoryet.
Hvad det derimod fastslår, er, at udgivelsen ikke kan fungere som en optegnelse. Den komponent, hvis navn mest direkte beskriver sporing af en brugers filadgang, mangler, dens søskende er til stede under et andet navn, og der er ingen commit-historik, hvori nogen af de to kendsgerninger kan undersøges. Uskyldige forklaringer og skyldige forklaringer frembringer et identisk repository. Det er problemet med at behandle en offentliggørelse som et bevis: det virker kun, hvis artefaktet kan skelne mellem de to, og det kan dette ikke.
Den påstand, der aldrig blev fremsat
Giv forskeren kredit, for disciplinen på den side af historien er grunden til, at den holder. Analysen på wire-niveau blev lavet med en opsnappende proxy mod en pinnet binær, på et engangsrepository fyldt med canary-filer, og den er reproducerbar: der findes et offentligt harness, og enhver kan køre det. Målingen var kontant. Et repository på tolv gigabyte gav 5,10 gibibyte upload-trafik mod 192 kilobyte faktisk modelsamtale, et forhold på omkring otteogtyve tusind til en. Den canary-fil, assistenten havde fået besked på ikke at læse, kom ud af det opsamlede bundle i intakt stand.
Og så skrev forskeren ned, hvad testen ikke beviste. At upload ikke er træning, fordi kun transmissionen blev målt. At en enkelt opsamling ved tre gigabyte ikke blev bevaret. At en tidligere konklusion havde været forkert, fordi en netværksmåling afgrænset til processen overså uploads, der gik direkte til Google-adresser, og at den konklusion blev trukket tilbage. Et fund, der offentliggør sine egne grænser og sin egen tilbagetrækning, er et fund, du kan bruge.
Hold det op mod svarene. xAI har sagt, at virksomheden går dybt op i privatliv, respekterer kundernes valg, og at der for teams, der bruger zero data retention, aldrig gemmes spor- eller kodedata. Elon Musk sagde, at alle brugerdata, der er uploadet indtil nu, vil blive fuldstændig og aldeles slettet, og at der absolut intet vil være tilbage. Det kan sagtens passe. Ingen af delene kan kontrolleres, og sletningen kan ikke verificeres udefra. Mønsteret gennem hele denne episode er konsistent: de påstande, der kan testes, kom fra personen med proxyen, og de påstande, der ikke kan testes, kom fra leverandøren.
Tre spørgsmål, før du kalder det løst
Den lektie, der kan generaliseres, har intet med xAI at gøre, og der bliver brug for den igen inden for måneden. Open source er blevet et standardsvar på et sikkerhedsfund, og det er et godt svar, når artefaktet bærer beviser. Det gør det ikke automatisk. Så når en leverandør svarer på et fund om dine data ved at offentliggøre kode, så stil tre spørgsmål til den, før sagen lukkes.
Kan jeg se historikken? Et squashed første commit er et fotografi, ikke en optegnelse. Hvis repositoryet begynder på udgivelsesdagen, kan det ikke vise, hvad der blev ændret, og det, der undersøges, er netop en ændring. Svarer det offentliggjorte artefakt til den leverede binær? Hvis nogen adfærd af betydning fastsættes på byggetidspunktet eller holdes på en server, er kildekoden en beskrivelse af en mulighed, ikke af det, der kørte på dine maskiner. Indeholder koden den komponent, fundet pegede på? Hvis netop det, der blev fundet, ikke er i repositoryet, er dets fravær ikke et svar, uanset hvad der har forårsaget det.
Intet af dette taler for at holde kode lukket, og intet af det er en anklage. Det taler for en sondring, som jeres indkøbsproces formentlig endnu ikke foretager: offentliggørelse er en handling, der oplyser, og en revision er en proces, der frembringer en konklusion. De er ikke erstatninger for hinanden, de er ikke engang nære slægtninge, og en leverandør, der har gjort det første, har ikke gjort det andet. De teams, der behandler et link til et repository som sagen afsluttet, begår en kategorifejl, og det er den slags fejl, som først bliver synlig i bakspejlet, efter det næste fund.
Læs videre: Intet AI-lab scorede højere end et C+ på sikkerhed | Prefect købte den anden orkestrator på din liste



