Et arkiv på 313 MB ingen ba om å få sendt

Z.ai publiserte mandag kildekoden til ZCode, selskapets kodeagent, tre dager etter at en betalende abonnent viste at verktøyet pakket hele arbeidsområder og lastet dem opp til Alibabas sky uten å spørre.

Utvikleren, som publiserer som ferstar, dokumenterte oppførselen 18. september. Funnet kom under opprydding av diskplass på en MacBook Air, da katalogen ~/.zcode hadde passert 700 MB. Inni lå et øyeblikksbilde av et kommersielt prosjekt: 345 MB filer komprimert til et kryptert arkiv på 313 MB, med 42 411 filer fra arbeidsområdene.

Det meste var Git-historikk

Omtrent 87 prosent av lasten var katalogen .git. Etter ferstars oppdeling var den største delen 196,1 MB LFS-hurtiglager, fulgt av 102,2 MB commit-objekter og 0,6 MB reflogger. Det er ikke et øyeblikksbilde av koden en utvikler jobber i. Det er prosjektets historie, med hver gren og hver slettet tilstand som depotet fortsatt husker.

Nettverkskabler koblet til portene på en svitsj
Arkivene ble lagt i Alibabas objektlagringstjeneste. Illustrasjonsbilde. Vladimir Srajber · pexels · Pexels License

Arkivet ble kryptert før opplasting med konvoluttkryptering — en AES-256-CTR-innholdsnøkkel pakket med RSA-OAEP-SHA256 — og lagt på Aliyun OSS etter at legitimasjon var forhandlet med Z.ais servere. Den private nøkkelen nådde aldri brukerens maskin. Den praktiske følgen er at utvikleren ikke kunne åpne sitt eget opplastede depot, og heller ikke klienten som laget det.

Innstillingene virket ikke

ZCode hadde to innstillinger som hørtes ut som de styrte dette: “Optimize Experience” og “Repo Snapshot Indexing”. Å slå dem av stoppet ikke innsamlingen, fordi kjeden kjørte betingelsesløst så snart appen var innlogget. Å slette den ventende pakken hjalp heller ikke: i løpet av en halvtime ble et nytt arkiv på 313 MB bygget. Ett øyeblikksbilde hadde samlet 564 mislykkede opplastingsforsøk før noen merket det.

Utbedringen, og hva den ikke kan vise

Harddisker lagt ut på en lys arbeidsflate
Ett øyeblikksbilde dekket 42 411 filer fra utviklerens arbeidsområder. Illustrasjonsbilde. Marta Branco · pexels · Pexels License

Z.ai sier problemet er rettet. Administrerende direktør Zhang Peng sa at selskapet hadde fullført den nødvendige utbedringen, ifølge RuntimeWire, og deretter publiserte selskapet koden.

Depotet på github.com/zai-org/ZCode har Apache-2.0-lisens og dekker skrivebordsprogrammet, nettlesergrensesnittet, terminalagenten, backend-tjenestene, det delte grensesnittet og agentkjøretiden. Det ble opprettet 20. september og åpnet med to commits — et samlet kodeslipp snarere enn utviklingshistorikken som ville latt noen granske hvordan opplastingsveien ble skrevet, eller når den ble endret.

Z.ais eget varsel innrømmer grensen: intern behandling som skjer etter at forespørsler når selskapets gateway, ligger utenfor det klientdepotet kan bekrefte. Å publisere klienten sier hva programvaren gjør nå. Det sier ikke hva som skjedde med depoter som alt er lastet opp, om de ble slettet, eller hvem i selskapet som kunne lese dem.

Hva som avgjør fortsettelsen

Depotet har verken SECURITY.md eller publiserte sikkerhetsvarsler. De som brukte ZCode har ingen måte å bekrefte hva som ble beholdt, og ingen måte å verifisere at de distribuerte binærfilene svarer til den publiserte koden uten å bygge og sammenligne dem. Om Z.ai svarer på noen av spørsmålene, avgjør om åpen kildekode var utbedring eller reklame.