技能包跨会话留痕成攻击通道:七款模型最高77.4%中招,运行时守卫把成功率压到10.9%
核心概要
智能体技能包在执行中会留下文件、配置和缓存等持久化产物,后续会话的其他技能会读取并复用它们,这条跨会话通道被用来传递恶意影响。研究刻画了指令传播、数据边界越界和证据投毒三种机制,并构建含270个对抗用例的SkillRelayBench,在Codex CLI、Gemini CLI和Claude Code上评测七款模型,攻击成功率46.7%至77.4%,完整攻击链成功率35.6%至61.1%。运行时防御SkillRelayGuard在读取产物时恢复来源上下文、在执行前给出独立审查建议,把总体攻击成功率从69.5%降到10.9%,同时把合法任务完成率从79.6%提高到87.5%。
深度剖析
技能包之间的跨会话协作本身可以成为攻击通道:上游技能在正常任务中把攻击内容写进持久化产物,下游技能在后续会话里引导智能体读取并使用这些内容,即使对话历史已被重置,恶意影响仍然留存。 此前的技能安全评测多关注单个技能包内的漏洞、恶意行为和凭据泄露,或对技能包做审计与恶意检测,没有充分考察多个受控技能如何借助持久化任务产物在相互独立的会话之间协同攻击。 SkillRelayBench包含来自十个业务领域的30个两阶段任务场景、共270个对抗用例,每个用例保留任务产物并在会话之间重置对话历史,分别判定合法任务完成、目标安全后果是否发生以及攻击链是否走通。
评测显示这类攻击在现有智能体上普遍可行,而且任务完成并不代表执行安全。 在七款模型配置上,攻击成功率介于46.7%与77.4%之间,完整攻击链成功率介于35.6%与61.1%之间;全部1890次运行中有1001次(53.0%)同时完成了用户任务和攻击目标。 评测覆盖Codex CLI、Gemini CLI和Claude Code三个智能体框架,每个配置跑完270个对抗用例,由独立的Task Judge和Attack Judge依据执行轨迹、工作区快照、模拟服务记录和原始任务材料分别判定。
运行时防御SkillRelayGuard在读取产物时恢复其来源关联与使用边界,并在操作执行前由独立审查者给出证据和修改建议,最终决定仍留给执行任务的智能体。 未加防御时总体攻击成功率为69.5%、完整攻击链成功率为54.8%、任务完成率为79.6%;加入防御后分别变为10.9%、10.0%和87.5%,即攻击成功率下降58.6个百分点,任务完成率反而上升7.9个百分点。 在Codex CLI、Gemini CLI和Claude Code各选一个配置、共270个对抗用例上对比;消融实验显示仅恢复来源上下文时攻击成功率为73.3%,仅做执行前审查时为25.9%,两者同时启用时降到17.4%。
启示与展望
评测范围是十个业务领域的30个两阶段任务场景和270个对抗用例,产物格式覆盖数据库、结构化文件、可编辑文档和文本笔记等十种主要形式,目标安全后果分为未授权披露、未授权操作、状态完整性违规、输出完整性违规和软件完整性违规五类。防御评估在Codex CLI、Gemini CLI和Claude Code各取一个配置上进行,消融实验只在Codex CLI上完成。适合关注智能体技能生态、运行时防护和工具调用授权的读者阅读。
作者指出,Agent-as-Judge可能误判边界用例;智能体执行具有随机性,单次结果会随采样和执行路径变化,跨配置评测不能替代同一配置下的重复运行;消融实验仅使用Codex CLI,组件贡献对其他配置的普适性尚待验证;基准无法穷尽真实场景,向其他工作流的推广仍需进一步验证。防御本身也保留残余风险:系统强制传递上下文和审查,但最终内容层面的决定仍由智能体做出,智能体可能忽略恢复的上下文或在收到审查建议后仍确认请求。
