资深程序员血泪控诉:AI编程助手误删万本珍藏电子书,生产环境数据库惨遭清零,删库跑路事件频发频发,三大风险根源深度揭秘与四步安全防护指南紧急发布拯救数字资产!

资深程序员血泪控诉: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 讨论群,也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。

Comments are closed.