ARTICLE · 1069859
安全工程师注意 AI 编程工具本地留了份"完整项目备份"
网络安全老宋// AI编程 · 事件复盘
// AI编程 · 事件复盘
安全工程师注意AI 编程工具本地留了份"完整项目备份"
某 AI 编程工具在你电脑上悄悄留的"备份",数据库口令、云服务凭证全在里面。
AI编程数据泄露Git历史

▲ 图1 · 本地加密快照:git 目录与密钥凭证被封存其中
🔑一句话精华有开发者清理硬盘时发现,某国产 AI 编程工具(业内称 ZCode)在本地留了一份 313MB 的加密快照,里面塞了 42411 个文件,光 .git 目录就占了 86.6%,数据库口令、云服务凭证全在其中。
9 月 18 日,有开发者清理硬盘时,在本地机器上发现某国产 AI 编程工具(业内称 ZCode)悄悄留了一份 313MB 的加密快照。打开文件清单一看,里面塞了 42411 个文件,光.git目录就占了 86.6%,数据库口令、云服务凭证全在其中。
紧接着,一家使用了该工具的企业发了正式追责函:被传出去的不是零散代码片段,而是 6 个完整工作区、最大一个 410MB,含完整源码、系统架构、版本历史、数据库口令、员工信息。即便厂商当晚致歉、说"已修复",这家企业在致歉当天凌晨仍检测到数据在被上传。
这事,每一个用 AI 写代码的安全人都该认真看完——因为它暴露的,不是某一家工具的 bug,而是整个"云端 AI 编程"品类的架构软肋。
00表面是产品事故,根子是架构原罪
ZCode 这次翻车,根子在于 AI 编程工具为了"懂你的项目",必须把代码传到云端。原理不复杂:工具扫描你本地整个工作区,把代码切成小块,做 embedding 向量化,存进向量库;你写代码时,它再从库里检索最相关的片段拼进提示词发给大模型。而 embedding 这一步,绝大多数情况是在云端完成的——你的代码块,必须先上服务器才能变向量。
问题不在"AI 编程工具会传代码",行业都这么干。真正的雷是三件事:
第一,默认开还是默认关。有的工具"隐私模式"要手动开,而 ZCode 上线初期连开关都没有,用户在完全不知情下数据就开始上传。一个默认开启的索引,等于在你电脑上装了只看不见的手,每天都在往外搬。
第二,传的是"相关片段"还是"整个工作区"。那家企业取证发现,被传的是整个工作区的归档文件,连数据库密码、云凭证一起打包——这不是索引,是整包搬走。你以为它只取了"相关上下文",实际上它把整个家底都顺走了。
第三,隐私政策写的和做的对不对得上。同一产品的不同语言版本隐私条款,对"数据存哪、过不过境"的描述互相打架,数据出境疑云至今没盖。厂商一句话致歉,换不回已经流出去的密钥。
01最致命的点:Git 历史比当前代码更危险
这里有个绝大多数人会踩的坑:.git历史比你现在看到的代码危险十倍。
Git 不只记录项目现在长什么样,还存着被删的文件、作废的方案、曾经误提交的数据库账号和 API 密钥。那份 313MB 快照里.git占了 86.6%,意味着你三年前手滑提交又删掉的那个密钥,今天照样被打包送出去了。你以为传的是业务代码,实际上商业秘密全裸奔。
这就是为什么"我代码里没写密码"救不了你——密码早就在某次提交里,被 Git 记了下来,而你忘了。AI 编程工具一索引整个工作区,.git里的陈年密钥就跟着一起上了云。
git log -p | grep -i "password\|secret\|api_key"之类的方式扫一遍历史,把误提交过的凭证全部轮换掉。轮换比删除更靠谱——历史里的密文删不掉,只能让旧密钥失效。02不是不让你用,是得守住三条线
老宋的态度很明确:AI 编程工具该用,效率高、顺手,挡不住也别挡。但安全人用,得比普通开发者多想一层——你写的代码里可能就躺着客户的资产、公司的检测逻辑、内网的拓扑。三条线守住,工具照用,雷不踩。
第一,隐私模式 / 零数据保留,必须开。不管用哪家工具,先翻设置,把"数据保留""代码上传""隐私模式"找出来,默认关的手动开;没开关的工具,谨慎用。企业版一定谈"零数据保留(Zero Data Retention)"条款,白纸黑字约定代码不用于训练、不被第三方留存。
第二,密钥绝不进仓库,敏感项目物理隔离。数据库密码、云 AK/SK 用专门的密钥管理系统(KMS),别放代码里。涉及核心源码、凭证的项目,建一个"干净工作区"只在里面放公开代码,或者敏感代码直接上本地模型。2026 年本地模型已经能打:Qwen3 Coder、Devstral 2、DeepSeek V4 本地跑,4-bit 量化后 300 亿参数模型 8GB 显存就能扛,硬件买完每次查询成本为零——对金融、军工、内部核心库这种强合规场景,本地部署正从"锦上添花"变成"采购必备"。
第三,企业层面把 AI 客户端当"新数据出口"来管。别让开发自己悄悄装一个就开始用,引入前让安全团队评估它的上传范围、保留策略、跨境情况。在公司网络出口做流量监控,AI 编程工具的 API 域名走白名单;一旦发现非预期的大流量上传(比如整包工作区),立刻告警。gitignore和.env一定配好,大部分工具会尊重gitignore,但前提是你得配:
# 这些文件绝不让 AI 编程工具扫到
echo".env" >> .gitignore
echo"*.key" >> .gitignore
echo"config/secret.yml" >> .gitignore
git check-ignore .env # 输出 .env 即生效
git check-ignore 文件名能直接告诉你该文件是否被忽略,配完跑一遍,确认敏感文件不在扫描范围里再开 AI 索引。除了这三条线,再给你一套"动手自查三步",今晚就能做完:第一步,翻本地目录,重点看用户目录下的缓存、应用数据目录里有没有该工具留下的快照、归档、.cache类文件——这次事件就是开发者清硬盘时翻出来的;第二步,打开工具设置,逐项确认"数据上传""云索引""隐私模式"的开关状态,截个图留档,这就是你未来追责的证据;第三步,把历史上误提交过的凭证全部轮换一遍,重点是数据库口令、云 AK/SK、内部系统的 API token,轮换完再在.git历史里扫一遍确认没有漏网。三步做完,你至少知道自己的家底现在在哪、暴露了多少。
💬老宋说
这件事真正的根因,不是某家工具写错了一行代码,而是 AI 编程"为了懂项目必须把代码传云端"这件事,被它用"全量快照"偷换了"局部上下文"、用"默认开启"偷换了"显式授权"、用"事后销毁"偷换了"事前同意"——架构决定它要拿数据,但拿多少、怎么用、用户知不知道,不能全靠厂商自觉。
从行业看,AI 编程正从"你贴代码给对话框"跨进"Coding Agent 直接进开发环境、自动跑命令、改文件",权限越大,厂商越得证明自己只拿了必要的数据,而且每一步可查、可控、可追溯。对企业安全团队来说,得把每一个 AI 客户端当成一个新的数据出口来管,而不是等出事再发函。
现在你能做的一件具体事:打开你正在用的 AI 编程工具设置,把隐私模式或零数据保留打开;存放密钥、核心源码的项目目录,要么物理隔离,要么直接换本地模型。羊毛要薅,家底别送。
我是老宋,咱们下期见 👋
end
不想错过文章内容?读完请点一下“在看
”,加个“关注”,您的支持是我创作的动力
期待您的一键三连支持(点赞、在看、分享~)