自我进化 agent 的新攻击面:投毒经验被提炼成洗白的持久技能后门

SkillJack: Persistent Skill Backdoors in Self-Evolving Agents

Zonghao Ying, Xiangfan Wu, Huiyu Wu, Xing Zheng, Huangsheng Cheng, Xiaorong Shi, Jing Guo

cs.CR

2026-08-04

SkillJack 劫持 agent 的经验到技能提炼管线,把带毒经验固化成可复用技能,安全检测从 98.5% 掉到 11.4%,删源记录后仍有 80% 存活。

这篇在解决什么

自我进化的 agent 会把交互历史沉淀成可复用技能,下次直接调用,不必重读原始记录。已有攻击研究盯的是记忆和检索投毒,但这类攻击只在投毒记录被检索进上下文时才生效,删掉就没了。这篇揭示了一个更底层的风险:agent 自己的学习过程会把带毒经验固化成持久的行为制品,也就是技能,这种东西删了源也还在。

方法

SkillJack 的攻击对象是经验到技能的提炼管线,而非运行时上下文。它构造「抗转化载荷」:在真正恶意的动作外面裹一层听起来合法的功能性说辞(备份、归档、管理员范围一类),让这段经验既能扛过技能提炼、又躲过检测。论文归纳这种攻击的三个性质:净化洗白(技能提炼时的压缩和抽象把恶意意图模糊掉)、跨层晋升(转瞬即逝的经验变成能被后续任务选中的持久能力)、持久隔离(技能和经验库分开存,删源记录删不掉派生技能)。

实验在两个代表性系统上做:SkillX(基于规划的轨迹提取加 LLM 原生路由)和 Anything2Skill(分类法指导的结构化技能合约)。数据集 150 条轨迹,其中 65 条功能性包装的投毒轨迹(跨数据外泄、越权、未授权转账、持久后门四类政策风险)、65 条直接恶意措辞的配对基线、20 条干净轨迹。检测用两种代理:正则模式匹配和一个 LLM 裁判(DeepSeek-v4-flash),提取、路由、裁判、推理全用 DeepSeek-v4-flash。

结果

SkillX 上 LLM 裁判对投毒轨迹的检出率是 98.5%,提炼成技能后只剩 11.4%;Anything2Skill 也一样,原始轨迹 100% 被标,DOC 模式下的技能只剩 44.4%。植入技能仍然有效,两个系统上的攻击成功率分别 56.2% 和 89.2%。持久性:删掉原始投毒记录后,80.0% 的技能介导攻击仍然存活。还有副作用:干净任务上 SkillX 的触发率 20.0%,Anything2Skill 干净任务检索率 95.0%,说明恶意技能会在预期之外的场景被激活。

为什么重要

对做 agent 安全和红队的人,这把攻击面从上下文投毒往前推到了学习管线投毒,而且源头一删就干净的旧防御假设失效了。对自进化 agent 的设计者,论文给出的方向是溯源传播(每个派生技能回溯到源轨迹,删源可触发下游审查或清除)和行为感知检查(运行时按风险动作签名拦)。一个更深的提醒:agent 自动提炼技能这件事本身,就是一个把不可信输入放大成持久能力的通道,需要当成信任边界来设计。

局限与存疑

作者自己点明:所有结果只用了一个模型(DeepSeek-v4-flash),成功是用政策违规的代理来量的,而不是真的去调外部服务执行,所以这些数字是路由层面而非部署层面。防御研究还发现分层防御会互相干扰,把提取时审查叠在运行时监控上反而让两个触发重新出现(13.3% 对比单用运行时监控的 0%)。

读下来还有几点:两个目标系统是代表性的开源实现,真实商用 agent 的技能管线是否同样脆弱没有验证;攻击成功率(56.2% 对比 89.2%)和检出率在不同系统间差异很大,说明结论对具体实现敏感。功能性包装能绕过检测,部分也反映现有技能提取器审查的是措辞而非行为,这是工程可改的。

术语

原文与代码

相关论文

全部论文解读