Ett arkiv på 313 MB som ingen bad om att få skicka

Z.ai publicerade på måndagen källkoden till ZCode, bolagets kodagent, tre dagar efter att en betalande prenumerant visat att verktyget paketerat hela arbetsytor och laddat upp dem till Alibabas moln utan att fråga.

Utvecklaren, som publicerar under namnet ferstar, dokumenterade beteendet den 18 september. Upptäckten kom när hen rensade diskutrymme på en MacBook Air och såg att katalogen ~/.zcode passerat 700 MB. Inuti låg en ögonblicksbild av ett kommersiellt projekt: 345 MB filer komprimerade till ett krypterat arkiv på 313 MB, med 42 411 filer från arbetsytorna.

Det mesta var Git-historik

Ungefär 87 procent av lasten var katalogen .git. Enligt ferstars uppdelning var den största delen 196,1 MB LFS-cache, följt av 102,2 MB commit-objekt och 0,6 MB reflogs. Det är inte en ögonblicksbild av koden en utvecklare arbetar i. Det är projektets historia, med varje gren och varje raderat tillstånd som arkivet fortfarande minns.

Nätverkskablar inkopplade i portarna på en switch
Arkiven lades upp i Alibabas objektlagringstjänst. Illustrativ bild. Vladimir Srajber · pexels · Pexels License

Arkivet krypterades före uppladdning med kuvertkryptering — en AES-256-CTR-innehållsnyckel inkapslad med RSA-OAEP-SHA256 — och lades upp på Aliyun OSS efter att autentiseringsuppgifter förhandlats med Z.ais servrar. Den privata nyckeln nådde aldrig användarens dator. Den praktiska följden är att utvecklaren inte kunde öppna sitt eget uppladdade arkiv, och inte heller klienten som skapat det.

Inställningarna fungerade inte

ZCode hade två inställningar som lät som om de styrde detta: “Optimize Experience” och “Repo Snapshot Indexing”. Att stänga av dem stoppade inte insamlingen, eftersom kedjan kördes villkorslöst så snart appen var inloggad. Att radera det väntande paketet hjälpte inte heller: inom en halvtimme byggdes ett nytt arkiv på 313 MB. En ögonblicksbild hade samlat 564 misslyckade uppladdningsförsök innan någon märkte det.

Åtgärden, och vad den inte kan visa

Hårddiskar utlagda på en ljus arbetsyta
En ögonblicksbild omfattade 42 411 filer från utvecklarens arbetsytor. Illustrativ bild. Marta Branco · pexels · Pexels License

Z.ai säger sig ha åtgärdat problemet. Vd:n Zhang Peng sade att bolaget slutfört den nödvändiga åtgärden, enligt RuntimeWire, och därefter publicerade bolaget koden.

Arkivet på github.com/zai-org/ZCode har Apache-2.0-licens och omfattar skrivbordsprogrammet, webbgränssnittet, terminalagenten, backend-tjänsterna, det delade gränssnittet och agentkörningen. Det skapades den 20 september och öppnade med två commits — en samlad kodsläpp snarare än den utvecklingshistorik som skulle låta någon granska hur uppladdningsvägen skrevs eller när den ändrades.

Z.ais eget meddelande medger gränsen: intern bearbetning som sker efter att förfrågningar nått bolagets gateway ligger utanför det som klientarkivet kan verifiera. Att publicera klienten säger vad programvaran gör nu. Det säger inte vad som hänt med arkiv som redan laddats upp, om de raderats, eller vem inne i bolaget som kunde läsa dem.

Vad som avgör fortsättningen

Arkivet saknar SECURITY.md och publicerade säkerhetsmeddelanden. De som använde ZCode har ingen mekanism för att bekräfta vad som sparats, och inget sätt att verifiera att de distribuerade binärerna motsvarar den publicerade koden utan att bygga och jämföra dem. Om Z.ai besvarar någon av frågorna avgör om öppen källkod var åtgärd eller publicitet.