TrustProbe 在 11 个开源 Agent 中发现 104 个技能信任链漏洞
Can Agents Trust Their Skills? Uncovering Unsafe Chains of Trust in Skill-Based LLM Agents
TrustProbe 测试 11 个开源智能体发现 104 个 skill 污点漏洞,在最严审批下仍有 34.8% 可被利用。
假设非恶意智能体开发者和未受损运行环境。
- 智能体广泛依赖第三方安装的 skill 扩展功能,用户向智能体委托权限,但框架将未充分校验的 skill 内容纳入执行上下文。恶意 skill 可借由智能体的委托权限对文件系统、Shell 及网络执行有害操作,形成混淆代理故障。
- TrustProbe 结合源码静态 source-to-sink 分析与定向灰盒模糊测试。它通过 LLM 生成带金丝雀标记的语义 SKILL.md 种子,借助语义评分与距离反馈进行变异调度,并由 bug oracle 确认污点传播与可观测危害。
- 在 11 个智能体中发现 104 个已验证漏洞;直接提示词仅复现其中 31.7%,最严格审批下仍残留 34.8% 可利用漏洞。633 个真实 skill 中有 25.1% 的测试触发漏洞路径,经最小载荷编辑有 15 个转化为完整攻击。
- 评测仅覆盖 11 个开源智能体且均采用 deepseek-v4-flash 模型;基线对比仅涉及 4 个 Python 智能体。作者指出未来需研究跨工具执行的来源追踪、安装期能力声明以及共享执行点的细粒度控制。
- 威胁模型
- 假设非恶意智能体开发者和未受损运行环境。攻击者为控制已发布 skill 内容的恶意 skill 作者,skill 安装后载荷持久存在直至调用,无需作者后续交互。攻击者利用智能体对已安装 skill 内容的依赖,在用户委托权限下诱发有害操作,构成混淆代理(confused deputy)故障。无需权限提升。
- 模型
- deepseek-v4-flashOpenClawOpenCodeHermes AgentPochiKimi Code CLIQwen CodeClinePi Coding AgentMistral VibeDB-GPTAgent Zero
- 基准
- SkillsMPClawHubOfficial agent repositories633 real-world SKILL.md files
- 指标
- Verified Vulns.ASRTime CostTime to Exposure (TTE)Reproduction rate (ρa)Residual ExploitabilityPrecisionRecallRelative yield
中科院信息工程研究所与伍斯特理工学院的研究者提出 TrustProbe,用于挖掘基于技能的 LLM Agent 中不安全的信任链,在 11 个开源 Agent(其中 8 个 GitHub 星标超过 10,000)中确认 104 个污点式漏洞,涵盖命令注入 49 个、文件泄露 27 个、文件篡改 22 个、网络请求 5 个和代码注入 1 个。方法先对 Agent 源码做 source-to-sink 分析,从技能可控输入追踪到安全敏感操作,再用定向灰盒模糊测试生成并变异带 canary 的 SKILL.md 种子,最后用 oracle 确认攻击者控制并验证可观测危害。同一批技能正文改为直接提示词投递时,仅 31.7% 的漏洞仍可利用;在 8 个提供审批层的 Agent 上启用最严格非交互审批配置后,89 个漏洞中 34.8% 仍可利用,原因是执行路径绕过策略或策略未覆盖相关操作。
推荐理由论文给出跨 11 个 Agent 的 104 个技能信任链漏洞与真实技能触发率,可对照检查自家技能加载与审批机制。
深度解读
这篇论文试图解决什么问题?
论文研究基于 skill 的智能体中,不可信第三方 skill 内容如何在用户委托权限下引发非预期敏感操作的信任链失效问题。
核心问题在于基于 skill 的 LLM 智能体中存在的非安全信任链(unsafe chains of trust),即第三方不可信 skill 内容能否以及如何突破安全边界,滥用用户委托给智能体的权限执行敏感操作。
- 应用场景与重要性:LLM 智能体通过工具执行命令、访问文件与网络,并通过可安装的 SKILL.md 扩展任务能力,形成了用户委托权限给智能体、智能体依赖第三方 skill 提供者的信任链。
- 现有机制的不足:作者称,现存框架对 skill 提供的内容缺乏充分校验与来源追踪,且静态扫描或候选调用路径无法确认实际运行时是否会产生真实的有害操作。
- 核心观察与操作性不变量:作者提出单一操作性不变量(operational invariant),即来自 skill 的内容仅在经过校验、获得用户明确同意或来源信息在执行点可用的情况下,方可触及执行智能体权限的操作;违背此要求的流动即为信任失败。
- 威胁模型:
- 攻击者目标:恶意 skill 作者旨在通过植入指令或参数,诱导智能体在用户委托权限下执行攻击者选定的敏感操作,构成混淆代理(confused deputy)故障。
- 攻击者知识与能力:攻击者控制已发布的第三方 skill 内容(如 SKILL.md),无需后续交互,亦无需提权即可利用智能体自身权限。
- 分发与触发:恶意 skill 通过公开市场(如 ClawHub、SkillsMP)或社区分发,安装后在后续用户任务中被框架发现与加载。
- 受害系统:由用户运行且具备文件系统、Shell 及网络访问权限的原生支持 SKILL.md 的智能体框架。
- 论文的解决方案:作者提出了 TrustProbe 框架,通过源码静态 source-to-sink 分析结合定向灰盒模糊测试,系统性挖掘并动态验证跨框架的 skill 污点型漏洞。
有哪些相关研究?
论文梳理了智能体攻击、静态分析与动态模糊测试三类研究,作者称此前工作缺乏跨框架 skill 交付与审批机制的动态验证。
- 智能体攻击与不可信内容:
- 提示词与间接注入:Toyer 等(2024)与 Schulhoff 等(2023)研究了通过用户提示词重定向模型行为;Greshake 等(2023)、Zhan 等(2024)及 Yi 等(2025)研究了外部内容引发的间接提示注入。
- 智能体基准与上下文完整性:Agent Security Bench (Zhang 等, 2025) 评测了提示词、工具和记忆阶段的攻防;Mireshghallah 等(2024, 2026)通过上下文完整性基准考察跨信息源的不当泄露。
- 静态分析与 skill 审计:
- 恶意包与 skill 静态检查:Ohm 等(2020)与 Guo 等(2026a)研究了软件供应链攻击;Koc 等(2026)对比了 ClawHub 上的扫描器输出;Guo 等(2026b)提出的 SkillProbe 结合了准入检查与能力对比。
- 代码调用路径分析:Liu 等(2024)提出的 LLMSmith 结合静态调用路径分析与提示词利用研究代码执行;作者指出仅凭可疑内容或候选路径无法确定实际是否会执行有害操作。
- 动态测试与模糊测试:
- 动态污点与行为验证:Newsome & Song(2005)及 Schwartz 等(2010)研究了动态污点分析;Liu 等(2026)结合静态检查与行为验证审计恶意 skill;Schmotz 等(2026)提出的 Skill-Inject 衡量 skill 文件的有害指令遵循。
- 智能体灰盒模糊测试:Liu 等(2025)提出的 AgentFuzz 采用定向灰盒模糊测试检测污点漏洞;作者指出本文补充了 skill 传递架构与审批控制如何影响跨框架有害操作的研究。
- 基线方法与使用基准:
- 对比基线:静态代码分析器 LLMSmith 与定向灰盒模糊测试器 AgentFuzz。
- 测试基准与来源:SkillsMP、ClawHub 及其注册表,以及各智能体官方仓库中收集的真实 SKILL.md 文件。
- 与既有工作的定位区别:作者称,现有工作多关注单次提示注入或静态规则匹配,而本文聚焦于已安装 skill 形成的持久化信任链,系统揭示框架级交付机制与审批盲区如何促成漏洞利用。
- 智能体攻击与不可信内容:
论文如何解决这个问题?
TrustProbe 通过源码静态调用路径分析生成种子,结合语义与距离反馈的定向灰盒模糊测试演化输入,由双重 oracle 验证漏洞。
TrustProbe 结合源码静态分析与定向灰盒模糊测试,自动化挖掘并验证从不可信 skill 内容到敏感操作的非安全信任链。
问题设定与形式化
TrustProbe 将不可信 SKILL.md 内容定义为源(source),将执行智能体特权的系统与框架 API 定义为汇(sink)。为追踪数据流,框架向候选字段注入由目标标识与变体标识哈希生成的金丝雀标记: canary = H(idt ∥ idv) 其中 H 为哈希函数,id_t 与 id_v 分别为目标和变体标识符,∥ 表示字符串拼接。系统据此定义污点谓词 Taint(c, s) ⟺ canary ∈ args(sinks),仅当金丝雀出现在目标汇的调用参数中时判定污点成立。
静态分析与语义种子生成
- 源码 Source-to-Sink 分析:通过 Python AST 遍历或 TypeScript Compiler API 提取函数调用与实参,与预定义的汇清单匹配后,沿调用图反向广度优先搜索至调用入口,提取出候选传播路径并按汇函数分组。
- LLM 辅助种子生成:提取包含智能体、语言、汇、源字段及程序标识符的语义画像,提示 LLM 生成符合目标框架原生加载要求的初始 SKILL.md 种子,使任务语义对齐目标组件。
反馈驱动的种子调度与变异
- 定向灰盒种子调度:将同一汇函数的种子归入独立预算池,依据目标对齐评分与距离度量打分:调度函数综合语义分数 σ、距离分数 δ 与惩罚项 π 计算优先级。语义分数由 LLM 根据执行轨迹对目标组件的行使程度打分(0 至 10 分);距离分数由轨迹到达节点与目标汇的最短跳数计算,到达汇时饱和为 10 分;惩罚项依据种子与路径的被选次数累加。
- 规则引导的分层变异:若测试未确认路径,自顶向下匹配规则并调用相应变异器。在语义分低于阈值时调用语义变异器重写意图;在轨迹停滞于解析或注册阶段时调用元数据变异器重写前言;在解析完成但未到达汇时调用主体变异器调整正文结构;在到达汇但参数无金丝雀时调用汇参数变异器调整金丝雀注入字段。
双重验证 Oracle
- 污点确认条件:必须同时满足三个谓词:目标敏感操作被调用(reached)、汇实参包含金丝雀(tainted),且调用栈回溯匹配静态提取路径(framed)。
- 可观测危害验证:在污点确认后,独立验证执行是否产生了攻击者指定的真实后果,包括对话中的敏感文件内容泄露、测试文件写入、良性命令执行回显或受控网络端点请求,确认后方计为可利用漏洞。
论文做了哪些实验?
在 11 个开源智能体上测得 104 个已验证漏洞(ASR 达 100%),直接提示词仅复现 31.7%,最严审批下残留 34.8% 可利用漏洞。
实验设置
- 被测模型与智能体:测试了 11 个原生支持 SKILL.md 的开源智能体,包括 OpenClaw、OpenCode、Hermes Agent、Pochi、Kimi Code CLI、Qwen Code、Cline、Pi Coding Agent、Mistral Vibe、DB-GPT 和 Agent Zero;所有被测智能体及 TrustProbe 的生成、评分与变异均统一采用 deepseek-v4-flash 模型。
- 数据集与测试路径:从 11 个智能体代码中提取出 1,566 条 source-to-sink 路径,聚类为 202 个汇函数池;真实世界评测使用了从 SkillsMP、ClawHub 及其注册表和官方仓库收集的 633 个有效 SKILL.md 文件。
- 评测基线:静态分析工具 LLMSmith(针对 Python)与定向灰盒模糊测试工具 AgentFuzz(针对 Python)。
- 核心指标:验证漏洞数(Verified Vulns.)、时间开销(Time Cost)、首次暴露时间(TTE)、攻击成功率(ASR,定义为已验证危害占污点确认路径的比例)、复现率(Reproduction rate, ρa)、残留可利用率(Residual Exploitability)。
- 运行配置与预算:每个汇函数池预算上限为 8 轮变异或 15 分钟;每次测试使用全新会话与隔离工作区;除 DB-GPT 原生保留 Wasm 隔离外,其余均在无沙箱非交互模式下执行。
主结果
下表汇总了 TrustProbe 在 11 个智能体上执行主漏洞挖掘实验的结果(据 Table 1):
表格较宽,可左右滑动
智能体 GitHub Stars (K) 验证漏洞数 时间开销 (h) TTE (min) OpenClaw 388.9 24 3.79 10.32 OpenCode 204.5 17 2.64 42.78 Hermes Agent 241.7 16 13.17 12.70 Pochi 0.1 13 1.15 11.07 Kimi Code CLI 7.3 12 4.04 70.62 Qwen Code 27.7 8 5.38 23.65 Cline 67.5 7 4.97 92.27 Pi Coding Agent 102.0 3 0.93 23.73 Mistral Vibe 4.9 2 0.88 26.70 DB-GPT 19.9 1 2.67 2.00 Agent Zero 19.1 1 5.57 255.25 总计 / 中位数 1.08M 104 45.20 23.73 - 漏洞类型分布:在发现的 104 个漏洞中,命令注入 49 个、文件泄露 27 个、文件修改 22 个、网络请求 5 个、代码注入 1 个。
- 到达率与危害转化:测试覆盖了 1,566 条审计路径中的 1,150 条(73.4%)及 202 个汇函数中的 98 个(48.5%);所有 104 条污点确认路径均产生了可观测的独立有害后果,ASR 达到 100%。
- 测试开销:TrustProbe 的种子生成、评分与变异共消耗 1,108 万 token,折合成本 2.19 美元(不计目标智能体推理开销)。
交付机制对比实验
- 测试设定:去除 YAML 前言,将完全相同的 skill 正文直接作为用户提示词输入,不安装任何 SKILL.md。
- 对比结果:据 Table 2,直接提示词重放下仅能复现 104 个漏洞中的 33 个(总复现率 31.7%),有 68.3% 的漏洞无法复现;其中 OpenClaw 复现率仅 4.2%(1/24),Kimi Code CLI 仅 8.3%(1/12),Agent Zero 为 100.0%(1/1)。
- 机制解释:作者指出差异源于框架的专用交付通道:OpenClaw 包含目录扫描与强制阅读路由,Kimi Code CLI 采用类型化激活事件与加载包装,DB-GPT 将 skill 绑定至系统提示词;普通用户提示词无法触发这些框架特有上下文。
审批机制防御评测
- 测试设定:在支持审批的 8 个智能体上移除自动批准,切换至最严格可用的非交互审批配置(据 Table 10 与 Table 11)。
- 防御结果:覆盖的 89 个漏洞中有 31 个(34.8%)仍可被成功利用;OpenClaw 的残留可利用率达 91.7%(22/24),Kimi Code CLI 达 50.0%(6/12),而 OpenCode、Cline 与 Mistral Vibe 降至 0%。
- 失效根因:存活漏洞分为执行绕过(9 例,如 Kimi Code CLI 启动未加载 deny 规则导致规则集为空,OpenClaw 本地路径跳过检查)和策略范围盲区(22 例,如 OpenClaw 仅审批 exec 而不限制读写文件,导致 13 例泄露和 6 例写入全部放行)。
真实世界 Skill 暴露与武器化验证
- 路径触发率:对 633 个真实 SKILL.md 在兼容智能体上执行 2,963 次测试,743 次(25.1%)触发了审计到的漏洞路径(第 5.4 节)。
- 武器化验证:选取 15 个包含服务地址的触发 skill,仅通过替换域名、端点或引导命令(10 个修改不超过 2 行),全部成功转化为完整攻击(Table 12)。
- 实际危害表现:观察到的后果包括远程代码执行、凭证窃取、OAuth 钓鱼、恶意 MCP 服务器连接与敏感数据回传。
其他消融与分析
- 初始种子语义消融:GENERICSEED 去除语义引导改用模板,漏洞发现量相对全量下降至 44.2%(Table 4)。
- 调度与变异语义反馈消融:NOSIGMA 移除语义评分反馈,变异阶段漏洞发现量相对下降至 37.9%(Table 4)。
- 种子选择算法消融:RANDOMSCHED 采用均匀随机采样替代反馈调度,变异阶段漏洞发现量相对下降至 31.0%(Table 4)。
- 初始与变异产出:全量测试中初始种子暴露 75 个漏洞,后续变异补充发现了 29 个漏洞(第 5.6 节)。
- 基线对比(4 个 Python 智能体):LLMSmith 在 20 个参考漏洞中检出 5 个,召回率 25.0%,误报率达 98.5%(FP=328);AgentFuzz 在 57 小时 2,425 次尝试中未产生已验证漏洞(Table 3)。
有什么可以进一步探索的点?
作者指出了来源追踪、安装期能力声明和共享执行点控制等方向,评测受限于所选模型与系统范围。
作者指出的局限与后续方向
- 工具执行中的来源追踪:作者在第 6 节指出,当前框架缺乏贯穿工具执行全流程的 skill 来源标记,后续需研究如何在运行时区分参数究竟源自用户还是第三方 skill。
- 安装期能力声明机制:作者在第 6 节指出,当前生态缺少明确的能力声明,需探索在 skill 安装阶段要求其显式声明所需系统权限与工具范围的机制。
- 共享执行点的细粒度控制:作者在第 6 节指出,应在底层共享执行点实施感知参数和调用路径的访问控制,防止内部子进程绕过工具层审批网关。
- 基线对比环境的限制:作者在第 5.5 节指出,AgentFuzz 与 LLMSmith 仅支持 Python,且早期版本原生不支持 SKILL.md,导致动态对比未能覆盖 TypeScript 智能体。
实验覆盖范围
- 被测智能体范围:测试了 11 个开源 TypeScript 与 Python 智能体,包括 OpenClaw、OpenCode、Hermes Agent、Pochi、Kimi Code CLI、Qwen Code、Cline、Pi Coding Agent、Mistral Vibe、DB-GPT 和 Agent Zero(Table 5)。
- 后端模型单一性:所有实验中智能体执行与 TrustProbe 生成、评分和变异均固定使用 deepseek-v4-flash 模型,论文未测试其他基础 LLM(第 5.1 节)。
- 真实 Skill 语料范围:收集了来自 SkillsMP、ClawHub 及官方仓库的 633 个可判别 SKILL.md 文件,武器化验证选取了其中 15 个进行本地修改与受控测试(第 5.4 节与附录 J)。
- 沙箱隔离条件:除 DB-GPT 原生启用了 Wasm 代码隔离外,其余智能体实验均在无沙箱环境下运行(附录 D)。
- 未报告信息:论文未报告更广泛商业闭源智能体的评测数据,亦未报告不同基础模型切换对漏洞触发率的具体影响。
总结一下论文的主要内容
论文研究 skill 智能体的非安全信任链问题,提出 TrustProbe 工具并在 11 个开源智能体上验证了 104 个污点漏洞。
- 论文定位:本研究系统探讨了基于 SKILL.md 的 LLM 智能体中存在的非安全信任链问题,即第三方不可信 skill 内容可跨越信任边界并滥用用户委托权限。
- 核心问题:现存智能体框架自动将已安装 skill 注入执行上下文,但在从 skill 输入到敏感系统调用的传播路径上普遍缺乏内容过滤、来源跟踪与有效的执行层审批校验。
- 方法要点:提出 TrustProbe 框架,通过静态提取 1,566 条 source-to-sink 路径构建种子,结合语义评分与调用图距离反馈指导灰盒模糊测试,并利用金丝雀标记与双重 bug oracle 验证真实危害。
- 最重要的定量结果:在 11 个主流开源智能体上发现并证实了 104 个污点漏洞,ASR 达 100%;直接提示词重放仅能复现 31.7% 的漏洞;在 8 个开启最严格非交互审批的智能体中仍有 34.8%(31/89)的漏洞可被利用;对 633 个真实 skill 的测试中有 25.1% 触发漏洞路径,经微调有 15 个转化为完整攻击。
- 作者结论与启示:作者认为,必须将第三方 skill 内容视为智能体执行安全边界的一部分,未来框架需在底层引入全链路来源标记、安装期能力声明,并在共享执行点实施细粒度的路径与参数级控制。