智谱Zcode被发现未经用户同意擅自将整个工作区和Git记录上传到服务器保存

业界 来源:蓝点网 2026-09-18 16:26:54

开发者 @Ferstar 日前发布详细的分析报告揭露智谱推出的 ZCode 编码工具登录后静默上传整个工作区,工作区包含完整的 Git 历史因此也会被上传到服务器保存,而 ZCode 本地并没有选项可以控制这类上传,对开发者而言这存在严重的安全风险。

排查发现只要账号处于登录状态,ZCode 客户端就会在后台将当前工作区整包加密并直传到阿里云 OSS 对象存储中保存。涉及的数据范围不仅是当前源码,还包括完整的 Git 历史、LFS 缓存、reflog 以及跨工作区的全局应用配置等。

起点:313MB 的密文

开发者在进行磁盘清理时注意到~/.zcode 文件夹占用超过 700MB 的存储空间,其中 cli/ 占 257MB、computer-use/ 占约 130MB,而真正主角是占 303MB 的 v2/checkpoints/ 文件夹。

这个文件夹里有个 313MB 的.enc 文件,状态元数据写明工作区为某商业项目,类型为全量快照,仓库总量约为 10GB,剔除各类依赖后剩余的 345MB 是项目核心资产。

链路:先要凭证再直传阿里云 OSS

日志未直接提供上传地址,开发者拆开客户端相关文件还原整个上传链路:先向 zcode.z.ai 请求上传凭证,服务端返回 OSS 表单签名、动态对象 Key、大小限制以及本轮 RSA 公钥后,客户端将在本地打包文件并进行流式加密,随后绕过智谱业务服务器并以 POST 表单将加密后的 enc 文件直传到 OSS,随后 OSS 回调智谱后端进行登记。

设计:公钥动态下发,私钥只在云端

加密为标准信封方案:内容用临时对称密钥走 AES-256-CTR 算法加密,对称密钥再用服务端下发的公钥做 RSA-OAEP-SHA256 包裹,私钥全程都只在云端,开发者尝试用本机全部私钥都未能解开加密后的数据包,也就是说用户不能打开加密后的文件、ZCode 客户端不能解密,只有智谱后端才能解密。

开发者认为如果这个功能为断点恢复或跨设备同步功能而设计,那密钥应该留在本地。只有服务端才能解开的加密文件,那目的可能就是确保只有服务端单方面解密并查看文件。

快照:Git 历史被打包上传

由于密文无法解开,但客户端打包时留下的明文 Manifest 可以读取,包含 42411 个文件的清单显示:.git/lfs/ 目录约 196.1MB,占比 56.8%,这是历史拉过的全部大文件与二进制资产;.git/objects/ 目录约 102.2MB,占比约 29.6%,即完整的 commit/tree/blob 对象库;.git/logs/ 目录 0.6MB,含本地分支操作和未推送记录;其余源码和文档约 46.2MB,.git 合计占比为 86.6%。

当文件上传成功后,云端拿到的不只是当前工作树,还包括仓库自建立以来的全部历史:已经被覆盖删除的敏感配置与历史密钥、尚未推送的分支名、.git/config 中内部 GitLab 域名与仓库路径。

无法关闭且隐私政策未说明会打包工作区上传:

在对照代码后开发者认为 ZCode 客户端设置里的优化体验选项只能控制数据是否用于模型训练,仓库快照索引只能控制服务端是否对已经上传的快照建立索引。捕获 / 上传 sidecar 在启动时无条件实例化、无用户偏好判断,唯一门槛是 tokenProvider 能拿到登录 JWT 凭证。触发点包括每次发 Prompt 前的 captureBeforePrompt,以及任务结束时的 repo-wiki-update,单个活跃会话日志最多出现 62 次捕获。

而智谱 ZCode 隐私政策里只写着会收集对话中提交的文本、文件和代码,并未提到会静默打包并上传整个工作区以及完整的 Git 历史记录,官方文档、FAQ 以及更新日志同样没有说明。

临时应对方案就是锁目录:

值得注意的是手动删除 pending 包是没用的,因为客户端还会重新抓取生成,开发者研究后给出的临时方案是清空并锁定 ~/.zcode/v2/checkpoints/ 目录,macOS 可以使用chflags uchg、Linux 可以使用 sudo chattr +i。

锁定目录后磁盘无法写入因此上传链路会因为无本地产物而终止,但代价是检查点回滚、时间线界面失效,对话、补全与工具执行不受影响。

延伸阅读

关注公众号:拾黑(shiheibook)了解更多

友情链接:

关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
安全、绿色软件下载就上极速下载站:https://www.yaorank.com/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接