文章总结: ZCode客户端被曝偷传用户代码,上传范围远超隐私政策,含完整源码、密钥及内网域名,用户无法解密,开关形同虚设,历史目录豁免过滤规则存在漏洞。厂商致歉并承诺整改,行业存在共性问题。建议用户谨慎使用AI编程助手,关注数据安全,企业应加强代码审计与供应链安全管理。
综合评分: 85
文章分类: 代码审计,数据安全,安全工具,安全意识
ZCode偷传代码事件深度解析
原创
挽风
挽风
挽风安全
2026年9月20日 10:04
四川
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
事件起因
9月18日,技术博主ferstar在清理硬盘时发现,~/.zcode目录占用700多MB,其中v2/checkpoints/下有一个313MB的加密文件。状态文件显示这是一份全量快照,工作区345MB,上传失败已重试564次。
逆向app.asar后还原了完整上传链路:客户端向zcode.z.ai申请OSS上传凭证和RSA公钥,本地打包加密后直传阿里云OSS,不经过智谱业务服务器,由OSS回调智谱后端。
核心问题
上传范围远超隐私政策:42411个文件的清单显示,.git目录占86.6%(LFS 56.8%、objects 29.6%),源码仅13.4%。被上传的不只是当前代码,而是仓库全部历史——已删除的密钥、未推送的本地分支、.git/config里的内网域名、全局配置文件。
用户无法解密:采用RSA-OAEP + AES-256-CTR信封加密,但公钥由服务端下发,私钥只存云端,用户自己解不开本地密文。
开关形同虚设:界面两个开关分别只控制”是否用于训练”和”是否建索引”,都不能关闭上传。负责快照的sidecar在启动时无条件加载,仅需登录JWT,每次发Prompt前和任务结束时各触发一次,单会话最多62次捕获。手动删除待传包后半小时自动重建。
历史目录豁免过滤:文件筛选逻辑中,.git历史目录的放行排在密钥过滤和1MB体积限制之前,导致pem、key等密码文件过滤对历史内容完全失效。
厂商回应与进展
9月18日晚智谱致歉,称问题源于默认开启的”代码库索引”功能,用于生成Repo Wiki,数据生成后立即销毁。承诺开源客户端、第三方审计、补偿周额度。
9月20日,太原承明科技发律师函,称独立取证发现上传内容含完整源码、架构、数据库口令、云凭证及员工信息,远超隐私政策范围;客户端9月16日已升至3.12.3,但致歉当日凌晨仍检测到上传行为;网络请求指向新加坡主体,要求说明数据是否跨境。
行业共性
这不是孤例。xAI的Grok Build被抓包证实会打包上传整个项目,包括用户明确禁止读取的文件和密码;Claude Code曾在用户不知情时回传位置和身份信息,Anthropic事后确认为有意实验。这些问题均由社区个人逆向发现,而非监管或审计。
我认为安全视角的几个红点
密钥只存云端的非对称设计、直传OSS跳过业务服务器、历史目录豁免过滤规则、用户配置无法触达的后台进程——任何一项单独存在都足以在代码审计中提一条意见,叠加在一起就是典型的”功能优先、隐私让步”的设计。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:挽风安全 挽风
挽风《ZCode偷传代码事件深度解析》