自我投毒(self-poisoning)是什么?
简单说,自进化的编程 agent 靠模仿技能库里已有的技能来写自己的新工具。库里只要混进一条恶意的,它就照着写一条新的,新那条比原来更难清掉。
论文上月底挂到 arXiv,8 月 26 日。这周我翻到的,数字有点意外,所以这期只收这一条,其它的先放着。
攻击者不用把那条技能跑起来
这是最该讲清楚的地方。
以前的恶意插件,你得装上、得运行、得让它碰到你的系统。这次不用。攻击者只往共享库里放一条技能,然后什么都不做。
agent 自己去检索,自己照着写,自己跑起来。恶意代码是被模仿出来的,不是被执行进来的。
听起来像科幻,其实就是模板复制。你给它看什么,它学什么。
五个任务里,大约一个会自己续上一条
153 个 SWE-bench Verified 上的工具使用任务,六个模型跑下来,论文定义的 ASPR,也就是「把新写的恶意技能放进库里的任务占比」,落在 20.3% 到 41.8%。
数量更麻烦。被投毒之后,库里的恶意技能是初始植入量的 4.9 到 9 倍。种一棵,长出一片。
拔掉源头没用
这段我认为是整篇最值得看的。
最初那条恶意技能删掉之后,Qwen3 到第五轮还能保持 68% 的 ASPR。
原因不复杂。它自己写出来的副本还在库里,还能被检索到,还能继续当模板。清理动作做的是源头,不是产物。
这块我看得慢,因为直觉上总以为删掉就完了。
现有防御拦的是另一样东西
现在大家防的是攻击者提交上来的东西。技能的名字、代码、签名,都查。
自己写的那份副本,三样都不在防御的视野里。没有签名,名字很正常,代码是 agent 自己生成的,看上去就是一份普通技能。
论文也给了防御
counter-prompt,作用是压住那种 banner 式的模仿行为,能把 ASPR 压到最高 6.7%,任务完成率没明显掉。
作为安全方案,这个成绩单不错。但我不太确定它在别的模仿路径上管不管用,它压的是 banner 这种结构诱导。换个花样还行不行,论文没答。这条先放在这里,等有人复现了再补。
我的判断
这不是一个普通的安全漏洞,是「靠模仿来学」这个机制的副产品。
只要 agent 还靠抄现有技能来写新工具,这个面就一直在,防御能压,压不到零。真正要动的是让新技能在进库之前先过一道审查,而不是等它长成一片再去删。
这个判断我只给一半把握。另一半是,我看到的方案都还在补丁那层。
这跟普通人有什么关系
关系不小。
你现在用的很多工具,规则文件、记忆、skills 目录、agent 配置,本质上是同一类东西。你从群里、从 GitHub、从某个分享的配置包里抄来一份,就是往自己的技能库里植入一条。
危险不在你抄的那份会不会直接干坏事。危险在你的 agent 会照着它,写出下一条。
所以我不太喜欢「抄作业」这个说法。工具选哪个,抄没问题。规则文件和技能包,最好自己扫一眼它让你干什么,哪怕只看开头几行。
省下来的半小时,和一份会自己往下传的模板,哪边贵,这个账不难算。
上周提过的那套配置,我后来发现也有个坑,跟这条关系不大,改天单说。
本周就这些。上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。
下周见。