安全
ZCode 未经询问就上传了开发者的完整 Git 历史。智谱的修复没有说清「已经有谁读过」
智谱(Z.ai)的 AI 编程智能体悄悄把整个工作区——包括完整的 Git 历史——打包成加密压缩包,上传到只有该公司能解密的云存储桶。补救措施迅速且异常公开,唯独没有交代已经被取走的数据去了哪里。
MAI
9月18日,一份逆向工程报告,掀起了针对智谱(Z.ai)——这家曾名为智谱AI、开发开放权重 GLM 模型的中国实验室——为期一周的审视。焦点不是模型,而是智谱的 AI 编程智能体 ZCode。报告发现,这款工具会把开发者的工作目录——源代码、配置,以及完整的 Git 历史——打包成加密压缩包,并在用户还没决定分享任何东西之前,就上传到云存储。
这款工具做了什么
ZCode 运行在开发者的编辑器内部,拥有任何编程助手都需要的文件系统访问权限。据拆解客户端的研究者所述,一个后台的"代码库索引"流程会在登录时、打开项目时,或启用智能体高级功能时启动——这些都不是"上传我的代码"这样的明确决定。该流程会收集整个工作区,尤其是完整的 .git 目录——提交历史、Git 对象和 Git LFS 缓存。随后它用 AES-256-CTR 压缩并加密结果,再向智谱的服务器索取一个 RSA 公钥和阿里云对象存储凭据,把压缩包推送上去。
研究者分析的某一个安装环境的数字,勾勒出了它的规模。
| 被收集的内容 | 详情 |
|---|---|
| 加密压缩包大小 | 313 MB |
| 打包的文件数 | 42,411 个(来自 345.5 MB 的工作区) |
| Git 数据在负载中的占比 | 86.6% |
| 单个快照的上传尝试次数 | 564 次 |
| 加密 | AES-256-CTR,解密密钥由智谱掌握 |
| 触发方式 | 登录 / 打开项目 / 启用智能体功能 |
| 同意提示 | 无 |
有两个细节比体量更重要。第一,不存在同意环节:登录即已足够。第二,解密密钥握在智谱手里,这意味着开发者对躺在厂商存储桶里的、属于自己仓库的那份副本,既读不了,也管不了。对私有代码库而言,完整的 Git 历史往往比当前的工作树更"丢不起"——它可能包含被删除的密钥、内部分支名,以及软件如何被构建出来的全部记录。
智谱的回应
平心而论,智谱的反应迅速,而且开放得不同寻常。报告出现的当天,智谱就承认问题并致歉。9月20日,它在 GitHub 上公开了 ZCode 客户端源码,该仓库一天之内就收获数千颗星;智谱将此举定位为把代码交由社区审视。9月21日,它给出了补救方案:问题功能已在新版客户端中移除,并委托两家中国安全机构——具官方背景的中国信息通信研究院(信通院,CAICT)和厂商绿盟科技(NSFOCUS)——进行核验。信通院报告称存储桶已达到"零数据状态"、相关功能已消失;绿盟科技则表示,在修复后的客户端中找不到任何能重新生成本地快照并上传的路径。智谱称,数据对象和存储桶本身都已删除。
在出丑之后把工具开源,已经比多数厂商做得更多,删除存储桶也是正确之举。但这些审计描述的是"修复之后"的世界。压缩包存在期间是谁读过它、被保留了多久、已经收集到的历史后来怎样了——审计没有说,也无法说。截至智谱声明发布时,完整的评估报告尚未公开,而这两家审计机构都是智谱自己聘请的。至于一款编程助手为何一开始就需要完整的 Git 历史,致歉始终没有正面回答。
与智谱无关的那一部分
人们很容易把这件事归入"中国 App 拿你的数据干了件让人不安的事"。但这个框架,恰恰错过了更有用的教训。就其构造而言,AI 编程智能体本就是一个既对你的源代码树拥有读取权限、又与其制造者保持在线连接的程序。为了上下文而索引代码库正是它的核心卖点;而把这份索引发往某处,离"功能"只差一个配置开关。ZCode 是有据可查的个案,但其机制没有任何一点是某一家实验室、某一个国家所独有的。对于这些智能体究竟把什么发回了家,业界没有共同的披露规范;在出事之前而非之后就对它们进行审计的独立机构,也并不存在。
对今天正在使用 AI 编程智能体的人来说,务实的应对不分厂商,都是一样的。如果你在用 ZCode,就更新它——修复后的客户端已移除该功能。更普遍地说,把这些智能体当作数据外泄面(data-egress surface)来对待:检查它们默认开启了哪些索引与遥测,尽量只让它们面对那些离开你机器也无妨的代码,并在敏感仓库上监视它们的网络行为。便利是真的。但那个正在读你代码的东西,也能把它发出去——这同样是真的。
来源: Tom's Hardware, ZCode source on GitHub (zai-org/ZCode), StableLearn: ZCode Git-history upload incident, RuntimeWire: Z.ai open-sources ZCode after Git-history upload, DEV: ZCode answered its critics — open source, third-party audits, a deleted bucket