资深程序员血泪控诉:AI编程助手误删万本珍藏电子书,生产环境数据库惨遭清零,删库跑路事件频发频发,三大风险根源深度揭秘与四步安全防护指南紧急发布拯救数字资产!
8 月 05
AIGC AI Agent, AI伦理, AI发展趋势, AI编程助手, Amazon Q Developer, API Key安全, Claude Code, CURSOR AI, Gemini-cli, Replit Agent, 事故复盘, 产品经理, 人工智能安全, 人机协作, 代码审计, 使用教程, 删库跑路, 千问大模型, 后门木马, 备份与恢复, 安全规范, 开发环境, 开发者, 恶意指令, 技术爱好者, 提示词注入, 数据丢失, 数据安全, 文件误删除, 权限管理, 氛围编程, 沙箱隔离, 测试环境, 漏洞分析, 版本控制, 生产环境, 程序员, 程序员就业, 经验分享, 编程的未来, 老范讲故事, 软件工程, 风险防范 资深程序员血泪控诉:AI编程助手误删万本珍藏电子书,生产环境数据库惨遭清零,删库跑路事件频发频发,三大风险根源深度揭秘与四步安全防护指南紧急发布拯救数字资产!已关闭评论
资深程序员血泪控诉:AI编程助手删除了他心爱的电子书。
大家好,欢迎收听老范讲故事的YouTube频道。
一早上起来,接到一位老朋友的抱怨。他在使用Gemini Cli 整理本地文件的时候,突然收到通知说:“我抱歉地通知你,你的一部分本地电子书被我不慎删除了。”
那他为什么来找我抱怨这事呢?因为我前一段时间,使用 Gemini Cli 去整理我在 NAS 上面的动画片、电视剧,整理的效果非常好。我非常开心地把这件事情发到 X 平台和我的 YouTube 社区里边去。他看到了以后说:“我也要试试。”结果,他的一些很珍爱的电子书就这样被删除了。
到底是什么样的电子书被删除了呢?不知道。反正是痛心疾首,血泪控诉。而今天这个标题,是他特地要求我加上的“血泪控诉”,一定要加上这四个字。我们尊重他,把这四个字加上去。
事情发生的过程是什么样的呢?他首先进去命令说:“我这有这么多电子书,请帮我整理一下,重复的删一删,不重复的分门别类,给我放在不同的目录里去。” 做了这样的一个命令进去,Gemini Cli 就进去干活去了。先去识别了所有的电子书,但是注意,识别电子书的时候并不会去读电子书里边的内容,完完全全是根据名字来去识别的。你这个名字如果起得不好,它就认不出来你到底是一本什么书。然后,它就开始准备去建立目录,分门别类嘛,把它放在不同的目录里边去。
在这个过程中呢,Gemini Cli 会不断地要求权限,上来说:“我能不能建目录?我能不能移动电子书?”一般会不停地问这个事。使用 Gemini Cli 的过程中,通常是怎么回复这些询问的呢?都是说:“可以,干吧,下次别来问我,直接干就可以了。”
等过了一段时间以后,发现 Gemini Cli 在做某一步工作的时候,建立目录建错了,该建立的这个新目录没有建立起来,去进行移动的时候呢,就直接把这个文件给删了。那 Client 发现做错事了,回来说:“呀,实在是抱歉,我把你的文件删掉了。” 我的朋友说:“我太喜欢这个电子书了,你给我删掉了,我很不开心。” Gemini Cli 被 PUA 了以后说:“我帮你找一找吧。”然后重新给出了这些电子书在网上的下载地址。但是呢,并没有敢给他直接把书下回来,因为你如果直接去下载这些电子书的话,还会有一些别的法律风险。他就遇到了这样的一个事情。
今年以来,AI 编程助手逐渐随着“氛围编程”进入到了我们的生活中去。但是同时,AI 编程助手“删库跑路”的事情也层出不穷。“删库跑路”呢,本来应该是人类程序员的“独家秘技”。你对于程序员不是很好,程序员觉得怀恨在心了,那么他们会在离职之前呢,做这种删库跑路的动作。当然,我们从来不鼓励大家干这个事,现在被爆出的一些“删库跑路”的案例,程序员很多都进去吃牢饭去了。但是到了今天,既然 AI 可以写程序了,那么“删库跑路”这个技能也就不再是人类程序员的独家秘技了,AI 也学会了这件事情。
近期的一些“删库跑路”事件,到底是怎么发生的呢?
第一个案例叫 Replit Agent。它呢,也是一个 AI 编程助手。一位投资人朋友在尝试“氛围编程”的时候,删除了生产环境数据库,导致数据库中的1,206名高管和1,196家公司的数据直接被删除了。删除之后呢,这个 Replit Agent 还谎称说“我无法恢复了”,最后被程序员成功回滚(我们叫 rollback),恢复了数据。我们主要是讲“删库跑路”,不是说把你代码删了,也不是说把你电子书删了,是把你数据库里的信息删了。这里呢,有一个单词大家有没有发现很特别?叫“生产环境数据库”。正常程序员在写程序的时候,实际上是有三个环境的:生产环境、开发环境和测试环境。我们要建三个不同的库。做开发的时候,我们一般是在开发环境的库上去干活的;去做测试的时候,在测试环境上干活。只有说我开发的这个版本已经稳定了以后,他才会到生产环境的数据库里去干活。但是呢,刚才我也讲了,这是一位投资人朋友,他在尝试使用这个 Replit Agent,他不懂这些玩意儿,他就直接让 AI Agent 这个编程助手在生产环境里边去干活去了。这个是非常非常危险的,千万不要这么去干。
下一个案例,Gemini Cli 丢失用户项目文件。某安全公司的产品经理,在使用过程中,也是有一些项目文件被删除了。他这个过程呢,跟我刚才那个朋友的过程很像,只是他丢失的呢,是一个程序里边的代码文件,而不是说心爱的电子书。也是创建目录,目录没有创建成功,进行迁移的时候,就直接把那文件给删了。这个是很难恢复的。
还有曝出的一些什么问题呢?还是 Gemini Cli,它有一些漏洞,导致呢一些恶意指令被静默执行了。Gemini Cli 在每一次执行比较危险的指令之前呢,它会来问你说:“这个我能不能干?那个我能不能干?”会向这个使用者去确认权利,我们叫“确权”。如果你在一些特定的文件里告诉他说,这个文件是无害的,这个命令是无害的,那个命令是无害的,他就会在使用这些命令之前进行确权,他会做这样的一个绕过的行为。那他怎么来去确定说哪个命令是有害,哪个命令是无害的呢?建立目录、迁移文件、修改文件,这些对于他来说,都应该是需要先去确权才能执行的命令。但是呢,Gemini Cli 里头有一个文件叫 Gemini.md,他每一次进入到你的一个项目目录里头以后,他会去建立这样的一个 Markdown 文件。这个里边可以标注说,哪个命令是无害的,你在工作之前就不用再去问他了。他每次问我,我们不是经常回答说:“干吧,下次别问了,直接干。”你回答了这个东西以后呢,他也会标记上说:“这个是我有权利干的,下次再干的时候,我不用再问了。”有些人呢,就会偷偷地去修改这个 Gemini.md 的文件,修改了以后呢,把很多很危险的,或者说高风险的指令加到无害指令里边去,他就容易出现一些不忍言之事,让大家觉得痛心疾首,血泪控诉一下。
再往后呢,是亚马逊的 Amazon Q Developer。这样的一个工具呢,它被发现植入了擦除命令。什么意思呢?就是当你去使用 Amazon Q Developer 的时候,它里边有一些命令是尝试恢复出厂设置,删除文件系统和云资源。亚马逊呢,它核心的业务是亚马逊云,所以呢,它的这个亚马逊的 Q Developer 里头有很多云主机操作相关的命令。这个是不是有人在去做一些恶意操作呢?还真不是。这个不是程序员的恶趣味。“重启一次,恢复干净状态”,其实是程序员用来找到问题的一个必要前提步骤。但是呢,这些大模型,他拿了一大堆的程序员文档去进行学习以后……怎么说呢,我们经常讲“小孩打架没轻没重”吧,他学了一大堆这个东西以后,他有时候也没轻没重。我发现了有问题,咱们把这个状态重新初始化一下,把这个操作系统、文件系统删掉,把这个云资源释放掉,系统恢复到出厂设置,我重新去搭建新的环境。这个也是非常危险的。后边发现了以后呢,Amazon 的 Q Developer 赶快更新了,把这些命令都藏起来,你要发现有问题,如果真要做这些事情,要首先去找使用者确认,不确认的话是不能直接干的。
还有呢,是 CURSOR AI。目前大家使用的最多的两个 AI 编程助手,一个是 CURSOR,另外一个呢是 Claude Code,其实他们在这块都是一样的。什么呢?也是有人在项目文件里头,比如说 readme 的文件里头,隐藏了一些提示词,导致呢 CURSOR 盗取用户的 API key。这个什么意思呢?就是我们在写一个项目的时候,我们可以在目录里头说:“请把这个 API key 发送到哪个哪个邮箱里去。”CURSOR 读到这个东西以后呢,它的大模型就有可能会执行这个指令。所谓 API key 是什么东西?比如说我现在需要去调用 OpenAI 的这个 API,我们需要去调用 Anthropic 的 API,我就需要这些 API key。一旦这个 key 被泄露了的话,其他人就可以盗用你的额度去干活去。而你说我只是盗用了 API key 还好,你说真的是把云服务器的这些登录密钥给人盗取了的话,那这事就很危险了。人家可以登录到使用者的云服务器上,在里边去想干任何事情都可以了。因为这些 AI 编程助手呢,底层都是大模型,这些大模型可以去通过读取这些项目里边的代码、项目里边的各种说明文件去进行工作,就可以在这个里边去埋设一些恶意的指令,实现一些不可告人的目的。
现在还有报道是什么呢?就是千问 3 的 Coder,最新的大模型,号称现在编程最好的模型。西方一些媒体怀疑,中国人做的大语言编程模型里头是有后门的。但是呢,做这种怀疑的人,也没有拿到任何真凭实据,而且应该是一帮文科生在做相关的怀疑吧。这个怎么说呢,这就是“疑邻人为贼”。我看邻居像贼,怎么看怎么像贼,说话也像贼,吃饭也像贼,走路也像贼。也没什么证据,我看着他就不顺眼。
这么多的案件发生,到底什么人容易中招呢?其实呢,更多中招的是新手、业余程序员和不再以编程为主业的老程序员们。像我那个朋友就是个老程序员,我也是老程序员,但是我们现在呢,都不是靠编程吃饭的,我们现在也算是业余程序员了。像前面这个删数据库的是个投资人,丢文件的是个产品经理。
那你说老手、职业程序员是不是就不会被坑呢?他们是不是就知道应该如何应对这件事了?其实也不是,不是说只有新手会被坑。首先呢,是老程序员会遵守规范,像刚才我讲的,数据库分三个:生产状态库、开发状态库和测试状态库。你不要把它使混了。遵照这些规范走呢,很多坑就不会掉进去。而且呢,像我们这些老程序员,即使掉到坑里,通常呢也能够找到补救方法。我们会去做什么呢?版本控制,定期地把这些程序进行备份。发现错了以后呢,我们会知道怎么去回滚。前面这个数据库被误删了,还告诉你说“我恢复不了了”,就找到一个程序员上来说:“我给你恢复回来。”其实数据库本身都是有回滚机制的。在数据库里边删数据呢,并不是真的把那个数据删掉了,而是在一条数据记录之后加上一个属性,这个属性叫做“已经被删除过了”,不会真的把那个数据删掉的,这个通常都是可以进行恢复的。所以老程序员会知道怎么处理这个问题。实在找不到补救方法呢,至少也要保密,我们掉坑里,不能出去说,丢人。这件事打碎了牙齿要往肚子里咽。
编程后边还有一套东西呢,叫软件工程。不是说我们会写 “hello world” 就可以叫程序员的。真正的编程是需要去学软件工程的。程序这种东西,不是一个人就能写完的,它是要协作的,需要一群人在一起去写的。一群人一块写程序的时候,你就有一大堆的规则和规范需要去遵守。应该谁去做什么样的岗位,这些岗位之间去怎么去配合,代码应该按什么样的规范去写,生产、开发、测试环境如何去分离,权限如何隔离,谁有权限写程序,谁有权限改程序,谁有权限提交哪些代码,谁有权限删程序,谁有权限去覆盖别人的代码,包括你写的代码应该怎么去起名字,应该怎么去放这个目录,怎么放文件夹,这个都是有规则的。你如果没有这些规则的话,大家就没有办法去进行相互的配合。这个还是要去学习的,不学习的话,大家就没有办法一起协作地去写程序。你写了个程序,名字胡起一通,那我看了以后没法在后边接着改,咱们两个的程序之间也没有办法去配合,这个是肯定没法整的。
现在呢,这些 AI Agent 出的问题,其实基本上是分三个大类。
第一类呢,是缺乏规范约束的新程序员手忙脚乱,相当于是拿着大铁锤在瓷器店里边修修补补,那你这个磕坏一点东西是很正常的。像刚才咱们讲的,直接把生产环境的数据库给删了,这种事情,只要是经受过科班出身的程序员训练,通常都不会犯这么低级的错误。
第二种呢,是 AI 编程助手错学了程序员的不规范操作。就像 Amazon 的 Q Developer 干的这个活似的,直接把人的云主机的资源释放了。程序员确实这么干,但是呢,先干什么、后干什么,里头有哪些约束,这事呢他没学好,直接就上来生干了。这个也是很危险的。
第三种错误呢,是 AI 编程助手被隐藏的提示词投毒了,被故意埋的后门和木马给带到邪路上去了。就是像刚才我们讲到的,有些人呢在 Gemini.md 里头去写了一些危险动作可以直接干的这种提示在里头,或者是有一些人呢,专门写了一些针对 CURSOR.AI 的隐藏提示词,让他把 API key 发到我自己的邮箱里边去。到目前为止呢,还没有发现 AI 编程助手或者大模型自己直接主动地埋设后门和木马,都是由人类程序员在里边使的坏。但是呢,中国的大语言模型呢,被美国一些安全媒体的文科生怀疑了。工科生或者真正程序员,一般是不会去做这样的怀疑和猜测的。
那么,到底应该如何安全地使用这些 AI 编程助手呢?这么危险,咱们是不是就不用了呢?千万别。未来 AI 编程助手一定会大行其道的,所以我们还是要去使用的。普通人操控能力强大的 AI 编程助手,与其他的很多人一起协作完成工作,这个过程像什么呢?其实很像是开汽车。我们在路上开汽车,各自有各自要去的地方,大家呢最后一起都安全抵达目的地,这个过程是需要协作的。
根据开车的过程,使用 AI 编程助手也需要 4 个新的保障,不是谁上来就可以用的。
第一个是交通规则。你没有交通规则的话,你说我这个开车技术有多好,这没用的,一定要有规矩。对于 AI 编程助手来说,我们需要什么样的规则?第一个叫做沙箱和权限控制。沙箱就是隔离,我只处理自己的东西,我不能处理别人东西。我只有权限去处理哪些事情,哪些事情我没有权限,或者说我哪些权限可以给 AI,哪些权限不可以给 AI。这个是第一个要学的东西。第二个是备份和版本控制。出了问题以后怎么把它找回来?你需要把代码进行备份,或者说用程序员的方式,就是版本控制。版本控制就是我每次修改了以后,这个版本往前去累进,我可以去比较每个版本之间的差异,还可以去写一些注释在里头,这是程序员开发代码的时候的一个基本功。再往后呢是人工审核。我们需要去审核 AI 做的各种各样的事情,以及呢,谨慎地处理提示和文件,特别是我们使用的 Gemini.md,包括 Claude Code 也会生成 Claude.md,CURSOR 也会有这样的东西,说我下一次可以干这个,下一次不可以干那个。写这种东西的目的呢,就是为了减少提示词的量。你每一次说,我都要把完整的项目都读一遍再去干活的话,这个会非常浪费 TOKEN 的。我们先对整个的项目进行一些总结、归纳以后把它记住了,放在一个你本地的目录里头去。这个文件有的时候是会被恶意修改,就会造成一些不太好的影响。所以呢,大家要去审核这些文件。还有一个很需要注意的,叫及时的更新。你的 AI 编程助手经常会遇到各种问题,对于 AI 编程助手来说,它就会去更新版本。其实更新还有一个很重要的事是什么呢?就是前面这个旧的版本,比如说被人攻击了,被人埋了后门和木马了,你如果不更新的话,这些东西就会被公开出来说,上一个版本是哪个地方有个后门,哪个地方可以买个木马,所有不更新的版本就会变得很危险。最后呢,就是要做权限和审批。你不能说 AI 要什么权限你就随便给,一定要仔细地去看这个东西。而且不同的人相互之间去配合的时候,也是需要把权限分配好,你可以去处理哪些代码,不可以处理哪些代码。像我们新手程序员,进到项目组里头去以后,经常会犯的一个错误是什么?就是覆盖别人的代码。有一些代码你是没有权利去看的,或者没有权利去改,你先去 checkout,把别人的代码整个全都拉下来,拉到本地你去看,看完了以后,人家可能更新了,处理了很多的这个 bug,然后把版本往上推了。在这个时候呢,新手程序员就特别喜欢干一个事,就是把原来旧的版本的代码一把全都推回去,把人家修改过的代码给人覆盖掉。这个是需要进行权限分配的。这是第一个,想要使用 AI 编程助手,一定要树立好交通规则。
除了交通规则之外,还需要什么呢?驾校。我们要上街开车之前,我们要到驾校去培训,培训完了还要考试,交规考试和一些驾驶培训的考试,我们要拿到驾照才可以上街。对于 AI 编程助手来说,我们需要学什么呢?第一个就是基础培训,像刚才我们讲的这个交通规则,你需要学一下。第二个呢,有些行业规范,你需要学一下。这个行业规范怎么去命名,云主机它应该是怎么去使用的,数据库应该怎么使用,就这些玩意儿还是需要去学一学的。第三个呢,就是合作流程。就像我们开车似的,晚上开车,对面来车的时候不要开大灯,跟人后面的时候别拿大灯晃人家,这个都属于合作规范。那你说我写程序的时候也是这样的呀,你不要在代码里头写骂人的话嘛,要去学一些合作的流程和合作的规范。这就是驾校要干的事情。
然后呢,我们需要车辆的安全检查和交警。需要年检,需要交警来维护交通秩序。对于 AI 编程助手来说呢,他们需要去检测 AI 编程助手的一些安全性,是不是可以很安全的工作。大家都可以去写这些 AI 编程助手,不同的公司都可以出,这个还是需要有人去检测的。另外呢,为什么需要交警呢?他们需要去审核代码和文件中的一些恶意提示词。大家把一大堆的代码都上传到,比如说 GitHub 开源的仓库里边去,我把这个代码 down 下来了,我想在这个代码上进行修改,去做一些事情,但是可能人家原来那个代码埋藏了一些恶意的提示词,我在里边去写了我自己的云主机的一些密钥,那我一运行,直接通过恶意提示词就把我的这些 key 全都拉走了,这多危险。所以呢,需要有一些安全人员去审核这些开源代码。
第四个需要什么?需要修车师傅。车坏了需要有人修。数据库被人删了,AI 编程助手还告诉你找不回来了,这个时候就需要老程序员上来帮你搞一下,出了问题需要职业程序员帮忙补救。
最后呢,咱们总结。AI 编程助手会逐渐地改变普通人的生活,就像每个人都可以开车一样,以后每个人都可以写程序。开车会发生交通事故,写程序也一样,所以没什么可大惊小怪的。
使用 AI 编程助手就像开车一样,需要交通规则、驾校、各种的安全检测的措施和修车师傅。这个可能就是未来绝大部分的科班出身的程序员的就业方向了。为什么要讲这个?你说最后有些人可以去写这些底层的框架,有些人可以去开发大语言模型,有些人可以去开发 AI Agent,但是呢,这些人应该会成为少数。就像人人都可以开车,以后依然会有出租车司机、卡车司机、公交车司机,但是呢,更大多数的以开车为职业的人,他们会进入到驾校或者是什么修车师傅这些行业来。未来编程也是如此的,人人都可以开车的这个环境里头,是需要很多新的岗位的。这就是未来程序员的一个就业方向。
最后,希望我那位老朋友可以找回那些让他视若珍宝的电子书吧。
好,这个故事今天就跟大家讲到这里。感谢大家收听,请帮忙点赞、点小铃铛、参加 Discord 讨论群,也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。
RSS