摘要:2026 年 7 月,安全研究员抓包证实 Grok Build 会在你不知情时把整个代码库(含密钥、配置、提交历史)静默传到云端,而且那个"关闭上传"的开关根本关不掉。这件事比"AI 删库"更隐蔽,因为它发生的时候你毫无感知。本文从这次事件出发,讲清企业用 AI 写代码时最该守住的保密底线,并给出仓库、端点、网络、选型四层可落地的防泄露防线。
7 月 13 号,安全研究员 cereblab 做了一件有点轴的事:他建了个 12GB 的假仓库,什么文件都没让 Grok Build 读,就让它回一个词。然后他开着抓包工具,看这个 AI 编程助手到底往外面发了什么。
结果挺吓人。模型推理通道(也就是你和模型对话那条)只传了 192 KB;而另一条存储通道,把整整 5.1GB 的仓库内容传到了 xAI 的云的存储桶里,还返回了 HTTP 200。两条通道差了 27800 倍。
更关键的在后头:他明明关掉了设置里的 "Improve the model"(改进模型)选项,按常理这应该阻止数据被用于训练。但抓包显示,服务端返回的 trace_upload_enabled 字段依然是 true,上传一点没停。也就是说,你以为关掉的那个开关,管的是"要不要拿去训练",根本管不了"要不要传出去"。
传的是什么?整个 git 仓库------不只是当前文件,连完整的提交历史一起打包;.env 里的密钥明文,没有任何脱敏;甚至把你机器上 ~/.claude.json、30 多个 Skill 文件、以及另一个工具的配置文件里的一个 API Key 都顺手带走了。目的地是 Google Cloud 上的一个存储桶 gs://grok-code-session-traces。
被曝光之后,xAI 在服务端悄悄加了个 disable_codebase_upload=true 的字段,把上传关了。但注意,它保留了 trace_upload_enabled=true,而且客户端二进制文件的哈希值一点没变------意思是,今天可以远程帮你关,明天同样可以远程无感地再打开。马斯克后来承认了这事(原话 "True"),承诺清除数据,也把 Grok Build 开源了。
我讲这个不是要踩哪家厂商。真正值得企业警惕的是:这不是 bug,是架构选择 。Grok Build 的设计就是"云端优先",CLI 只是个薄壳,真正干活的全在远程。它的问题不在于"传了代码",而在于它传的是整个工作区,而且把控制开关攥在自己服务端手里,用户没有真正的否决权。
为什么它比"AI 删库"更值得害怕
过去半年我们见过好几次 AI 闯祸:有 Agent 自己删了生产数据库,有模型把整台 Mac 的硬盘清空。那些事当然严重,但它们有个共同点------你至少知道出事了。命令执行了,磁盘没了,报警立刻响。
静默上传不一样。它发生在后台,没有报错,没有提示,你的代码、密钥、历史版本在某一秒就离开了公司网络,而你还在一行行 review AI 给你写的业务代码,毫无察觉。等真出事,可能是半年后竞品上线了和你变量命名一模一样的核心逻辑,或者安全团队在威胁情报里看到了本该只在你们内网出现的代码片段。
而且这不只是 Grok 一家的问题。同一个七月,Claude Code 被工信部国家漏洞库点名"内置隐蔽监控后门"------它会读取系统时区、扫描"阿里云""腾讯云"这类关键词、静默给中国用户打标签,阿里随后在 7 月 10 号全面禁用。再往前,Cursor 在 2025 年底承认过 Plan Mode 的严重缺陷:用户明明白白打了"DO NOT RUN ANYTHING",Agent 回了个"好的"然后照样执行了命令。还有个刚发布的研究叫 HalluSquatting:大模型会编错仓库名或技能名,攻击者抢先注册那个错误的名字、塞进恶意提示,就能诱使你的 AI 助手去拉一份假的资源。
把这些放一起看,一个共识浮出来了:系统提示是"建议",不是"约束";厂商设置页上的开关,和真实的数据流向,可能差了十万八千里。 这正好呼应我之前写的"给 AI 套缰绳"那篇------但那篇讲的是怎么给单个 Agent 套护栏,今天这篇要往上走一层:当全公司几百号人都在用 AI 写代码,保密这件事不能指望每个人、每个工具都自觉,得从组织层面建防线。
企业防泄露,四层防线
我把它拆成四层,从代码本身一直管到网络出口。任何一层漏了都有风险,但四层叠起来,单点失误就不至于变成数据外泄事件。
第一层:仓库本身的卫生
最基础也最容易被忽视。很多泄露根本不是 AI 的锅,是代码从一开始就不该进版本库的东西进了库。
.gitignore 只防 git 还不够,因为 AI 工具读的是工作目录,不一定走 git。Cursor 有 .cursorignore,Copilot 有 .copilotignore,Continue 有 .continueignore------这些文件要同步配,把 secrets/、*.pem、credentials/、config/production.yaml 这类目录和文件排除在 AI 上下文之外。密钥永远不进库,代码里只留占位符:
properties
# 错误:把真连接串写死在代码里
jdbc:url=jdbc:postgresql://admin:***@db.internal.example.com:5432/app
# 正确:只留结构,真实值从环境变量注入
jdbc:url=${DATABASE_URL}
第二层:端点上的闸门
仓库卫生靠人自觉不保险,得让机器替你卡。给 git 加一个 pre-commit hook,每次提交自动扫一遍有没有密钥长什么样:
yaml
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.0
hooks:
- id: gitleaks
配上 gitleaks(或 truffleHog、detect-secrets)之后,一旦有人把 sk- 开头的字符串或者长得像私钥的内容提交,提交会被直接拦下。团队规范里写一句:任何 AI 生成的代码,合并进主干前必须过 secret scan。GitHub 仓库的 Settings 里也能直接开启 secret scanning,作为兜底。
第三层:网络出口管控
前两层管的是"代码里别出现密钥""别误提交"。但 AI 工具的流量是从你公司网络出去的,这一层最容易织一张大网。
企业级 DLP(数据防泄露)产品能做到内联检测:员工往 ChatGPT 或任何 GenAI 工具传内容时,敏感数据在出口就被识别并拦截,而不是等数据到了别人服务器。更进一步的是零信任终端方案,它能认出 Cursor、node、python 这些 AI 相关进程,只允许它们访问白名单域名,一键终止失控的进程链,从根上掐断"shadow AI"(员工私接未经批准的 AI 工具)的外传通道。对安全团队来说,定期用 mitmproxy 这类工具做一次 wire-level 抓包审计,比看厂商的隐私声明靠谱得多------Grok 这事就是这么被扒出来的。
第四层:选型与流程
最敏感的那部分核心逻辑,干脆别上云。本地优先的模型(Ollama 跑 CodeLlama,或用 vLLM 自托管)数据不出本机,适合写涉及核心业务规则、权限判断的代码。如果必须用云端工具,选企业版,并且把 DPA(数据处理协议)和 Zero Data Retention(零数据留存)白纸黑字写进合同,而不只是看营销页的承诺。还有一条硬规矩:认证、授权、加密这类代码,别让 AI 单独写,用经过审计的成熟库。高危操作(删库、改权限、发版)必须人工确认------这和第 17 篇说的给 Agent 加 permissions / hooks 是一回事,只是 scope 从单个 Agent 扩大到了组织。
Java 后端工程师最容易漏的几个点
站在我们 Spring Boot 项目的角度,风险点非常具体。
application.yml 里那一串:数据库密码、Redis 密码、消息队列的 Access Key、第三方接口的 Secret,全都是明文写死的重灾区。正确做法是只放占位符,真实值通过环境变量或配置中心注入:
yaml
spring:
datasource:
url: ${DB_URL}
username: ${DB_USER}
password: ${DB_PASSWORD} # 真实值来自 Nacos/Apollo,不进仓库
配置中心(Nacos、Apollo)的价值不只是动态刷新,更在于把密钥从代码仓库里物理隔离出来------开发本地拿不到生产密钥,AI 工具读到的仓库里自然也没有。CI 流水线里挂一道 gitleaks,每次构建顺手扫一遍,成本几乎为零,却能拦掉绝大多数误提交。
说到底,AI 帮我们写得越快,密钥一旦漏出去,传播速度也越快。以前一个实习生把密钥提交到内网仓库,影响面还限于公司内网;现在同样的动作,AI 可能几秒内就把上下文同步到云端推理服务。
马上就能动手的清单
不需要等一次事故来倒逼改革。下面这几条,本周就能开始:
- 拉一份全公司的 AI 编程工具白名单,未批准的禁止安装;企业版必须签 DPA + 零数据留存条款。
- 给所有核心仓库补
.gitignore和对应工具的 ignore 文件,并接上 pre-commit 的 secret scan。 - 涉及核心业务规则和权限的代码,逐步切到本地模型(Ollama / 自托管)来写。
- 网络层上企业 DLP 或零信任方案,重点管住 shadow AI 和出站白名单。
- 立一条铁律:认证、授权、加密相关代码,AI 只能给建议,最终由人落地。
- 每半年用抓包工具做一次 wire-level 审计,验证"设置页说的"和"线上真的"一致。
护栏要从单个 Agent 上升到整个组织的网络与流程层面。工具会越来越强,但保密这条底线,得由我们自己先画清楚。
作者:唐悦玮 | 从后端出发,用 AI 拓展到全栈的工程师。