论文链接:Tool-Calling LLM Agents Under Realistic MCP Faults: Scale Does Not Purchase Fault Tolerance | Detecting Insecure Compositions of Clean Agent Skills via Capability-Flow Graph Analysis 代码仓库:MCP-Injector artifact(GitLab) 发表时间:2026年10月 机构:MCP-Injector——卢森堡大学 SnT + 荷兰 Tilburg 大学 + 意大利 Gran Sasso 科学研究所 + 那不勒斯费德里克二世大学(欧洲四校纯学术合作,NeurIPS 2026);KnotScryer——清华大学 + 南洋理工大学 + 清华网络研究院 + 中关村实验室(中国学术机构合作) 领域标签:cs.SE / cs.CR,Agent 可信性 + 安全
〇、双篇导读:同一枚硬币的两面
把这两篇论文放在一起读,是因为它们从恰好相对的方向,指向了同一个结论:在 MCP/技能生态里,agent 的安全性是一个系统属性,而不是组件属性。
- MCP-Injector(NeurIPS 2026,欧洲四校)研究运行时依赖失效:agent 依赖的外部工具在真实生产中会出错、超时、返回垃圾,现有 benchmark 却假设工具永远正确及时。作者从 1,774 个开源 MCP 仓库挖出 57,240 条 issue/PR 线程,校准出一个永久故障占 91.3% 的压力画像注入工具调用通道——任务完成分从 8.08 暴跌到 3.23,而把模型从 20B 换成 120B 毫无帮助(p=0.96)。
- KnotScryer(清华等)研究静态组合漏洞:技能市场对每个技能逐一审计、全部标为干净,但多个干净技能在 agent 运行时编排下能串成数据外泄、代码执行的违规链。13,598 个 ClawHub 干净技能组合出 612 条高置信违规链,9 种 agent×LLM 组合平均 79.2% 可实际利用。
一个说的是依赖会坏(非对抗性故障),一个说的是组合会坏(对抗性利用)。共同点在于:两种风险都不在任何单个组件里——不在模型里、不在单个技能里、不在单个工具里,而在组件之间的接缝处。能力 benchmark 看不见前者,单技能扫描器看不见后者。这就是统一叙事:生态级的风险需要生态级的评测与防御。
一、论文背景
1.1 MCP:agent 的工具调用标准通道
Model Context Protocol(MCP)是一个厂商中立的、结构化的客户端-服务器接口,agent 运行时内嵌一个 MCP 客户端,连接若干 MCP 服务器,每个服务器暴露一批可执行工具。agent 的每一步外部动作(查数据库、调 API、读文件)几乎都经由此通道发生。这使得 agent 质量从一个模型问题变成一个系统问题:端到端行为取决于 MCP 通道、服务器实现、schema 以及整个工具生态的运行健康度。
技能(Skill)机制则是另一条能力扩展路线:一个技能打包自然语言说明(SKILL.md)、可执行脚本与资源,供 agent 按需加载执行。自 2025 年 10 月引入后迅速标准化为开放的 Agent Skills 标准,被 Claude Code、Cursor 等平台集成。到 2026 年 6 月,SkillsMP 索引了超过 190 万个公开技能文件,ClawHub 这个带安全审查的策展市场托管了超过 6.5 万个技能。
1.2 两条被忽视的裂缝
裂缝一:工具会坏,但 benchmark 假装不会。 现有工具使用 benchmark(MCP-Bench、GAIA、τ-bench、API-Bank 等)一律假设工具正确且及时响应。可生产环境中,MCP agent 继承了分布式服务的全部经典失效模式——配置错误、瞬时不可用、schema 漂移、畸形输出。没有协议感知的故障注入手段,社区无法回答两个基本问题:哪些 agent 设计能优雅降级?扩大模型规模是减少还是增加运行时脆弱性?
裂缝二:技能审计只看单个,风险藏在组合。 ClawHub 对每个提交技能跑静态扫描,通过才标 clean;Cisco AI Defense 的 Skill Scanner 用模式匹配加 LLM 辅助审查检测单技能里的恶意代码与提示。但 agent 的运行时编排有一个关键动作——agent 居间转交(handoff):上游技能的输出被自动塞进 agent 上下文,agent 推理后再喂给下游技能的输入。一条端到端的数据流就此形成,而它的每一个环节都通过了独立审计。这像极了 ROP(返回导向编程):不用注入任何新代码,只靠拼接既有的良性 gadget 就能组装出攻击。
1.3 为什么现在必须面对
两篇论文的生态数据都在说明同一件事:MCP/技能生态的规模已经到了传统审计与评测方法覆盖不住的程度。MCP-Injector 挖掘的 57,240 条线程本身就是生态故障量的证据;KnotScryer 面对的 13,598 个干净技能只是 ClawHub 全量的一角。当能力扩展从手写工具变成市场安装,风险面也随之从组件级扩张到组合级、从静态扩张到运行时。
二、论文定位和关联工作
2.1 工具故障与 agent 韧性谱系
MCP-Injector 处在三个研究脉络的交点:
| 脉络 | 代表工作 | 核心思想 | 与 MCP-Injector 的关键区别 |
|---|---|---|---|
| 工具使用 benchmark | MCP-Bench、GAIA、τ-bench、API-Bank | 假设工具正确,测成功率 | 不控制故障持久性、无校准画像 |
| 混沌工程/故障注入 | 经典软件故障注入、微服务混沌工程、Owotogbe 的多智能体通信故障注入 | 在基础设施层注入故障 | MCP-Injector 在 MCP 语义层注入(内容错误、时序失败、schema 违规),触发 agent 级解释与恢复逻辑 |
| MCP 生态可靠性 | Hou 等与 Huang 等的事后分类研究、ReliabilityBench | 事后统计故障类别 / 超时限流下的容错测试 | ReliabilityBench 的故障模型是手工设定的;MCP-Injector 的画像从 1,774 个仓库实测挖掘,且建模持久性日程 |
最接近的同期工作是 ReliabilityBench(超时、限流、schema 漂移下的 agent 可靠性),MCP-Injector 的差异化在于:故障模型经生态实测校准、显式建模三种持久性(永久/瞬态/间歇)、以透明中间件形式 drop-in 部署且无需修改 agent。
2.2 技能安全谱系
KnotScryer 的定位同样可以用一张表说清:
| 脉络 | 代表工作 | 核心思想 | 与 KnotScryer 的关键区别 |
|---|---|---|---|
| 恶意技能检测 | ClawHub 平台扫描、Cisco SkillScanner、恶意技能野外检测(USENIX Security 2026) | 逐技能审计,拦恶意artifact | 对组合风险全盲——13.7% 的违规链全部技能被 Cisco 标为安全 |
| 提示注入攻击 | 间接注入、多源注入、AgentFuzz、LLMSmith | 从外部内容劫持 agent 决策 | 攻击面在单一注入点;KnotScryer 研究注入内容如何跨技能接力传播 |
| 跨技能分析 | SkillProbe(风险标签关联)、Graph-of-Skills(类型依赖图检索) | 标签/类型级组合 | 不检查 agent 居间通道的实际存在性 → 候选爆炸且大多不可执行 |
| 程序分析 | 代码属性图、污点分析、CFI | 图上的数据流/控制流安全 | KnotScryer 把污点追踪思想迁移到技能能力流,但边语义必须重新定义为 agent 居间转交 |
KnotScryer 的突破点在最后一行:它没有发明新的图算法,而是重新定义了什么算一条边——只有类型兼容、上游可观测、下游可控、有证据支撑的技能对之间才存在 handoff 边。这一个定义同时解决了候选爆炸与可执行性两个问题。
2.3 定位结论
两篇论文分别填补各自领域的空白:MCP-Injector 是首个生态校准的 agent 依赖性故障评测(此前故障模型均为手工设定),KnotScryer 是首个干净技能不安全组合的系统研究(此前所有防线都是单技能粒度)。它们共同把评测视角从组件拉到系统。
三、问题定义
3.1 MCP-Injector:把故障变成可控制的实验变量
具体问题:agent 在工具故障下表现如何?无法直接研究,因为真实故障不可控、不可复现。
抽象问题:MCP 标准化了结构化工具调用,因此失败可以是语义的——格式正确但值错、schema 违规、静默挂起、重试级联。这些行为对齐经典的容错分类(内容失败/时序失败),但必须在 MCP 接口上表达才能触发 agent 的解释、重试、组答逻辑。
形式化:给定 MCP 工具调用边界,注入受控持久性(permanent/transient/intermittent)的可种子化故障,故障混合比例遵循从公开生态实测挖掘的(失败模式 × 持久性)联合分布,度量 agent 质量退化。威胁模型为非对抗性:注入的是日常生产问题(配置错误、瞬时不可用、schema 漂移),不是智能攻击者。
精妙之处:把持久性作为核心时间维度。一次错误响应与每次调用都错的响应,对 agent 是完全不同的考验——前者考验重试,后者考验放弃与绕行。此前没有任何 benchmark 控制过这个变量。
3.2 KnotScryer:组合空间的可达性问题
具体问题:多个干净技能能否组成安全违规链?组合空间近乎无界,无法暴力枚举。
核心洞察(类比 ROP):良性代码 gadget 可以拼成恶意程序;同理,良性技能可以被 agent 的运行时编排拼成违规链。风险不在任何单个技能里,而在 handoff 通道的存在性。
形式化:技能 si 的输出端口 o 与技能 sj 的输入端口 i 之间存在 handoff 边,当且仅当:
Compatible(o,i) ∧ Observable(o) ∧ Controllable(i) ∧ Evidenced(o,i)
即:类型兼容(下游能消费上游的数据类型)、上游可观测(输出确实暴露给 agent 上下文/工作区,而非技能私有状态)、下游可控(agent 确实能给下游技能供给输入)、有证据(可观测与可控均有 SCS 提取证据支撑)。在此图上,策略搜索追踪受保护数据或不可信内容是否沿 handoff 路径到达策略禁止的操作。
精妙之处:把类型兼容当作必要条件而非充分条件。此前方法(graph-only)连上所有类型兼容端口对,KnotScryer 追问的是 agent 居间转交通道实际是否存在——这一个问句把搜索空间砍掉 85.3%,留下的候选 79.2% 可利用。
3.3 两者的共同抽象
| MCP-Injector | KnotScryer | |
|---|---|---|
| 风险源 | 组件间依赖的运行时失效 | 组件间组合的静态可达性 |
| 系统建模点 | MCP 工具调用边界 | agent 居间 handoff 通道 |
| 控制变量 | 故障算子 × 持久性,生态校准 | 四条件 handoff 边,证据支撑 |
| 度量 | 质量退化幅度、韧性比 | 违规链数、可利用率 |
两者本质上都在做同一件事:为组件之间的接缝建立可计算模型,然后在这个模型上做受控实验或系统搜索。
四、问题解法
4.1 MCP-Injector:三件套——中间件、画像、全因子实验
(一)协议感知故障注入中间件。 代理式架构,拦截 MCP 客户端的 call_tool 钩子:对上游 agent 扮演 MCP 服务器,对下游真实服务器扮演 MCP 客户端。每次调用经四阶段:Observe(读工具名/参数/上下文)→ Decide(按画像、持久性状态与种子随机性选算子)→ Act(转发并可选变异响应)→ Record(结构化日志)。六算子 × 三持久性 = 18 条可种子化规则:
| 算子 | 类别 | 效果 |
|---|---|---|
| OP1 Minor mistake | 内容 | 随机字符替换(每词 8% 概率、5% 幅度) |
| OP2 Incorrect output | 内容 | 词级同类型随机值替换(约 35% 词被破坏) |
| OP3 Invalid output | 内容 | 类型强转(如 str→int),违反 schema |
| OP4 Explicit error | 内容 | 返回结构化 MCP 错误 |
| OP5 Delayed response | 时序 | 人工延迟 30 秒(HTTP 超时 60 秒的一半) |
| OP6 Silent drop | 时序 | 无限期挂起 |
持久性日程:Permanent 激活后每次匹配调用都触发;Transient 单次触发后重置;Intermittent 按激活/失活概率持有随机次数调用。
(二)生态校准的故障画像。 六阶段流水线:仓库发现(MCP Market + Awesome MCP Servers 两个注册表,去重得 1,774 个活跃仓库)→ 线程挖掘(GitHub API,103,166 条合并线程)→ 过滤(关键词分区、去重、剔构建相关与非英语,得 57,240 条)→ GPT-4o 分类(temperature 0,约 800 美元 API 成本,标注(失败模式, 持久性)对)→ 人工验证(两位资深研究者独立标注 117 条分层样本,Cohen’s κ = 0.93/0.80,一致性很高)→ 画像合成。
挖掘结果的联合分布刻画了生态的真实压力面:永久故障占绝对主导(91.3%),其中 EXPLICIT_ERROR/PERMANENT 单独占 65.6%;间歇 8.0%、瞬态仅 0.75%。作者坦承 GitHub issue 存在报告偏置(可复现的持久故障更易被报告),因此定位为压力画像,但其形状与 JPL/NASA 18 次任务 520 个软件故障中 61.4% 的 Bohrbug(必现 bug)占比相印证。
(三)1,350-cell 全因子实验。 2 个 backbone(gpt-oss-20B/120B,本地 Apple Silicon 部署,同一 16K 上下文窗口,无针对性提示调优)× 3 个 agent 栈(MCP-Bench 的 plan-and-execute、OpenAI Agents SDK、LangChain/LangGraph)× 3 个条件(无代理基线 / OP0 空转代理 / OPP 校准画像注入)× 25 个 MCP-Bench 任务 × 3 个种子。配对设计:每个(任务, 种子)元组内计算退化 Δ = OPP − OP0。运行策略:每任务 3,000 秒墙钟超时 + 循环上限(40 轮/40 回合/25 超步)。
4.2 KnotScryer:四阶段流水线
(一)SCS 技能能力摘要。 技能不是普通软件包——它同时含自然语言指令、脚本、模板、资源与对 agent 上下文的操作,只留名字/描述/风险标签会丢掉跨技能推理所需的输入、输出、可见性与副作用信息。SCS 用 YAML frontmatter 解析 + 自然语言启发式匹配 + 脚本静态扫描三管齐下,提取六类信息:INPUT/OUTPUT PORTS(数据类型、敏感度、信任来源、暴露范围、可消费性)、EFFECTS(安全相关副作用及敏感性保持/信任边界穿越/授权要求标志)、OPERATIONS(主操作及参数)、CONTEXT EXPOSURE(agent 上下文/工作区/外部/持久状态的可见范围)、TRUST BOUNDARIES(本地/第三方/互联网/持久状态的跨域关系)、EVIDENCE(每条声明的源文件、代码片段、提取方法与置信度)。
(二)SCFG 技能能力流图。 节点含技能、输入/输出端口、效果、操作、上下文节点与信任边界节点;技能内部边描述读取/产生/变换/暴露/净化/越界关系。定义性特征是跨技能 handoff 边的四条件(见 3.2 节)。可扩展构边:先按类型桶索引输入端口,兼容桶内逐一检查可观测/可控/证据三条件,再按策略相关危险效果优先级施加每输出端口上限 b。
(三)策略驱动搜索。 把安全需求表达为图搜索策略 P = (Q, δ, q0, F),状态集 {Initial, Tracking, Propagation, Violation, Safe}。实例化四个策略:
| 策略 | 源 | 禁止汇 | 阻断条件 |
|---|---|---|---|
| DE 数据外泄 | Private/Secret/衍生敏感数据 | 未授权网络发送或外部汇 | 净化、降级、显式授权 |
| IPI 间接提示注入 | 互联网/第三方不可信内容 | agent 上下文或任务执行 | 内容净化或上下文隔离 |
| CEP 代码执行传播 | 代码或命令数据 | Shell 或 agent 任务执行 | 显式授权 |
| FP 事实污染 | 带操纵语义的内容 | 记忆/配置/持久状态写 | 净化或写授权 |
搜索带来源追踪(provenance)——不同起源的路径即使到达同一节点也分开维护,因为它们对应不同责任主体与缓解位置;配合支配剪枝、深度与预算上限保证终止。
(四)双层验证。 第一层 marker 流可达性重放:在源注入合成 marker,沿保存的能力流轨迹重放传播;marker 必须存活到具体效果,中途被净化/降级/授权门拦截则不构成可执行违规——确定性、可复现。第二层任务锚定 LLM 链审计:固定提示的 LLM 判断语义层面链条是否可串成单个合理任务——输出对 agent 是否语义可达、可控输入是否会被合理任务触发、相邻 handoff 是否同属一个任务。关键约束:审计只能确认或降级 SCFG 发现的链,不能修改图或新增候选——把 LLM 的角色限制在过滤器,规避幻觉扩检。
五、评估指标与实验证据
5.1 MCP-Injector:测量型论文的三组发现
主指标:MCP-Bench 九项 LLM-judge 评分(任务完成、工具选择、规划有效性、任务履行、grounding、工具恰当性、参数准确度、依赖感知、并行有效性),每完成运行由 gpt-4o-mini 五次评分取中位。
发现一:校准故障造成严重而普遍的质量退化。 汇总 450 个 OPP cell 与 OP0 配对:任务完成分 8.08→3.23(-60%)、工具选择 -59%、规划有效性 -67%、grounded fulfillment -63%;九项指标全线跌 4.4-5.2 分(配对 95% CI 在 ±0.4 分内,Benjamini-Hochberg 校正 Wilcoxon p<0.001)。只看双条件下都完成的 cell,退化仍是 -57%——质量损失主要来自完成运行的质量劣化,而非单纯不完成。失败模式分类:部分退化是众数结局(56% 的 cell),灾难性完成、优雅退化、工具旁路、未完成合计占 21-39%。
发现二:框架级错误处理可能比规模更重要(暗示性证据)。 OPP 完成率 LangChain 95-97% > MCPBench 91-95% > OpenAI 88-95%。线性混合效应模型(栈×条件交互):在共同 OPP 效应 -4.26 分之上,MCPBench 再多跌 0.93 分(95% CI [-1.86,-0.01],p=0.048)、OpenAI 再多跌 0.84 分([-1.77,0.08],p=0.074)。行为签名迥异:MCPBench 是切换主导(68% switch/21% retry/11% fallback,plan-and-execute 每轮重排完整工具表),LangChain/OpenAI 是回退倾向(44%/49% fallback,ReAct 式循环一旦 LLM 输出纯文本即终止)。作者诚实标注:两个区间都贴近零、未做多重性校正、MCPBench 每 cell 故障事件更多(8.6 vs 2.3/1.8),故为暗示性证据。
发现三(标题结论):规模买不来容错。 韧性比(OPP/OP0 任务完成分)混合效应模型的规模系数 β_model = -0.009(95% CI [-0.39, 0.37],p=0.96)——120B 保住的无故障分份额不比 20B 多。完成率反而描述性更低:91.1% vs 95.6%(差 4.4 个百分点,95% CI [-0.2, 9.3])。分解:无故障完成率 120B 本就略低(96.9% vs 99.1%),故障归因跌幅 120B 更大但不确定(-5.8 vs -3.6 个百分点,差 2.2 个百分点 CI 含零)。注意一个反差:120B 完成时答案分更高(3.68 vs 3.26)——能力排名与韧性排名不必一致。
两个诚实揭露:工具旁路(无工具调用凭记忆答题得高分)在 OPP 下占 6.0%(27 个 cell),但故障不是主因——OP0 与无代理基线下同样规则分别标记 21 与 16 个 cell;且 16% 的履行分来自未 grounding 的运行(OP0 为 5%)。零剂量组(12.2% 的 OPP cell 因 agent 从未调用工具或抽中间歇项未触发而无故障)剔除后,退化从 -60% 放大到 -67%。
5.2 KnotScryer:检测规模、可利用性与跨框架一致性
主实验:13,598 个 ClawHub 干净技能(2026-05-18 快照,全部通过平台安全审查)全量分析,检出 612 条高置信违规链;对全部 612 条执行攻击实验(在源技能的第三方内容源注入攻击者影响的数据,给 agent 一个仅触发源技能的通用任务指令,观察 agent 是否经正常推理自主传播到汇技能)。
可利用率(exploitation rate):3 框架(Hermes/OpenClaw/OpenCode)× 3 LLM(Claude Sonnet 4.6/GPT-5.5/GLM-5.1)= 9 组合平均 79.2%。分模型:GLM-5.1 85.6% > GPT-5.5 77.0% > Sonnet 4.6 75.1%;分框架:OpenCode 86.0% > Hermes 80.0% > OpenClaw 71.7%(OpenClaw 有网关中介与 SSRF 防护,防御深度改变风险阈值但不足以消除组合风险)。
跨框架一致性:45.5-46.3% 的链在全部三个框架/全部三个模型上复现——证明这些是跨框架、跨模型的结构性风险,而非运行时偶然。Sonnet 4.6 与 GPT-5.5 的拒绝来自模型安全对齐在识别上下文危险信号时主动中止,但安全对齐只在载荷直接暴露时起效,难以拦截经技能链间接传导的攻击。
基线对比(1,062 技能热门子图,GLM-5.1):
| 方法 | 候选规模 | 可利用率 |
|---|---|---|
| Tag-match(SkillProbe 式) | 829,462 条关联(随机抽 500 测试) | 16.5%(CI [14.7, 18.4]) |
| Graph-only(Graph-of-Skills 式) | 1,047,207 条边(随机抽 500 测试) | 18.2%(CI [16.3, 20.2]) |
| SCFG | 13 条候选链 | 85.6%,且子图 13 条全部可利用 |
差异 z>37、p<0.001。边数比 graph-only 缩减 85.3%(仅 1.48% 的类型兼容对成为 handoff 边)。
单技能审计全盲对照:将 612 条 LLM 确认的链与第三方 Cisco AI Defense 单技能扫描器标签对齐——84 条(13.7%)链的全部技能被 Cisco 标为安全。另有 522 条至少含一个被标不安全的技能,但组件级警报只能局部标记可疑技能,无法重建源到汇的跨技能违规链。
消融:去掉 Observable 条件,边数 +438%、可利用率跌 45.6 个百分点(不可见数据被误当可转移内容,如本地审计日志被误建 handoff 边);去掉 Controllable,边数 +84%、可利用率跌 52.4 个百分点(结构可达但 agent 无法触发的路径被保留,如需 OAuth token 的受保护汇)。
开销:热门子图上 SCFG 总耗时 97.6 秒(图构建 77.0 秒为主,把代价前置给稀疏而安全相关的搜索空间),tag-match 3.3 秒、graph-only 9.8 秒——为 5 倍精度付出的代价。
端到端案例:outlook-plus(读邮件)+ cold-email-engine(发邮件),两个各自无害的干净技能。用户收件箱里有 CFO 的 Q3 审计合同金额邮件和一封钓鱼邮件;用户说一句自然指令(帮我看看邮件、处理需要处理的事),agent 读到钓鱼邮件的指示后自主调用发信技能,把合同金额与供应商名单发给攻击者。卸载发信技能重放同场景,agent 拒绝外发——风险确系结构性,仅存在于组合之中。
六、效果优势的根源解释
6.1 MCP-Injector:为什么规模买不来容错
因果链(标注证据等级):
- GitHub 报告偏置 + 生态实况 → 永久故障占绝对主导(91.3%),EXPLICIT_ERROR/PERMANENT 单独占 65.6%【论文实验已支持:Table 2 联合分布】。
- 永久故障在每次调用触发同一失败 → agent 没有任何重试可以成功 → 行为分化为烧尽轮次/超时或凭记忆绕行【论文实验已支持:推理轨迹显示 agent 把一切失败当瞬态,反复微调参数重试;38 个重试循环 run 中 25 个在 MCPBench;120B 的非完成 20/22 是墙钟超时而非回合预算耗尽】。
- 更大模型输出更长、重试更多 → 每次任务暴露于更多故障事件(120B 平均 4.6 vs 20B 3.9 次/cell;OP0 下输出 2,063 vs 1,711 token;连续重试 4.5 vs 3.9 次)→ 完成率反被拖低【论文数据支持相关性;作者明确标注暴露量是候选解释而非确立机制——共享 16K 上下文与跨栈工具调用量是同等重要的替代解释】。
- 栈的终止语义决定故障是否级联:LangChain/OpenAI 的隐式停止(LLM 输出纯文本即退出工具循环)让 agent 有廉价的放弃路径;MCPBench 的显式重规划每轮重发完整工具表,给了模型在同一个失败工具上反复尝试的机会【论文实验已支持:栈×条件交互显著/边际,故障后行为分布差异明显】。
外部检索交叉验证:
| 研究 | 相似尝试 | 相关结论 | 与本文差异与适用边界 | 对根源解释的影响 |
|---|---|---|---|---|
| Agent Error Simulator(eScience 2026,IIT Gnosis) | 透明代理注入格式/逻辑/工具调用故障测分层多智能体工作流 | 发现 7B-27B 间存在模型规模依赖的逻辑错误恢复阈值;聚合器级逻辑注入下灾难性失败 | 工作流层级(planner-worker-aggregator)而非 MCP 边界;模型为 Qwen/Gemma/Mistral 等 2B-32B | 部分挑战纯粹的规模无效论:小规模区间内恢复能力有跃迁;但与 MCP-Injector 的两 backbone 同族设定不冲突,说明规模效应可能是非单调且依赖家族/区间的 |
| ToolBench-X(arXiv 2606.25819,2026-06) | 向干净工具环境注入五类可恢复危害(规格漂移/调用错误/执行失败/输出漂移/跨源冲突) | 可靠工具下表现好的 agent 在可恢复危害下灾难性失败;失败由诊断与恢复能力不足驱动;测试时扩展无济于事 | 故障全部设计为可恢复,MCP-Injector 的画像以永久故障为主 | 补充:无论故障可否恢复,能力评测都不预测故障下的表现;测试时扩展无效与规模不买容错同向 |
| INFUSE 基准(arXiv 2610.20776,Vanderbilt,2026-10) | 19 模型跑 41,824 条间接注入轨迹 | 平均攻击成功率 19.6%,显式拒绝率近零;跨模型攻击成功率与 MMLU-Pro 仅弱相关(r≈-0.28) | 对抗性注入而非非对抗性故障 | 补充:能力(MMLU-Pro)与鲁棒性弱相关,与 MCP-Injector 的能力≠韧性(120B 完成时分更高但韧性不增)互为印证——跨对抗与非对抗场景均成立 |
综合判断:规模不买容错这一结论,在本论文的两 gpt-oss backbone、91% 永久故障压力画像设定下有扎实统计支撑(p=0.96 且区间够宽以容纳中等效应);外部检索显示小模型区间可能存在恢复阈值(AES)、测试时扩展同样无效(ToolBench-X)、能力与鲁棒性弱相关跨场景成立(INFUSE)。多研究共同支持的是能力评测不预测故障/攻击下的表现这一更强命题;规模效应的非单调性与家族依赖性仍属开放问题。未决之处:3 种子的统计功效有限(作者自述)、单模型族、25 个偏易任务。
6.2 KnotScryer:为什么四条件砍掉 98.5% 的边反而精度暴涨
因果链:
- 基线的根本局限:把组合当标签关联(tag-match)或类型可达(graph-only)——任意源标签连汇标签、类型兼容即连边,默认 agent 能复制任意内容【论文实验已支持:两基线在 1,062 技能子图上分别产生 829,462 关联与 1,047,207 边,可利用率仅 16.5%/18.2%,且绝大多数候选至多被一个框架利用】。
- 机制改变:四条件显式建模 agent 居间转交通道的实际存在性——上游输出必须真的暴露到 agent 上下文(排除 LocalOnly 私有状态),下游输入必须真的可由 agent 供给(排除 OAuth 保护的汇),两端都要有 SCS 证据【论文实验已支持:仅 1.48% 类型兼容对成为 handoff 边;消融中去任一条件可利用率崩塌 45-52 个百分点】。
- 候选少而准 → 两个 downstream 收益:可利用率 85.6% vs 16.5%/18.2%;跨框架稳定性(45.5-46.3% 全三框架复现)——因为结构性通道不依赖特定框架配置【论文实验已支持:基线候选的可利用率随框架剧烈波动(Hermes 40-44% vs OpenCode 1.2-1.6%),SCFG 候选三框架全部高企】。
- LLM 审计被约束为只降级不新增 → 检测结果的可信度不依赖 LLM 幻觉控制【机制设计层面成立;论文未单独消融此约束,属阅读者推测:若 LLM 可新增候选,精确率可能向基线退化】。
外部检索交叉验证:
| 研究 | 相似尝试 | 相关结论 | 与本文差异与适用边界 | 对根源解释的影响 |
|---|---|---|---|---|
| Snyk 技能市场扫描(2026-02,The Register 报道) | 扫描 ClawHub 与 skills.sh 共 3,984 个技能 | 13.4% 含至少一个 critical 级安全问题 | 单技能粒度扫描 | 补充:单技能恶意/缺陷真实存在且量大,与组合风险正交——KnotScryer 补上的正是扫描盲区(13.7% 链全技能标安全) |
| Under the Hood of SKILL.md(UMD,Feizi 组,2026) | 20-token 语义触发器操纵技能发现/选择/绕过审查 | 语义层面的小改动即可让 agent 86% 概率发现恶意技能、77.6% 概率选中、36.5-100% 绕过注册表扫描 | 攻击对象是发现与选择环节,非运行时组合 | 补充:证明技能的语义面(自然语言描述)本身就是攻击面,与 KnotScryer 的语义摘要(SCS)防御互为镜像;也提示 SCFG 的 EVIDENCE 置信度可能被对抗性技能描述操纵——限定其召回边界 |
| SkillAtlas(flagthis 收录,2026) | 3,014 技能沙箱执行 + 行为检测 | 233 个恶意技能(7.7%),42.5% 的成功入侵在首次良性交互后才显现 | 行为级运行时检测,需沙箱执行 | 补充:运行时行为检测与静态 SCFG 互补;延迟显现特性提示 marker 重放验证(单次/两次执行)可能漏报需要特定上下文的链 |
| Gen Threat Labs 邮件注入实验(gridthegrey 报道) | 邮件内嵌指令诱导 agent 执行系统命令/外传数据/破坏文件 | 无需软件漏洞,agent 把不可信环境内容当权威指令 | 单注入点直接触发,非跨技能链 | 支持:KnotScryer 的 outlook-plus 案例与此同构(钓鱼邮件→读邮件技能→发邮件技能),证实 handoff 通道在真实框架中的可利用性 |
综合判断:四条件 handoff 模型的必要性获多项研究间接支持(基线方法论失败的一致模式、跨框架结构稳定性、消融崩塌);13.7% 单技能审计全盲与 Snyk/UMD/SkillAtlas 的发现共同刻画出技能安全的完整缺口谱:单技能恶意(有防线但有绕过)+ 语义操纵(防线薄弱)+ 组合风险(此前无防线)。仍属推测的部分:SCFG 对共享文件系统路径、环境变量等绕过 DER 序列的隐式通道不覆盖(作者自述);召回不可量化(可利用链的全集不可观测,只能报告检出链的可利用率而非覆盖率);对抗性技能描述对 EVIDENCE 条件的潜在操纵是未测试的攻击面。
6.3 两篇合读的系统级启示
两篇的根源解释在系统层面汇合于同一个命题:能力/组件维度的所有优化(更大模型、更严单技能审计)都不自动转化为系统维度的安全。 MCP-Injector 侧是模型规模无效(p=0.96),KnotScryer 侧是单技能审计全盲(13.7%)——失败的共同根源是把系统属性当组件属性来保障。反过来,两篇都发现框架/编排层的防御杠杆率最高:LangChain 的回退式终止语义吸收故障(MCP-Injector),OpenClaw 的网关中介与 SSRF 防护改变可利用率(KnotScryer)——尽管都不足以独立消除风险。
七、必要知识反推
假设让一个没有背景知识的人重做这两项工作,最少必须掌握什么?
7.1 领域知识层
- MCP 协议与工具调用边界:client-server 接口、call_tool 钩子、结构化调用与错误返回。不理解它就无法定位注入点(MCP-Injector)或理解 handoff 的物理载体(KnotScryer)。
- 技能机制三要素:SKILL.md 自然语言描述、可执行脚本、模板资源——以及最关键的:描述是给 LLM 读的,语义即行为。这是 SCS 六类信息设计的依据。
- DER 序列与 agent 居间转交:Decision→Execution→Reasoning 循环,R1→D2 的 handoff 是跨技能数据流的唯一通道。没有这个模型,四条件无从谈起。
7.2 方法论知识层
- 容错分类学(Avizienis 等):内容失败/时序失败、永久/瞬态/间歇——MCP-Injector 的整个故障算子与持久性设计直接实例化这套术语。
- 软件故障注入与混沌工程:在接口注入而非 internals 注入、种子化可复现日程、非侵入性验证(OP0 对照)。
- 程序分析:数据流图、污点追踪(source-sink-阻断条件)、策略自动机、支配剪枝——KnotScryer 的策略搜索是这些经典技术在技能域的移植。
- 挖掘方法论:issue 挖掘的关键词分区、LLM 分类 + 分层人工验证 + κ 一致性、报告偏置的识别与定位(压力画像而非认证工具)。
- 统计方法:混合效应模型(任务随机截距)、配对 Wilcoxon + 多重性校正、Wilson/McNemar/Fisher——1,350-cell 的因子实验设计与三条结论的推断全部依赖。
7.3 工程知识层
- 代理式中间件实现:call_tool 拦截、请求侧/响应侧分工(时序故障短路、内容故障变异)、四阶段 Observe/Decide/Act/Record 流水线。
- 多 agent 栈差异:plan-and-execute vs 单消息循环 vs ReAct 状态图的终止语义、循环上限、错误呈现方式——栈敏感度分析的前提。
- 本地模型服务与公平比较:同硬件、同精度(MXFP4)、同上下文窗口、无提示调优——规模归因的工程保障。
- 隔离实验环境:KnotScryer 的双机隔离(一台模拟攻击者托管第三方内容源与接收端、一台跑 agent)、本地网络封闭、责任披露流程。
7.4 知识融合的关键节点
- 节点一(MCP-Injector):容错分类学 × MCP 协议语义 = 六算子×三持久性的故障 API。经典分类学给词汇,协议语义给落地位置——两者缺一,故障注入要么停留在基础设施层(测不到 agent 逻辑),要么变成任意的对抗攻击(失去非对抗性定位)。
- 节点二(MCP-Injector):生态挖掘 × 种子化日程 = 可复现的现实压力。挖掘给分布(91.3% 永久),日程给受控实现——没有前者是手工场景,没有后者是不可复现的观察研究。
- 节点三(KnotScryer):污点追踪 × agent 居间转交 = 四条件 handoff 边。传统污点分析假设进程内数据流,技能间数据流必须经 agent 转交这一事实,要求把边的语义重新定义为通道存在性——这是全文最核心的创造性融合。
- 节点四(KnotScryer):确定性验证 × LLM 过滤 = 只降级不新增的双层审计。marker 重放给可复现的可达性证据,LLM 审计补语义合理性,约束其角色使其不引入幻觉候选——两种验证器的强弱互补被制度化了。
八、论文中可以提取的通用性灵感
灵感一:必要条件不等于充分条件,把充分性检查前置到建图阶段。
- 核心思想:搜索空间的爆炸往往源于把必要条件(类型兼容)当充分条件(可执行)使用;把充分性检查(可观测+可控+证据)前置到图构建,比在搜索阶段过滤便宜几个数量级。
- 论文证据:graph-only 连 1,047,207 条边、可利用率 18.2%;SCFG 只留 1.48% 的对成为边、可利用率 85.6%,且 13 条候选全部可利用。
- 推广场景:① API 编排测试——先检查认证链路真实可用再生成组合用例;② 微服务依赖分析——先确认服务间确有运行时调用关系再算爆炸半径;③ RAG 溯源——先确认文档真正进入上下文再追踪引用;④ 供应链安全——先确认构件在构建中真实被链接再评漏洞可达性。
灵感二:用生态实测分布校准压力测试,而不是手拍场景。
- 核心思想:测试场景的混合比例应来自被测系统的真实故障分布(此处从 57,240 条线程挖掘),并诚实标注偏置来源(GitHub 报告偏置→定位为压力画像而非认证)。
- 论文证据:91.3% 永久/65.6% 单格主导的画像与 JPL/NASA 61.4% Bohrbug 占比互证;手工设定的 ReliabilityBench 无此生态效度。
- 推广场景:① 数据库混沌测试从真实慢查询日志采样延迟分布;② CDN 降级演练按各区域实际故障率加权;③ LLM 评测的对抗样本按真实攻击面分布生成;④ 医疗系统的药物相互作用警示按真实处方数据校准优先级。
灵感三:把持久性作为一等测试维度。
- 核心思想:故障的时间形状(一次 vs 每次 vs 间歇)与故障的内容同等重要——agent/系统对永久故障的正确响应是放弃绕行,对瞬态故障是重试,混同两者会同时误测两种能力。
- 论文证据:永久故障占 91.3% 时 agent 普遍把一切失败当瞬态重试(推理轨迹无一例持久性诊断),120B 烧尽墙钟时间。
- 推广场景:① 微服务重试策略测试须区分永久/瞬态错误码;② 人机协作系统的中断恢复测试(一次性中断 vs 持续故障);③ 教育系统的错误反馈设计(学生该放弃的错误别让反复尝试);④ 缓存失效策略(逐 key vs 整批)。
灵感四:安全责任审计的粒度必须匹配风险的粒度。
- 核心思想:如果风险产生于组件间的交互(handoff、组合、编排),那么组件级的审计无论多严格都存在原理性盲区;审计单元要设计成覆盖交互面。
- 论文证据:612 条链中 84 条(13.7%)全部技能被 Cisco 扫描器标为安全;卸载汇技能后攻击失败——风险确系结构性。
- 推广场景:① 金融市场的单机构风控 vs 系统性风险宏观审慎;② 化学品安全——无害单品的混合毒性;③ 航空供应链——单件合格 ≠ 装配安全;④ 低代码平台的组件级权限 vs 页面级数据流审查。
灵感五:LLM 作为验证器时,制度性地把它约束成只降级不新增。
- 核心思想:LLM 判断的价值在语义合理性、弱点在幻觉;在需要高置信度的管线里,用确定性方法生成候选、LLM 只做降级过滤,比让 LLM 自由生成候选可控得多。
- 论文证据:KnotScryer 的任务锚定 LLM 审计只能确认/降级 SCFG 链、不能改图或新增;MCP-Injector 的 judge 噪声也用五次评分+随机 rubric 顺序+取中位压制。
- 推广场景:① 代码审查——静态分析先报,LLM 复核降级误报;② 医疗影像——规则检出病灶,LLM 只做阴性排除解释;③ 内容审核——分类器初筛,LLM 写理由供人工终审;④ 法律检索——条文匹配先缩小范围,LLM 只做相关性降序。
灵感六:能力排名与韧性排名不必一致,评测要分开测量。
- 核心思想:系统在顺利条件下的表现与其在逆境中保持的表现是两个正交维度,混同会导致资源配置错误(如靠堆规模解决本应靠架构解决的问题)。
- 论文证据:120B 完成时得分更高(3.68 vs 3.26)但韧性系数 p=0.96、完成率反低;框架效应(LangChain 吸收故障)暗示架构杠杆大于规模杠杆。
- 推广场景:① 云服务选型——吞吐峰值 vs 降级模式下的最小可用;② 团队建设——顺境交付能力 vs 故障值班能力分开评估;② 自动驾驶——理想感知成绩 vs 传感器退化冗余;④ 供应链——产能 vs 断供韧性。
附录:核心数字速查
| 维度 | MCP-Injector | KnotScryer |
|---|---|---|
| 生态语料 | 57,240 线程 / 1,774 仓库(κ=0.93/0.80) | 13,598 干净技能(ClawHub 快照) |
| 故障画像 | 永久 91.3% / 间歇 8.0% / 瞬态 0.75% | — |
| 实验规模 | 1,350 cell(2 模型×3 栈×3 条件×25 任务×3 种子) | 612 链 × 9 agent-LLM 组合 |
| 核心退化 | 任务完成分 -60%(8.08→3.23),零剂量剔除后 -67% | — |
| 规模效应 | β=-0.009,p=0.96;完成率 91.1% vs 95.6% | — |
| 框架效应 | MCPBench -0.93(p=0.048)/OpenAI -0.84(p=0.074)vs LangChain | OpenClaw 71.7% vs OpenCode 86.0%(防御深度) |
| 检出/可利用 | — | 612 链,平均可利用率 79.2%(GLM-5.1 下 85.6%) |
| 基线对比 | 栈间差异为暗示性证据 | SCFG 85.6% vs tag-match 16.5% / graph-only 18.2%,z>37 |
| 审计盲区 | 工具旁路 6%(OP0 下同样存在,基线行为) | 13.7% 链全技能被 Cisco 标安全 |
| 责任披露/开源 | artifact 全开(GitLab + Zenodo 存档) | 已向技能平台责任披露 |