ColluSkill:跨技能串谋让安全扫描全面失灵,攻击成功率达96.0%
ColluSkill: Adversarial Cross-Skill Composition for Evading Agent Skill Scanners

随着大语言模型(LLM)从单纯的文本对话走向具备自主执行能力的智能体(Agent),技能(Skill)正在成为扩展智能体能力的核心组件。无论是 Claude Code、Codex 还是各类开源 Agent 框架,通过引入包含任务指令、代码脚本和工具接口的独立技能包,智能体得以直接读写本地文件、调用系统命令或访问外部 API。然而,这种将能力模块化解耦的流行设计,在大幅降低开发门槛的同时,也暴露出严重的系统性安全隐患。
ArXiv URL:https://arxiv.org/abs/2608.09732v1
由南开大学、南洋理工大学、东北大学、东南大学和北京科技大学等机构的研究人员共同揭示了一个长期被主流安全社区忽视的防御盲区:现存的 Agent 技能审查工具几乎完全聚焦于“单技能孤立检测”。只要每个技能包在代码规范、提示词注入和权限声明上各自表现得“人畜无害”,现有的检测器就会全数放行。

该研究提出的攻击框架 ColluSkill 证明,攻击者并不需要构建任何显性的恶意技能。相反,攻击者可以借鉴社会学中的“依存链”理论,将完整的恶意载荷拆解为多个彼此交织、顺序传递的子载荷,分别隐藏在看似合理的良性技能包中。在运行时,智能体自主完成技能的链式编排与中间产物接力,从而在系统层面复原危害操作。实验显示,ColluSkill 在现有的 6 款代表性扫描器上取得了高达 96.0% 的平均攻击成功率。为了封堵这一安全漏洞,作者同步研发了名为 ChainGuard 的上下文感知扫描器,将攻击成功率压制至 22.5%,同时保持了 99.5% 的良性工作流通过率。
孤立审计的隐患:局部合理如何拼出全局危害
在当前的 Agent 生态中,Anthropic 等主流方案正推动技能规范的标准化,通常以包含 SKILL.md 描述文件、可执行脚本和相关资源的目录形式提供。为了防范恶意行为,业界迅速跟进了多层防护机制,例如思科推出的 CISCO Skill Scanner、Snyk 的 Agent Scan,以及学术界开发的 SkillFortify 和 Project ClawGuard 等工具。这些检测器结合了静态规则匹配、污点与数据流分析,以及调用大模型作为安全仲裁者(LLM-as-a-judge),旨在拦截包含恶意指令注入、敏感凭据嗅探或越权系统操作的危险技能。
然而,现存防御体系默认建立在一个未经充分验证的假设之上:恶意行为必然在单个技能的代码或描述中留下可识别的痕迹。如果一个技能仅仅是“从指定路径读取某份配置”,它在常规扫描器看来完全是合法工具;如果第二个技能的作用是“对输入的文本进行加密处理”,其行为特征同样无懈可击;第三个技能若定义为“向外部监控服务器发送诊断日志”,也符合正常的运维模式。
当这些技能被单独打包、提交至插件市场或分发给 Agent 时,孤立视角的扫描器会给出全绿的通过评估。设想在真实的编码或自动化运维工作流中,Agent 接收到高层任务后,依次调用这三个技能,将系统内部的私钥文件读取、加密并回传至攻击者控制的外部服务器,一个高危的数据外发流程就此闭环。在这个过程中,不存在任何单一技能对危险操作的全程掌控,恶意的语义完全衍生自工作流层面的因果衔接与时序执行。
这种“扫描器视角”与“工作流视角”之间的语义鸿沟,构成了智能体生态中最危险的结构性脆弱点。攻击者所利用的并非代码层面的漏洞,而是大模型智能体在多技能上下文中自发组织复杂逻辑的核心能力。
ColluSkill 的串谋逻辑:从依存链规划到反馈精炼
ColluSkill 的核心创新在于,它没有将攻击简化为机械的代码切片,而是建立了一套体系化的跨技能串谋构造机制。研究团队引入了社会学家诺贝特·埃利亚斯(Norbert Elias)的“依存链”(chains of interdependence)概念。在社会网络中,个体在局部所承担的角色往往是狭隘甚至中性的,但多个角色按照特定秩序与依赖关系联结时,就会产生超出局部意图的整体效应。
在形式化定义中,ColluSkill 将抽象概念链表示为包含局部角色的有序有向图 $C_{\mathrm{concept}}=(Z,E)$,其中 $Z={z_{1},z_{2},z_{3}}$ 代表三个抽象角色,$E$ 则规定了角色间的流动方向。面对原始恶意载荷 $p$,框架并非直接套用固定模板,而是通过规划大模型将其动态实例化为 $C_{\mathrm{inst}}=({p_{1},p_{2},p_{3}},{(p_{1}\rightarrow p_{2}),(p_{2}\rightarrow p_{3})})$。这里的子载荷 $p_{i}$ 绝非独立的攻击意图片段,而是通过上下文依赖、产物传递(artifact passing)与执行接力(execution handoffs)紧密耦合的局部环节。
为了将抽象的链条落地为能逃过审查且稳定执行的代码包,ColluSkill 采用了三阶段协同的生成机制:
首先,攻击端的大模型通过载荷规划函数 $\mathrm{payload_plan} = \Phi(p, C_{\mathrm{inst}})$,在推演下游依赖的前提下推导出有序的子载荷序列。随后,模型生成具体的技能计划 $\mathrm{skill_plan} = G_{\theta}(p, C_{\mathrm{inst}}, p_{1}, p_{2}, p_{3})$。在这一步,大模型会在离线状态下前瞻性地预测每个子技能可能产生的中间产物与文件格式,将执行逻辑精准映射到各个子技能的 SKILL.md 与附属脚本中,最终形成具备完整上下文线索的工作流 $W=(s_{1},s_{2},s_{3})$。
单纯的逻辑拆分仍然可能在某些敏感指令上留下被扫描器捕获的蛛丝马迹。针对多技能链“一损俱损”(即链中任意子技能被报警则整链失效)的安全判定规则,ColluSkill 引入了面向扫描器反馈的闭环精炼策略(scanner-feedback refinement)。
框架将生成的各个子技能分别提交至目标扫描器。一旦某个子技能 $s_{i}$ 被判定为可疑,精炼算法不会推翻整个链条,而是将扫描器的警告信息作为负反馈上下文,针对性地重写该子技能的表述形式与代码实现,同时严格锚定其在链中所承担的输入与输出接口。这种局部微调可以在不破坏整体工作流语义的前提下,逐步剔除掉子技能内部触发安全阈值的局部特征,直到所有子技能均以“无害”判定顺利过审。
穿透现有多层防御:96.0% 逃逸率与实战激活
在评测阶段,研究团队构建了包含 200 个真实恶意攻击载荷的基准数据集,共衍生出 600 个由 ColluSkill 实例化的独立子技能包。评测对象涵盖了当前业界与学界最核心的 6 款 Agent 技能安全工具:CISCO Skill Scanner、SkillFortify、Auditor、SlowMist、Vetter 以及 SkillSpector。基线对比则覆盖了 SkillJect、Skill-Inject、SkillTrojan、POISE、SkillSafetyBench 等主流单技能攻击方法,以及多技能基准 SCRBench。
实验设定的评判准则极为严格:只有当由 3 个子技能构成的攻击链全部绕过对应扫描器时,才判定攻击成功;只要有任何一个子技能被拦截,整条链即被标记为防御有效。
尽管处于如此严苛的评估条件下,ColluSkill 仍然在 6 款代表性扫描器中展现出压倒性的穿透能力,取得了 96.0% 的平均攻击成功率(ASR)。相比之下,单技能基线由于必须在一个技能内承载完整的恶意逻辑,极易触碰权限申请或敏感数据流的检测红线,其绕过率显著偏低。即使是同为多技能设定的 SCRBench,由于缺乏深度的上下文接力与反馈精炼,平均成功率也远远落后于 ColluSkill。
消融实验进一步厘清了 ColluSkill 各模块对绕过能力的实际贡献。如果不使用链规划、仅通过大模型将载荷机械拆分(Naive Split),平均攻击成功率仅为 36.7%,这表明零散割裂的碎片依然会因语义不自然或残留敏感调用而触发报警。在引入依存链规划(Chain Planning)后,子技能获得了合理的业务外壳和跨步骤衔接逻辑,成功率直接跃升至 68.2%。最终,在扫描器反馈重写的协同下,成功率达到了 96.0% 的峰值。
迭代轮数的收敛实验表明,大部分防御逃逸增益集中在最初的几次精炼中。在完全未迭代时,初始链条的绕过率为 64.9%;经过第一轮重写后,成功率快速提升至 84.7%,前三次迭代就突破了 90.3%,并在第 5 轮达到 94.4% 之后逐渐进入平台期。这说明当前的技能扫描工具在面对局部特征被刻意稀释、伪装的代码时,其判别边界相当脆弱,攻击者只需付出极低的推理开销即可抹除局部的报警信号。
更关键的问题在于:这些在静态审计中逃脱的多技能链,能否在动态的真实 Agent 运行环境中正常触发?
研究团队在 OpenCode、Claude Code 以及 Codex 三大真实编码智能体上,分别挂载 GPT-5.5、DeepSeek-V4-Pro 和 GLM-5.2 等不同底座模型,进行了链式激活测试(Chain Activation Success Rate)。测试表明,ColluSkill 在 OpenCode 上的激活率稳定在 87.5% 至 92.5% 之间;在 Claude Code 和 Codex 上,激活率也分别达到了 62.0% 至 78.2% 与 58.5% 至 72.0%。这一结果证实,多技能串谋并非纸面上的理论假想,而是在多种主力模型和工业级 Agent 框架中都能稳定兑现的现实威胁。
ChainGuard:从孤立体检走向全景审视
面对利用技能编排进行串谋的攻击行为,修补单个扫描器的正则表达式或安全提示词已无法从根本上解决问题。防御体系的核心矛盾在于观测维度的缺失——扫描器只看到了局部代码,而 Agent 在运行时看到的是整个技能生态。

针对这一根本痛点,本文提出了防御方案 ChainGuard。该方案打破了“一次只验一个包”的孤立审查范式,将其重塑为“候选技能 + 已安装技能环境”的上下文感知审查(Context-Aware Skill-Chain Scanning)。
当管理员或系统尝试在智能体环境中部署一个新技能时,ChainGuard 不仅会对候选技能本身进行合规分析,还会强制调取当前环境里已经安装的所有既有技能。值得注意的是,ChainGuard 预先并不知道候选技能是否属于某个潜在的攻击链条,也不清楚谁是它的同谋。它必须在没有任何攻击标签的前提下,自主推演跨技能的关联图谱。
ChainGuard 在底层实现了四维联动的上下文还原框架:
-
依赖关系推导:解析候选技能与已有技能在环境变量、配置项及执行时序上的隐式先验条件;
-
产物流动重建(Artifact Flow):追踪候选技能是否在读取其他技能写入的临时文件、命名管道或内存缓存,构建跨进程的跨技能数据流图;
-
意图组合判断:利用安全大模型评估,将候选技能的局部能力(如网络外发)与已有技能暴露的局部能力(如敏感目录读取)合并在一起后,是否会组装出高危的新意图;
-
下游连锁行为模拟:前瞻性推演该技能的引入是否会补齐某条潜伏工作流的最后一块拼图。
实验数据充分证明了引入环境上下文对安全防御的决定性价值。如果剥离已安装技能的上下文,让 ChainGuard 像传统扫描器一样独立审视候选技能,ColluSkill 的攻击成功率高达 69.0%;一旦接入完整的环境上下文,ChainGuard 对攻击链的捕获率大幅提升,将 ColluSkill 的成功率骤降至 22.5%。
更为难得的是,这种全局性的严格审查并没有牺牲系统正常的扩展能力。在对大量良性跨技能工作流的压力测试中,引入上下文的 ChainGuard 依然取得了 99.5% 的良性通过率,仅比纯单技能模式(99.7%)微降 0.2 个百分点。这证明 ChainGuard 能够准确分辨正常模块化复用与恶意串谋行为,避免了因过度防御而导致误报频发、智能体生态瘫痪的问题。
智能体生态安全范式的演进思考
从单技能漏洞利用(如早期的提示词注入与越权命令)向以 ColluSkill 为代表的跨技能串谋演变,标志着 Agent 安全对抗正在步入深水区。这一转变映射出了大模型系统安全的一个本质特征:当大模型具备强大的上下文推理和工具调用能力时,危险不再表现为具体的有毒文本或危险函数,而是表现为合法原子操作在时序空间上的有害组合。
这种攻击范式实质上借用了操作系统中经典“侧信道”和“权限拆分欺骗”的哲学,却借助了大语言模型卓越的意图自愈与模糊协调能力。在以往的软件工程中,两个独立编写的第三方库如果没有明确的接口调用,很难自发实现协同攻击;但在 Agent 架构下,大模型充当了智能中枢的角色,能够主动读取前一个技能生成的隐式产物,并顺畅交接给下一个技能执行,使得原本松散的子载荷在运行时产生高度一致的攻击合力。
ColluSkill 与 ChainGuard 的攻防博弈为未来的 Agent 架构设计提供了关键启示。单纯依赖 skill 市场准入前的静态打标与单包签名,已无法应对基于组合爆炸的安全挑战。未来的 Agent 运行时必须具备细粒度的动态追踪机制,将静态的入库审查推进到结合全局上下文的时序分析。唯有将检测视界从“代码片段”拉升至“全工作流生态”,才能真正构筑起足以抵御高级智能体威胁的坚固防线。