지푸 ZCode, Git 기록 무단 업로드 논란…48시간 신뢰 위기
한 개발자가 ~/.zcode 숨김 디렉터리에서 313MB 암호화 패키지를 발견하면서 지푸 ZCode가 Git 기록을 업로드했다는 의혹이 제기됐다.
중국어 원문을 AI로 번역했습니다. 고유명사와 수치는 원문 표기를 우선하며, 중요한 판단에는 아래 출처 원문을 함께 확인하세요.
ferstar가 디스크를 정리하던 때만 해도, 자신이 즈푸(智谱)의 추문 하나를 파헤치게 되리라고는 생각하지 못했을 것이다. 그는 ~/.zcode 숨김 디렉터리에서 313MB짜리 암호화 패키지를 발견했지만, 아무리 해도 열 수 없었다. 옆에 있는 상태 파일을 슬쩍 봤더니: 로컬의 한 상업용 프로젝트에서 의존성을 제외한 345MB 분량의 내용이 전체 스냅샷으로 묶였고, 네트워크 문제로 업로드가 연속 564번 실패해 계속 로컬 재시도 큐에 걸려 있었다.
이 일의 이후 전개는, 암호화 패키지 하나 자체보다 훨씬 보기 흉했다.
一、하나의 조용한 업로드 경로
ferstar가 클라이언트 설치 패키지를 뜯어보니, 하나의 업로드 경로가 드러났다(top10.dev의 그의 패키지 분석 글에 대한 해설). 로그인하고 프로젝트를 열기만 하면 작동하며, 당신이 특정 기능을 쓰는지와는 무관하다:
- 패키징 범위는 현재 코드가 아니라 전체 워크스페이스로, 총 42411개 파일이며, 그중 .git 버전 이력, LFS 대용량 파일 캐시, 로컬 커밋 기록이 86.6%를 차지했다(LFS 캐시 56.8%, 커밋 이력 객체 저장소 29.6%). 당신이 예전에 실수로 커밋했다가 삭제한 키와 설정이 전부 그 안에 들어 있다.
- 더 황당한 것은 스냅샷이 .gitignore 를 읽지 않는다는 점이다. 당신이 버전 관리에서 의도적으로 제외한 파일——흔히 바로 키와 로컬 설정——은 그대로 스캔되며, .git/config 안의 평문 토큰까지 함께 딸려 간다.
- 암호화는 로컬 대칭 키를 사용하고, 다시 서버에서 내려준 RSA 공개 키로 한 겹 더 감싼다; 개인 키는 오직 클라우드에만 있어, 당신 자신은 이 패키지를 열 수 없다.
- 패키지는 즈푸 자체의 비즈니스 서버를 거치지 않고, 알리윈(阿里云) OSS로 직접 전송되며, 클라우드 스토리지 콜백으로 등록된다.
- 끌 수 없다. 인터페이스의 "체험 최적화"는 데이터를 학습에 쓰는지 여부만 관장하고, "저장소 스냅샷 인덱스"는 클라우드에 인덱스를 만들지 여부만 관장하므로, 둘 다 패키징 업로드를 막지 못한다. 로컬 암호화 패키지를 삭제해도, 30분 후 소프트웨어가 다시 조용히 한 부 생성한다. 확실한 방법은 OS 계층에서 checkpoints 디렉터리의 쓰기 권한을 잠그는 것뿐이다.
커뮤니티에서 누군가 후오룽(火绒)의 트래픽 모니터링을 공개했는데, 백그라운드에서 조용히 43GB를 업로드했다(넷이즈 보도). 어떤 원문 발언이 아주 적절했다: "패키징 전체를 비대칭 암호화로 밖으로 보내다니, 이게 트로이 목마와 무슨 차이가 있나?"
二、즈푸는 뭐라고 했나
9월 18일 17시 44분, 즈푸는 사용자 그룹에서 상황 설명을 올리고 사과했다(펑황망 / 신랑 / 넷이즈 / PANews 영문 / 21차이징).
그들의 설명은 이러하다: 문제는 "코드 저장소 인덱스" 기능에서 발생했으며, 원래는 로컬에서 저장소 인덱스를 생성해 대화 체크포인트 복구, 이전 버전 롤백, Repo Wiki를 지원하는 것이었다. 오직 Repo Wiki가 클라우드에서 지식베이스 페이지를 생성할 때만 업로드가 촉발되고, 페이지 생성이 끝나면 데이터는 즉시 파기되어 저장되지 않는다. 이 기능은 출시 초기 기본으로 켜져 있었기 때문에 일부 사용자에게 영향을 주었고, 지금은 수정했다.
개선 약속 네 가지를 나열했다:
약속 진척 출처 업로드 로직 수정 확인됨(3.14.0 업로드 코드 제거, 인터페이스 404) 넷이즈 복기 전체 사용자에게 주간 할당량 리셋 1회 재지급 9/18 지급 완료 공식 설명 ZCode 코드베이스 오픈소스화 아직 미착수 신랑재경 제3자 보안 심사 및 진척 공개 아직 미착수 펑황망
기존 데이터가 실제로 삭제됐는지는 현재 외부인이 독립적으로 검증할 방법이 없다.
공짜가 가장 비싸다. 즈푸는 평소 주말마다 토큰을 무료로 뿌렸는데, 오늘 이 일이 터지자 갑자기 깨달았다: 공짜야말로 가장 비싼 것이다.
三、전체 여론은 어떻게 폭발했나
- 기술 커뮤니티는 한쪽으로 쏠렸다. V2EX 메인 글이 63.8K 조회를 기록했다(LavX 인용), 원문: "이건 코딩 도구가 아니라, 코드 자동완성 기능이 달린 데이터 유출 도구다." Hacker News에서 두 개의 분석 글이 각각 217, 278개의 추천을 받았고, 공통된 인식은 "이건 버그가 아니라 의도된 기본 동작이며, 게다가 전송하는 것은 코드가 아니라 Git 이력이라 질적으로 선을 넘었다"(top10.dev)였다. 국내에서도 넷이즈 장문, 차오신문, 홍콩상보의 법률 관점 글이 모두 뒤따랐다.
- 옹호하는 목소리도 있었지만 한계가 있었다. 웨이보의 정리는 이렇다: 어떤 이들은 이것이 악의적 탈취가 아닌 설계상의 누락이라며, 사과가 빠르고 당일 수정했으며 오픈소스·감사를 약속했으니 적극적이라고 본다(관점 1 / 관점 2). 지지자들은 긴 작업, 다중 Agent 협업 능력, 한마디로 프로젝트를 만드는 점을 칭찬했다. 그러나 아무도 "조용한 Git 이력 업로드" 자체를 지지하지는 않았다——기껏해야 "동기는 나쁘지 않았을 수 있고 태도는 괜찮다" 정도였다.
- 업계에 놓고 보면, 이것은 고립된 사례가 아니다. Cursor, Copilot, Cody, Continue 모두 코드를 외부로 전송하며, 각자 "뭘 전송했는가" 논란을 겪었다. top10.dev와 21차이징은 모두 한마디 짚었다: ZCode의 차이는 전송하는 것이 Git 이력(커밋 메타데이터, 작성자 신원, 브랜치 이름, .git/config)이라는 점이며, 게다가 당신의 첫 prompt에 대한 응답도 오기 전에 이미 전송을 끝낸다는 점이다——이는 "필요할 때 문맥을 전송"하는 것보다 노출 수준이 한 단계 높다. xAI의 Grok Build는 올해 7월 전체 프로젝트를 구글 클라우드에 전송했고, 사용자가 "읽지 마"라고 한 파일과 마스킹되지 않은 키까지 전송했다; Anthropic의 Claude Code는 봄에 패키징 누락으로 51만 줄의 핵심 소스 코드 매핑 파일을 공공 패키지 매니저에 유출했고, 공업정보화부는 7월에 그것이 보안 백도어 위험이 있다고 지목했다.
- 해외에는 불신의 층이 하나 더 있다. 아일랜드, EU의 개발자들, 그리고 암호화폐 업계(ZCode는 월 16달러, GLM 자체 호스팅 지원을 내세운다)의 진짜 걸림돌은 중국 《국가정보법》이 기업에 정보 요청 협력을 요구한다는 점이다. 코드의 로컬 암호화와 가중치 오픈소스는 모두 소용없고, 런타임 클라이언트는 당신이 통제할 수 없다(배경은 Crew의 지정학 분석 참조).
四、공식 설명의 몇 가지 구멍
- 타임라인이 안 맞는다. 9월 16일 업데이트 로그에 "저장소 스냅샷 업로드의 메모리 점유 최적화"라고 뚜렷이 적혀 있었는데, 사건 이후 삭제됐다——"우발적 동작"을 위해 굳이 메모리 최적화를 할 이유는 없다(21차이징).
- 촉발 조건이 안 맞는다. ferstar의 기록에는 업로드가 매 질문 이전에 발생했는데, 이는 "Repo Wiki 생성 시에만 촉발된다"와 부합하지 않는다.
- "즉시 파기"는 검증할 수 없다. 외부인은 클라이언트가 데이터를 보내는지 여부만 볼 수 있을 뿐, 서버에 들어가 삭제했는지, 백업 사본이 있는지, 개인 키를 누가 관리하는지 확인할 수 없다.
- 수정 효과도 의문이다. 청밍과기(承明科技)는 클라이언트가 9/16에 이미 3.12.3으로 업데이트됐다고 했지만, 9/18 새벽에도 업로드가 감지됐다(청밍 공문 발송).
- 데이터 역외 이전이 불분명하다. 클라이언트 요청은 싱가포르 주체를 가리키지만, 계약은 베이징 즈푸화장(智谱华章)과 했다——역외로 나갔는지 아닌지, 공식 측은 해명하지 않았다.
五、맺음말
즈푸의 대응은 그리 느리지 않았다: 몇 시간 만에 사과, 당일 수정, 할당량 보상, 오픈소스 및 제3자 감사 약속으로, 단순히 홍보 보도자료를 내는 것보다는 성의가 있다. 하지만 코드는 결국 사용자의 컴퓨터를 떠난 적이 있고, "즉시 파기"라는 네 글자는 외부인이 검증할 수 없으며; 어느 부분을 오픈소스로 하는지, 감사가 서버까지 파고들 수 있는지, 청밍이 보낸 공문에 나열된 문제들을 어떻게 대응할지, 모두 아직 미결이다.
타이위안 청밍과기(太原承明科技)는 이미 공식 공문을 발송했으며(링크), 10월 10일까지 삭제, 로그, 개인 키 보관 등 일련의 문제에 대해 서면 답변을 요구하고, 손해배상 청구와 소송 권리를 보류했다. 이 일은 "사과하고 할당량 지급"으로 끝나지 않을 것이다.
정말 기억할 만한 것은, 업계파가 ZCode를 끌어들인 그 큰 배경이다: 모든 코딩 Agent가 코드를 외부로 전송하고 있으며, 차이는 얼마나 전송하는지, 알고 하는지 여부뿐이다. 즈푸는 이번에 Git 이력까지 함께 패키징하고, 끌 수도 없고, 삭제해도 다시 생성되기 때문에, 현재 가장 눈에 띄는 축에 속하게 됐다. AI Agent가 시스템 저층으로 나아가는 것은 대세지만, 샌드박스 격리와 최소 데이터 노출은 최저선이다——이 선을 즈푸는 뚫고 말았다.
참고 링크:
- 공식 대응: 펑황망 · 신랑재경 · 넷이즈 · PANews · 21차이징
- 기술 분석: top10.dev · LavX · 넷이즈 프로그래머 체험담 · 넷이즈 후오룽 43G · 넷이즈 사태 확대
- 기업 책임 추궁: 청밍과기 공문 발송
- 여론 관찰: 웨이보 관점 1 · 웨이보 관점 2 · 홍콩상보 · 차오신문
- 업계 배경: Crew 지정학 분석
마사만탄(码事漫谈)
고급 개발 엔지니어
332
글
185k
조회
136
팬