← Tutte le news
ARTICOLO
3 ottobre 2026 9 min di lettura

ZCode è pubblico su GitHub: non prova che gli upload di settembre siano stati cancellati

Secondo la stampa di settore, un agente di coding caricava su Alibaba Cloud i workspace degli utenti autenticati. L’albero pubblico di ZCode, letto il 3 ottobre, non prova che quegli upload siano stati cancellati.

Due orologi vanno tenuti separati. Il primo è la stampa di settore del 22 settembre 2026: un agente di coding, secondo i resoconti, impacchettava i workspace degli utenti autenticati, storia inclusa, li cifrava e li mandava ad Alibaba Cloud, con la chiave di decifrazione descritta come tenuta dal server. Il ricercatore ha legato quel comportamento a Repository Index e Repo Wiki. Il secondo orologio è l’albero letto il 3 ottobre 2026: un harness pubblico ampio, desktop, web e riga di comando, la cui riga di aggiornamento più recente nel README è v3.14.3 il 2026-09-23, e il cui NOTICE descrive l’egress ordinario di prodotto senza raccontare l’incidente di settembre.

Il pezzo che serve a un MSP è il vuoto fra quei due orologi. Un albero aperto aiuta ad auditare che cosa fa ora il codice pubblicato. Una storia pre-patch mancante, riportata da The Register via Ferstar, significa che l’albero non prova che cosa faceva il binario prima del drop. Le righe aziendali secondo cui gli assessment avrebbero trovato un bucket cancellato, e secondo cui i dati non sono mai stati usati per il training, restano non verificate. Sono attribuzioni di vendor e di stampa. Una card di repository pubblico non le converte in un verbale di cancellazione.

Primo piano dello schermo di un portatile con righe di codice sorgente colorato in un editor di testo scuro.
Foto: BalticServers.com (CC BY-SA 3.0), Wikimedia Commons.

Questo taglio è due diligence sul vendor, non la FAQ del buyer. Il tetto fattuale è la stessa coppia di pagine lette il 3 ottobre 2026, e le frasi restano legate a quelle pagine. Il racconto resta su ciò che quelle pagine hanno riportato. Non scende nel meccanismo, e non invita nessuno a ripetere un’indagine.

Il pezzo di The Register del 22 settembre 2026, 16:59 UTC (18:59 Europe/Rome), porta le scuse; workspace con storie di progetto impacchettati, cifrati e spediti ad Alibaba Cloud; materiale di decifrazione descritto come tenuto dal server; e il racconto di Ferstar secondo cui non c’era un interruttore nelle impostazioni, il comportamento non stava nella privacy policy, e Repository Index seguiva le pagine cloud di Repo Wiki. L’azienda ha detto che i dati non sono stati usati per addestrare modelli. Gli assessment CAICT e NSFOCUS sono claim dell’azienda, non stabiliti qui. Repo Wiki è stata rimossa. Il progetto è stato messo su GitHub. Ferstar ha criticato una storia pre-patch cancellata e, secondo il resoconto, ha detto che l’albero pubblicato non mostrava più Repo Wiki. Lo sfondo di Z.ai, quando a un lettore serve un nome e non un controllo, è la linea Zhipu associata a Tsinghua nel 2019 e una quotazione a Hong Kong. Quello sfondo non è un controllo di sicurezza e non parla di cancellazione. La pagina è The Register.

InfoWorld, lo stesso giorno, descrive un flusso attivo di default che mandava interi repository locali ad Alibaba Cloud senza consenso, e usa un uso anomalo del disco come colore per ciò che un operatore poteva aver notato. Questo articolo si ferma a quel colore. La dichiarazione aziendale su quella pagina nomina la remediation in ZCode v3.14.0. La stessa dichiarazione dice che NSFOCUS ha confermato la cancellazione del bucket di produzione che ha nominato e degli oggetti al suo interno, e dice che i dati «non sono mai stati usati per il training dei modelli». Repo Wiki e il percorso di snapshot sono descritti come rimossi. Quelle righe su cancellazione, bucket, training e assessment sono affermazioni di vendor o di stampa. I commenti di Semgrep su quella pagina, di Cris Thomas e Katie Paxton-Fear, sono una reazione di practitioner sulla disclosure dell’egress e sul minimo dei permessi di default. Non sono un finding che le copie di settembre siano sparite. La pagina è InfoWorld.

Le stringhe di versione restano non fuse. La dichiarazione aziendale riportata da InfoWorld dice remediation in v3.14.0. Il README letto il 3 ottobre 2026 dice che l’albero è stato aggiornato a v3.14.3 il 2026-09-23. Questo articolo non scrive che 3.14.3 sia la fix, e non scrive che 3.14.0 coincida col README. Entrambe le stringhe restano, con chi le ha dette attaccato a ciascuna. Un lettore che le collassa in un’unica «release patchata» ha inventato una mappa che le fonti non hanno stampato.

Il NOTICE letto con l’albero è una descrizione del comportamento dell’albero attuale che un MSP può leggere. Non è una prova su settembre. Il codice di prima parte è dichiarato sotto Apache-2.0, con la licenza in root come indica il NOTICE. I componenti di terze parti tengono i propri termini. Il NOTICE dice che il repository non promette parità di funzioni con il prodotto commerciale. Il silenzio in un albero aperto non è una promessa che il binario commerciale gli corrisponda, e non è promessa nemmeno la corrispondenza inversa.

L’output dell’AI non è un’autorizzazione a fare ciò che il modello ha suggerito. L’adattatore condiviso dell’agente, nella postura del NOTICE, non ha una sandbox di sistema operativo di default. Quella frase è un avviso di contenimento per il buyer, non una guida di setup. Le modalità di permesso chiedono la stessa misura. La configurazione condivisa ha come default una modalità build. Un’invocazione di riga di comando non interattiva che passa un prompt e non passa una modalità usa la modalità che il NOTICE chiama yolo, la quale consente operazioni ordinarie dei tool. Si legga come avviso di configurazione: un tecnico che automatizza il client può finire in una modalità permissiva senza una seconda decisione. Non è una lezione su come allargare quella modalità, e non è una lezione su come chiuderla passo per passo. Il controllo è sapere che il default esiste prima di puntare il laptop su un albero cliente.

Categorie di uscita, una riga ciascuna, poi stop. Le chiamate al modello possono includere prompt, storia, codice, diff e risultati dei tool. Un gateway ufficiale di coding-plan può reindirizzare host compatibili con Anthropic. Il sync SSH o WSL può spostare configurazione del provider e token nell’ambiente remoto. La condivisione di sessione può caricare una proiezione della conversazione. Il feedback può caricare screenshot e, se si è optato, log diagnostici, con una credenziale di upload verso object storage. Hook e MCP possono eseguire comandi. Quelle righe sono intestazioni che un MSP può trovare in NOTICE.md sull’albero corrente. Non sono una mappa di ciò che è uscito a settembre, e non sono evidenza che le copie di settembre siano state rimosse. Il file è NOTICE.md.

Fatti del README che vanno separati dall’incidente: il progetto presenta superfici desktop, web e riga di comando; nomina pnpm bootstrap come ingresso di setup; e un flusso remoto o SSH può caricare asset di sviluppo via SFTP da un CDN mock locale quando uno sviluppatore sceglie «download locally then upload». È un percorso di sviluppo documentato. Non è il comportamento Repo Wiki di settembre, e fondere i due laverebbe un incidente di stampa in una comodità da sviluppatore. Il README non contiene le scuse, la claim sul bucket, né una retention. Un lettore che clona solo il repository non è rassicurato da quel silenzio. Il file è README.md, riga di aggiornamento «2026-9-23:更新至 ZCode v3.14.3 版本.». La card pubblica letta lo stesso giorno è github.com/zai-org/ZCode.

La diligence qui è un inventario e un insieme di domande, non un takedown e non una sfida. Quali tecnici hanno ancora una build di ZCode precedente alla pubblicazione è una domanda a cui il repository pubblico non risponde. Un clone di zai-org/ZCode dopo il drop di settembre dice qualcosa su chi ha prelevato l’albero aperto. Non dice nulla sull’installer che era già su un laptop. L’elenco asset dell’MSP deve includere quelle build più vecchie, altrimenti l’elenco è una lista di clone che finge di essere una lista di esposizione.

Gli alberi cliente che erano aperti nel client durante la finestra riportata meritano una conversazione di rotazione dei secret nel senso OWASP ordinario: chiavi nell’albero, token in configurazione, storia che ricorda entrambi. La stampa descrive un percorso attivo di default. Non consegna ad Altovar una lista di vittime, e questo articolo non ne inventa una. La rotazione è una conversazione sul raggio d’impatto, non una claim che ogni installazione abbia mandato un workspace.

Chiedere al vendor, per iscritto, lo scope dell’assessment: che cosa è stato chiesto a CAICT e NSFOCUS di guardare, quale finestra, e che cosa «cancellato» era definito includere. Finché quello scope non è nelle mani del cliente, la frase resta non verificata. «Confermato» è un aggettivo. Lo scope è il documento.

Trattare il drop open source come un audit dell’albero pubblicato più NOTICE. Trattare le stelle come rumore di popolarità. La card HTML il 3 ottobre 2026 diceva 7.335 stelle. Quel conteggio è la card, non una conferma di API: il cross-check REST di GitHub ha restituito un 403 di rate limit, quindi nemmeno il conteggio dei commit è stato rifatto. Un pulse del 23 settembre aveva conservato circa 6.460 stelle. Questo articolo non grafica la differenza, perché una cifra è una card di pagina e l’altra è una nota di tavolo più vecchia che l’API non ha riverificato oggi. La popolarità non è adozione, e l’adozione non è un certificato di cancellazione.

Il linguaggio contrattuale può essere corto, perché la FAQ del buyer porta già la forma lunga. Opt-in esplicito per qualunque indice o snapshot. Un’allowlist di egress. Nessun percorso silenzioso verso object store. Evidenza di cancellazione che sia più di una frase pubblica. La quinta richiesta, un albero aperto audita solo i file di oggi, è il punto di questa timeline: NOTICE è onesto sull’egress corrente e silenzioso su settembre. Non dire a un lettore di attaccare il vendor, di andare a cercare nei bucket, o di tenersi un client vecchio come arma. L’azione è policy, una conversazione di rotazione, e uno scope scritto.

Il prossimo RFP chiederà il commit che ha rimosso l’uploader, e un import schiacciato non avrà quel commit da mostrare.Speculazione — tavolo due diligence

Tre righe chiudono gli orologi. Prima: la stampa del 22 settembre descrive una classe di upload silenzioso di workspace; le claim di remediation dell’azienda restano non verificate; v3.14.0 è il numero dell’azienda via InfoWorld. Seconda: il repository era ancora pubblico il 3 ottobre 2026, la card HTML mostrava 7.335 stelle senza conferma di API, il README dice v3.14.3 datato 2026-09-23, NOTICE è la lista onesta dell’egress di oggi, e Apache-2.0 è la licenza di prima parte dichiarata. Terza: l’azione dell’MSP è policy, una conversazione di rotazione, e uno scope di assessment scritto. Non è un testo di metodo.

In questo pezzo non c’è una riga di certificazione sovrana. Un controllo di isolamento applicativo non certifica questo vendor, e l’unico posto in cui quel controllo sta è la FAQ del buyer, non un secondo atterraggio qui. La telemetria di gateway non fa parte di questa storia.