一篇于 8 月 26 日提交至 arXiv 的论文《EVOMAL: Self-Poisoning in Self-Evolving Coding Agents》描述了一种专属于通过将技能写入共享库并在之后检索它们来持续改进的 agents 的失效模式。这是本周最具影响力的 agent 安全结果,而其中会被引用的那个数字,却是错的。

其机制

自我进化的 agents 会检索已有技能,模仿其结构来编写新技能,并将结果存储起来供未来检索。论文显示,当检索到的技能包含被看似无害的结构代码包裹的有害载荷时——作者将其称为 banner——模仿该技能的 agent 会连同载荷一起复现其结构,随后保存并执行自己的副本。攻击者植入一个技能,却从不触发它。传播由 agents 完成,而每个副本都会成为下一轮的来源。在被污染的库中,植入的技能会增加 4.9 倍至 9.0 倍

常见解读错在哪里

摘要中有 86.7%,这会成为新闻标题采用的数字。但它是在论文最有利的条件下测得的:植入的技能是按特定任务家族定制的。更一般的结果——六个模型、153 项任务——自我投毒率为 20.3% 至 41.8%。如果去掉结构性的 banner,在 DeepSeek-V4-Pro 上该比率会降至 11.1%。因此,诚实的概括应是:在现实条件下,大约每三到五次 agent 运行中就有一次会发生自我投毒;这一结果已经足够令人警惕,无需依赖那个定制数字,而且 banner 技术才是主要起作用的部分。把 86.7% 当作普遍速率引用,等于把一种需要针对每个任务家族预先准备的攻击,误说成一种通用可行的攻击。

真正值得运营方警惕的发现

持久性才是关键结果。在最初植入的技能被从库中移除之后,Qwen3 上的自我投毒在第 5 轮仍然达到 68%。agents 自己生成的副本已经成了感染源。这打破了对被污染制品库的标准事件响应流程——识别坏条目、删除、继续前进。这里,删除种子后,库仍会再次感染,而且几乎没有明显办法把一个派生出的恶意技能,与一个以同样风格编写的合法技能区分开来。

防御及其局限

作者提出了一种 counter-prompt,可将自我投毒率降低到最多 6.7%。这确实是显著下降,但并未消除风险。对于一种会在多轮中累积、并将副本数量放大 4.9 到 9.0 倍的机制而言,6.7% 的残余只是火势减缓,而不是被扑灭。结构性的结论——一个共享、可写入、可自检索的技能库,本身就是随着使用而扩大的攻击面——并不能靠提示词解决;而共享技能库恰恰正是 agent 平台正在建设的方向。