夜雨聆风学习资料网

ARTICLE · 1056831

你的 AI 编程工具,可能正把整个 Git 历史打包传走

你的 AI 编程工具,可能正把整个 Git 历史打包传走

一个开发者逆向抓包,发现了件不太舒服的事:他在用的 AI 编程工具,在登录状态下把整个工作区静默打包加密上传到了云端

打包的不是当前代码,是完整的 .git 版本历史、LFS 大文件缓存和本地提交记录——总量 313MB、约 4.2 万个文件,超八成是历史记录。

这事发生在 9 月 18 号,工具是智谱的 ZCode。

后面的发展更值得注意:智谱当天就道歉并修复,但道歉没能平息争议。有企业用户独立取证,说道歉当天凌晨数据还在上传,于是发函要求 12 项答复;近 400 名开发者组成维权群;9 月 21 号智谱港股早盘跌超 5%。

不过要提醒一句:目前部分指控智谱回应称"不实消息",双方说法存在出入,事实仍在厘清中。 下面只聊已披露出技术细节的部分——那部分对我们自己的工具有直接借鉴意义。

这段想聊的不是"某某公司真坏",而是更实用的一件事:怎么检查你自己手上的 AI 编程工具,到底在传什么。

为什么"Git 历史"比"当前代码"更吓人

很多人第一反应是:代码本来也给它看了,传就传了。

这个想法漏了一件事。当前代码是项目此刻的状态,而 Git 历史是时间维度上的全量档案——包含已经删除的东西。删掉的密钥、早期版本的测试账号、试过又放弃的内部接口、三年前离职同事提交的配置文件……这些在你现在的代码里已经看不见,但都还躺在 .git 目录里。安全工程师的说法很直接:非法获取 Git 历史的危害性远超当前代码

所以判断一个 AI 编程工具的数据行为,不能只看"它有没有读我的代码"——得看它有没有碰 .git

三个技术细节,值得你记住

以下细节来自开发者逆向取证,但设计本身很说明问题:

第一,加密的私钥只在云端。 打包用的公钥由服务端动态下发,解密私钥仅保存在厂商一侧,用户本地无法解密查看。也就是说,你能确认"传了",但看不到"传了什么"。

第二,界面上的开关关不掉它。 客户端有两个相关设置项,但都不控制打包上传这个动作——一个只决定是否用于模型训练,另一个只决定云端要不要建检索目录。

第三,删掉本地文件,它会重传。 有用户手动删除本地生成的加密包后,软件自动重新生成并反复重试上传。

三条凑一起:没有出口审计,你对客户端行为基本零可见性。

智谱的回应和争议点

按官方说明,问题是"代码库索引"功能引起的——它用于支持会话检查点恢复、历史版本回退和 Repo Wiki 生成,其中 Wiki 生成时可能触发数据上传。官方称数据仅用于生成页面、完成后立即销毁不留存,并承认该功能上线初期没充分告知、也没提供关闭入口。

补救动作有五步:致歉归因、移除上传链路(当日新版本更新日志写明"修复仓库百科异常上传的问题")、邀第三方审计、开源代码库、宣布 MaaS 平台上线"数据内容不留存"功能。

争议集中在三处:取证方称致歉当日凌晨仍有上传,对修复彻底性存疑;实际内容含数据库口令、云服务凭证、员工个人信息,被认为超出隐私政策范围;客户端请求指向新加坡主体、签约主体是北京公司,涉及数据出境合规。取证方要求对方 10 月 10 日前书面答复。

有安全专家的判断挺到位:核心不是"AI 工具需不需要数据",而是用全量历史快照偷换了局部上下文、用强加密包装了单方控制权、用事后销毁替代了事前同意

一份能自己动手跑的自查清单

不管你在用哪家的工具,这六条都值得过一遍。

第一,别只看界面,去看流量。 用系统网络监视器或抓包工具盯住客户端的出站请求,重点看有没有大流量 POST 打在对象存储域名上。补全工具不该在打开项目时产生几百兆上传。

第二,翻本地缓存目录。 看应用数据目录里有没有突然冒出来的大体积加密包,体积是否随打开项目暴涨。

第三,把隐私政策当合同读一遍。 找到"收集范围"那条,跟实际行为对一下。这次争议的核心,恰好就是实际行为超出政策载明范围。

第四,搞清楚"隐私模式"到底等于什么。 很多产品的隐私开关只承诺"不用于训练",不等于"不上传",这是两回事。

第五,核对责任主体和数据流向。 客户端请求指向的实体,跟服务协议上签的法人主体是否一致。不一致就可能涉及数据出境。

第六,别在开发环境里放生产凭据。 这次上传的内容里有数据库口令和云服务凭证,本不该跟代码躺在同一个目录。

万一真出了事,第一步是轮换密钥,不是删文件。 删本地只能让你自己看不见,改变不了已经上传的事实。正确顺序是:先假设数据已泄露 → 轮换所有可能受影响的密钥 → 再去追责任和要说法。

最后说句实在的

AI 编程工具要不要读你的代码?要,不读就没法干活,这是它存在的意义。

问题从来不是"要不要给它数据",而是给多少、给完之后谁说了算、出事了你知不知道。前两件厂商说了算,第三件你能说上话——只要你去查。工具越强权限越大,这条规律不会变。每隔一段时间花二十分钟做次出口体检,比出事之后在群里问"我该怎么办"有用得多。


聊聊:你会去查自己 AI 编程工具的网络请求吗?

A. 已经查过,还行,没发现异常 B. 没查过,但看完这篇打算查一下 C. 企业有网络审计,轮不到我操心 D. 用开源本地工具,根本不担心这个

下篇预告:既然云端有这层顾虑,那把敏感代码完全留在本地行不行?下周六聊聊「敏感代码不出内网的几条现实路径」——本地小模型、私有化 Agent、企业自托管,挨个算一遍性能和成本账,看看哪些是真能用、哪些还是玩具。

相关学习资料