Twój kod wyślemy do chmury, ale kluczem nie podzielimy się z tobą
Chiński asystent kodowania ZCode po cichu tworzył zaszyfrowane archiwa repozytoriów użytkowników i wysyłał je na serwery Alibaby - a klucz do odszyfrowania leżał wyłącznie po stronie Z.ai.

Ten news ukazał się 9 godzin po komunikacie źródła.
👁 112 przeczytań
564 - tyle razy plik próbował się wysłać, zanim Ferstar w ogóle zauważył, że istnieje. Chiński programista zajrzał w piątek do lokalnego katalogu aplikacji ZCode i znalazł 313-megabajtowe zaszyfrowane archiwum czekające w kolejce do wysyłki na serwery Alibaby. Mniejszy plik zdążył już odpłynąć.
Sam nie mógł zajrzeć do środka własnego archiwum. I to jest właśnie ten detal, który wynosi całą sprawę poza kategorię zwykłej skargi na prywatność.
Archiwum, którego właściciel nie może otworzyć
Ferstar opisał sytuację publicznie: archiwum zawierało migawkę komercyjnego projektu, nad którym pracował, wraz z pełną historią repozytorium Git. Klucz prywatny potrzebny do odszyfrowania siedział na serwerach Z.ai - ani on, ani klient ZCode nie miał do niego dostępu. Opcja przesyłania była domyślnie włączona i - jak twierdził Ferstar - nie było żadnego przycisku, żeby ją wyłączyć. Niezależnie od niego blogger Feng Ruohang napisał tego samego piątku, że w swoich logach widział co najmniej trzy wysłane pliki. Historię jako pierwsi opisali Minxiao Chang i Wency Chen dla South China Morning Post.
Samo 313 megabajtów to najmniej interesująca liczba w tej historii. Katalog .git w repozytorium nie zawiera tylko bieżących plików - trzyma każdą zmianę od początku projektu. Poświadczenia, które ktoś kiedyś omyłkowo wrzucił do historii i potem unieważnił, zostają. Zostają też porzucone gałęzie, wewnętrzne nazwy hostów, wiadomości przy commitach, które nikt nie pisał z myślą, że kiedykolwiek przeczyta je ktoś z zewnątrz. To jest inny rząd wrażliwości niż zwykły plik roboczy.
Błąd czy zaprojektowana funkcja
Z.ai przeprosiło w piątek w oficjalnym kanale na Feishu i ogłosiło, że problem został rozwiązany. Oświadczenie, przedrukowane w całości na V2EX, wskazuje na funkcję indeksowania repozytoriów w ZCode, która służy do odtwarzania sesji po awarii, cofania wersji i generowania tzw. Repo Wiki. Według komunikatu wygenerowanie strony Wiki w chmurze mogło uruchomić przesyłanie całego repozytorium - i ta opcja była domyślnie aktywna bezpośrednio po premierze produktu.
To jest opis czegoś zaprojektowanego, a nie czegoś zepsutego. Różnica jest zasadnicza. Błąd się łata. Domyślne ustawienie ktoś musiał wcześniej wybrać.
„Funkcja indeksowania kodu źródłowego wspiera odtwarzanie punktów kontrolnych sesji, cofanie wersji i Repo Wiki. Wygenerowanie strony Wiki mogło uruchomić przesłanie repozytorium.”
- fragment oficjalnego oświadczenia Z.ai
Z.ai dodało, że przesłane dane są niszczone natychmiast po wygenerowaniu strony Wiki i nie są przechowywane. W sobotniej aktualizacji Ferstar zapytał: jak ktokolwiek ma to zweryfikować? Pytanie zawiera w sobie odpowiedź. Z.ai zbudowało archiwum w ten sposób, że tylko Z.ai może je odczytać - a więc tylko Z.ai może powiedzieć, co się z nim stało.
Google · Twoje źródłaPromptowy wyżej w Twoim Google - jednym kliknięciemDodaj do preferowanych źródeł →Polityka prywatności, która nie przewidywała tego scenariusza
Nie przepłacaj za te subskrypcje
Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.
Zajrzałem do polityki prywatności ZCode. Obowiązuje od 15 czerwca i nie była od tamtej pory zmieniana. Dokument mówi, że serwis zbiera tekst, pliki i kod przesyłany przez użytkownika poprzez konwersację. Spakowana migawka całego repozytorium wraz z historią Gita nie jest czymś, co użytkownik przesyła w rozmowie z asystentem - to coś, co aplikacja robi sama, w tle, bez wyraźnego aktu woli po stronie użytkownika.
Tabela uprawnień w polityce obejmuje dostęp do sieci i pamięci masowej, ale nie opisuje żadnego mechanizmu snapshotowania repozytoriów. Jedyna kontrola danych, którą dokument wymienia wprost, to Program Optymalizacji - domyślnie wyłączony, regulujący to, czy treści trafiają do trenowania modeli, a nie to, czy w ogóle są przesyłane.
Programista, który przeczytał politykę i wyłączył trening, nie miał żadnego powodu spodziewać się czegokolwiek innego.
To nie pierwszy raz, gdy narzędzie do kodowania okazuje się wysyłać więcej, niż deklarowało. Wcześniej podobna sytuacja dotyczyła Grok Build od xAI, który przesyłał całe repozytoria Git na serwery firmy, mimo że w materiałach marketingowych firma zapewniała o czymś przeciwnym. Tamten przypadek miał jednak jedną istotną różnicę: użytkownicy mogli przynajmniej sprawdzić logi ruchu sieciowego i zobaczyć, co dokładnie wyszło. W przypadku ZCode dane były szyfrowane kluczem, którego właściciel kodu nigdy nie trzymał w rękach.
Agenty do kodowania to trudniejszy problem bezpieczeństwa niż chatboty. Mają dostęp do całych repozytoriów, historii zmian, zmiennych środowiskowych i kluczy API. Przepaść między tym, czemu się je powierza, a tym, co jest faktycznie audytowane, to już od jakiegoś czasu strukturalna słabość branży - osobny badacz zdołał ostatnio przejąć kontrolę nad Claude Code, po prostu prosząc go o podsumowanie strony internetowej.
Z.ai mówi, że dane zostały usunięte. Musi nam wystarczyć słowo firmy, która jako jedyna miała klucz.
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →
