9월 18일 공개된 역공학 보고서에 따르면, 중국 모델 기업 Z.ai의 데스크톱 코딩 앱 ZCode가 개발자의 작업공간 전체를 Git 오브젝트 저장소까지 통째로 묶어 알리바바 클라우드 오브젝트 스토리지로 전송해왔다. 그것도 Z.ai 자사 서버만 풀 수 있는 암호로 감싼 채였다.
특이한 대목은 업로드 자체가 아니라 키를 누가 쥐고 있었는지다. 압축 파일은 개발자가 열 수 없는 암호문 상태로 알리바바 OSS에 쌓였고, 이를 만들어낸 동작은 앱 설정 화면 어디에도 드러나지 않았다.
핵심 요약
- 포착된 스냅샷 하나에 파일 42,411개, 용량 313MB가 담겼고 그중 86.6%가 .git 디렉터리였다.
- ZCode는 압축 파일마다 쓰인 AES-256-CTR 키를 서버가 그때그때 발급한 RSA 공개키로 감쌌다. 짝이 되는 개인키는 Z.ai 클라우드 안에만 남았다.
- Z.ai는 사과문을 내고 클라이언트를 패치했다. ZCode 사용자에게 주간 사용량 한도를 1회 초기화해주고, 코드베이스를 공개하고 외부 감사를 받겠다고 밝혔다.
Git 디렉터리를 넘기는 것이 최악인 이유
보고서를 쓴 연구자는 ferstar라는 이름으로 활동한다. 그는 클라이언트의 Electron 번들을 뜯어 전송 경로를 단계별로 복원했다. 345MB짜리 상용 프로젝트에서 만들어진 압축 파일은 파일 42,411개, 313MB에 달했고 그 대부분이 저장소 자체의 오브젝트 저장소였다.
이 비율이 사건의 핵심이다. 작업 트리는 프로젝트의 현재 모습만 보여주지만, 오브젝트 저장소는 그 프로젝트가 거쳐온 모든 상태를 보존한다. 한 번 커밋했다가 다음 커밋에서 지운 인증 정보도 히스토리에 그대로 남는다. 아직 출시하지 않은 기능을 짐작하게 하는 폐기된 브랜치 이름, 저장소 설정에 적힌 내부 호스트명과 원격 경로도 마찬가지다.
Z.ai가 공개한 개인정보 처리방침은 텍스트와 코드를 수집한다고 적고 있다. 저장소의 전체 이력을 수집한다는 설명은 없다.
스위치처럼 보였던 토글들
보고서를 읽은 사람은 누구나 환경설정 창부터 열어보게 되는데, 바로 여기서 이야기가 곤란해진다. ferstar는 인터페이스와 코드를 대조한 결과, "Optimize Experience" 스위치는 수집된 데이터를 모델 학습에 쓸지 여부만, "Repo Snapshot Indexing"은 서버가 도착한 데이터를 색인할지 여부만 통제한다고 전했다. 둘 중 어느 것도 압축과 전송에는 관여하지 않는다.
보고서에 따르면 수집 컴포넌트는 호스트 프로세스가 시작될 때 생성되며 사용자 설정과 무관하게 동작한다. 유일한 전제 조건은 유효한 세션 토큰이다. 한 번의 작업 세션에서 수집 이벤트가 62회 기록됐다. 프롬프트를 보낼 때마다, 그리고 작업이 끝날 때 다시 발생했다.
두 번째 정황이 이 그림을 뒷받침한다. 공개된 하네스 프롬프트 모음에 돌고 있는 131KB 분량의 ZCode 시스템 프롬프트 사본에는 에이전트가 쓸 수 있는 도구 31개가 나열돼 있다. 그중 업로드나 스냅샷, 전송을 담당하는 도구는 하나도 없고, 문서 전체에 알리바바나 OSS, 업로드라는 단어가 등장하지 않는다. 유출 경로가 에이전트 루프 바깥에 있다는 뜻이고, 그래서 권한 확인 창도 뜨지 않았다.
가중치 공개가 하네스 공개는 아니다
이번 사안이 크게 번진 데는 토론 스레드에서 드러난 범주 오류도 있다. 적잖은 개발자가 GLM이 오픈소스이니 ZCode도 오픈소스일 것이라고 여겼다. Z.ai가 공개한 것은 내려받을 수 있는 가중치이고, 그 모델을 구동하는 데스크톱 클라이언트는 비공개 소프트웨어다. 그리고 압축과 전송을 하는 쪽은 클라이언트다.
파급력은 두 언어권에서 모두 컸다. ferstar의 글은 조회수 27만 6,000회를 넘겼고, 중국어권 경고 스레드는 6만 3,800회를 추가로 기록했다. 가장 많이 인용된 반응은 개발자 페트리 쿠이티넨의 발언으로, 그는 비공개 소스 AI 하네스는 아예 믿지 말라고 조언했다.
Z.ai의 대응은 빨랐다. 회사는 사과하면서 수집된 데이터는 보관하지 않고 처리 직후 파기했다고 밝혔다. 이어 패치를 배포하고 사용량 한도 초기화로 이용자에게 보상했으며, ZCode 코드베이스를 공개하고 제3자 검토를 받겠다고 약속했다.
개발자에게 남는 것
모델을 로컬에 올릴지 공급사 데스크톱 클라이언트를 쓸지 저울질하는 팀이라면, 두 선택지의 경계가 전보다 또렷해졌다. 가중치 공개는 모델이 무엇인지를 말해줄 뿐, 그 모델을 감싼 껍데기가 파일 시스템에 무슨 짓을 하는지는 말해주지 않는다. 체크포인트나 되돌리기 기능이 있는 AI 코딩 어시스턴트는 구조상 무언가를 스냅샷으로 남기고 있다. 물어야 할 것은 그 스냅샷이 어디에 쌓이느냐다. 올해 다른 에이전트 하네스에도 비슷한 검증이 뒤따랐다. 주요 CLI 에이전트 4종에서 발견된 제로클릭 취약점이 그 예다.
자주 묻는 질문
ZCode는 오픈소스인가?
아니다. Z.ai는 GLM 모델 가중치를 공개하지만 ZCode 데스크톱 클라이언트는 비공개 소스다. 누군가 디컴파일하기 전까지 이 스냅샷 동작이 드러나지 않은 이유가 여기에 있다. 회사는 이후 코드베이스를 공개하겠다고 밝혔다.
사용자가 자신이 업로드한 파일을 복호화할 수 있나?
없다. 데이터 암호화 키는 Z.ai 서버가 제공한 RSA 공개키로 감싸져 있었고, 연구자는 기기에 있는 어떤 개인키로도 이를 풀지 못했다. 짝이 되는 개인키는 Z.ai 인프라에만 존재한다.
개인정보 설정을 끄면 업로드가 멈췄나?
보고서에 따르면 멈추지 않았다. 관련 토글 두 개는 수집 이후의 활용과 서버 측 색인만 통제했고, 작업공간을 압축해 전송하는 컴포넌트는 그 설정과 무관하게 호스트 수준에서 동작했다.






