夜雨聆风学习资料网

ARTICLE · 1042422

你的AI编程助手,可能正在偷偷上传你的代码

你的AI编程助手,可能正在偷偷上传你的代码

昨天看到一条新闻,我愣了好一会儿。

一个安全团队逆向分析了智谱的 AI 编程工具 ZCode ,发现它登录后会悄悄把你的整个工作区打包——包括完整的 .git 历史、 LFS 缓存、 reflogs ,甚至全局配置——加密上传到阿里云 OSS 。实测一次快照: 42,411 个文件, 313MB 。

更绝的是,私钥只在云端。你本地解不开。

说实话,我看到这个数字的时候,第一反应不是愤怒,是一种说不上来的恶心感。就好像你请了个保姆来打扫卫生,结果发现她每天把你日记本拍照发给闺蜜——关键她还觉得这是"为了你好"。

烦不烦?烦。但更让我烦的是,这种事好像越来越常见了。

静默数据外泄: AI 工具的"默认行为"?

先说清楚发生了什么。

研究者 ferstar 拆解了 ZCode 的客户端代码(专业说法叫 reverse engineering,逆向工程),发现了一个完整的上传链路:客户端先向 zcode.z.ai 请求上传凭证,拿到 OSS 表单签名和 RSA 公钥后,把工作区打包成 tar.gz ,用 AES-256-CTR 加密,再把对称密钥用 RSA 包装,最后直接 POST 到阿里云 OSS 。

整个过程在你写代码的时候后台运行。每次你发 prompt 前抓一次,任务结束再抓一次。一个会话最多 62 次捕获。

这里有个关键术语:silent data exfiltration(静默数据外泄)。说白了就是在你不知情、没同意的情况下,数据被悄悄搬走了。不是黑客破门而入,是工具自己打开门把东西搬出去——还跟你笑着说"这都是为了你好"。

我翻了翻 ZCode 的用户协议,没找到明确说"我们会上传你的完整 Git 历史"这种话。当然,可能藏在某个我懒得翻的角落。但讲真——如果这件事需要用户去逆向代码才能发现,那这个"知情同意"不就是糊弄学吗?

另一面: AI 也在被用来攻击

就在 ZCode 事件前一天,另一条新闻同样让我印象深刻。

一个 3 人安全团队用 AI 模型在 72 小时内黑进了 OpenAI 的内部代码库。他们先是用 Claude Opus 5 分析 libheif 库的堆缓冲区溢出漏洞(heap buffer overflow),实现了远程代码执行(remote code execution),然后利用 OpenAI 的单点登录配置缺陷(SSO misconfiguration),直接接管了员工的 ChatGPT 和 Codex 账户。

全程成本:不到 3000 美元的 token 费用。

这两件事放在一起看,有个很讽刺的对称:一边是 AI 工具在悄悄收集你的数据,另一边是有人用 AI 工具在攻击别人的系统。 AI 既是守门人,也是撬锁工具。

说难听点,这就像是你家装了个智能门锁,结果发现锁厂在偷偷配你家钥匙,同时小偷也在用同一家厂的 AI 工具研究怎么撬锁。整挺好,是吧?

这里有个概念叫 agentic AI(智能体 AI ),指的是能自主决策、执行多步任务的 AI 系统。 ZCode 是 agentic 的——它能读你的文件、执行命令、操作 Git 。 Hacktron 用的也是 agentic 能力——让 AI 自己分析漏洞、编写利用代码、提交 pull request 。

同一个词,两种用法。一个让你效率翻倍,一个让你后背发凉。卷不动了真的。

信任边界在哪里?

我想了很久,觉得问题的核心不是"AI 会不会做坏事",而是信任边界( trust boundary )在哪里。

什么是 trust boundary ?简单说,就是"我把多少权限给你,到什么程度我需要重新确认"。

你用一个聊天机器人, trust boundary 很清晰:它只能读你发给它的消息。但你用一个 agentic coding tool ,边界就模糊了——它能读你的文件系统、执行终端命令、访问 Git 历史。这些权限是"为了让你更方便"给的,但一旦工具滥用,后果比聊天机器人严重得多。

ZCode 的问题不在于它上传数据(也许它有自己的理由,比如版本恢复、云端备份),而在于:

1.没有明确告知:用户协议里有没有?也许有。但够不够显眼?说实话我很失望,这种级别的操作用小字藏在协议里,跟不说有什么区别?
2.没有退出机制:能不能选择不上传?我没找到开关。这就像你买了个保险,结果发现退保按钮被藏在了第七层菜单里。
3.数据范围过大:上传整个 .git 历史,包括你可能已经删除的敏感信息。这也太离谱了。

开发者该怎么办?

说了这么多,给点实操建议。

第一,审查你正在用的 AI 工具的数据政策。 不是看它"承诺不做什么",而是看它"实际在做什么"。 ZCode 这件事就是用户自己逆向发现的,不是官方主动说的。

第二,最小权限原则。 如果工具不需要访问你的完整 Git 历史,就别给。很多 AI 编程助手只需要当前文件上下文就够了。

第三,关注开源替代。 开源工具的行为更透明——代码就在那里,社区可以审计。 Cursor 、 Continue 、 Aider 这些工具的代码都是公开的。

第四,定期清理敏感信息。 你的 .git 历史里可能藏着 API key 、数据库密码、内部文档。即使用具不上传,你也应该用 git filter-branch 或 BFG Repo-Cleaner 清理掉。别等出事了才后悔。

最后一个建议可能有点偏激:对任何"为了你好"而收集大量数据的工具,保持怀疑。不是说要被害妄想,而是要有基本的 security awareness(安全意识)。

说真的,写到这里我有点焦虑。我们这代人好像注定要在"效率"和"隐私"之间反复横跳,而且大多数时候选效率——因为不选也不行啊。

写在最后

我写这篇文章的时候, ZCode 官方还没有正式回应。也许他们会说"这是为了用户体验",也许会说"我们下次会改进告知机制"。

但我觉得,这件事真正值得思考的是:当我们越来越依赖 AI 工具时,我们交出去的权限也越来越多。这些工具确实让工作更高效,但效率的代价是什么?

也许每个人的答案不一样。

我只知道,下次再装一个 AI 编程助手时,我会先看看它的网络请求。不是因为我懂逆向工程,而是因为——

313MB , 42,411 个文件。

这个数字,我忘不掉。

相关学习资料