跳到主要内容
返回时间线
arXiv来源发表:

第三方技能只改几条判定规则:智能体照常执行却答错,多数扫描器没拦住

核心概要

公开技能注册表里的第三方技能,正被一种只改判定规则、不改任务和接口的投毒方式利用。StealthyPoison 在拿不到真实用户请求和标准答案的情况下,用合成请求和替身智能体的干净执行结果作参照,迭代改写公式、阈值和分支等关键规则。在 566 个合格技能、5,244 条请求、超过 26,000 条注册表条目的评测中,冻结后的投毒技能在三个留出模型上取得 31.0%–31.9% 的微平均攻击成功率,与替身模型的 32.9% 接近。

Source-provided article image: StealthyPoison: Manipulating LLM Agent Behavior through Procedural Poisoning of Third-Party Skills
arXiv

深度剖析

智能体从公开注册表取用第三方技能时,攻击者可以只改动技能里决定答案的规则,让任务照常跑完却给出错误结果,而不插入任何显眼的恶意指令。 此前的技能投毒研究靠恶意指令或附带脚本诱导越权操作,这类行为超出技能宣称的任务,容易被多余操作、策略违规或可疑附件的检查发现;而技能被改写后是否仍能保持执行正常、只让结果出错,此前没有被考察。 在 SRA-Bench 的 566 个合格目标技能上,89% 的构造载荷至少翻转了一条合成查询的答案,其中 72% 翻转部分查询、17% 翻转全部查询;在未参与构造的原始评测请求上,替身执行智能体 Qwen3-Coder-30B 的微平均攻击成功率为 32.9%。

投毒载荷的构造不需要真实用户请求,也不需要标准答案,而是把技能自身文档当作起点,用替身智能体的干净输出当参照来搜索改动。 先前的知识投毒方法针对已知的问答对定制毒化内容,攻击者必须事先知道会被问什么、正确答案是什么;这里攻击者只有公开技能和公开注册表。 流程先用公开大模型按技能文档合成执行请求,再由替身智能体运行干净技能得到伪参照,随后由规划智能体标出可能影响最终答案的公式、边界条件、字段解释、聚合规则或操作顺序,攻击智能体在保持任务、接口和可执行性的约束下迭代改写,评审智能体比对输出并反馈,最多迭代 10 次。冻结后的载荷不做修改即可迁移到 Llama-3.3-70B、Mistral-Small-24B 和 GPT-OSS-20B,微平均攻击成功率分别为 31.0%、31.3% 和 31.9%。

要让投毒技能真正被选中,还需要在检索元数据里补上预测的请求描述,这一步同样不依赖受害检索器的分数或反馈。 此前的梯度式检索投毒基线 HotFlip 和 GCG 需要访问检索器梯度来优化元数据,而攻击者通常拿不到这些信息。 在超过 26,000 条注册表条目的全库竞争中,StealthyPoison 把 PoisonHit@1 从无优化基线的 15.8% 提到 30.0%,PoisonHit@20 从 52.3% 提到 67.6%,相对 HotFlip 和 GCG 的 top-1 置顶率提升 13.6%;在 Claude Code 配合 Opus 4.8 的检索—选择—执行流程中,720 条抽样请求上有 73.2% 进入前 20、49.4% 被选中,端到端攻击成功率为 10.1%。

启示与展望

评测在离线基准和本地构造的测试注册表上完成,没有向公开市场提交投毒技能,也没有攻击真实用户或已部署系统;因此测得的攻击成功率可能与真实系统不同。结果覆盖 SRA-Bench 的六个任务族、五个执行模型、多种检索器与七个选择器,以及 SkillSpector、Cisco Skill Scanner、VirusTotal 和 GPT-5.4-mini 四类预执行筛查。

攻击效果随任务差异很大:MedCalc 的端到端攻击成功率最高,BigCode 在 60.8% 的投毒技能被选中率下仍只有 5.0%,说明选中技能不等于改变行为。防御评测中 SkillSpector、Cisco Skill Scanner 和 VirusTotal 的检测率分别只有 0.7%、0.4% 和 0.0%,GPT-5.4-mini 为 45.8%,且这些设置并非扫描器推荐的完整 LLM 配置。作者指出,GPT-5.4-mini 更常识别出显式矛盾、反向规则和跳过校验的指令,而当改动后的公式、常数、分支或解释规则看起来像正常任务流程时更不可靠;防御需要行为验证,例如在参照请求上测试候选技能或与可信实现比对输出。