系统:运行中
← 返回所有攻击
SUPPLY CHAIN MEDIUM NEW

智能体 Skill 暗藏依赖:Skill 供应链中的传递性风险

2026 年 7 月一项针对 143 万个智能体 Skill 的研究发现,大部分与安全相关的风险都隐藏在传递性依赖中——只读 Skill 文件本身的审查者永远看不到它们。

2026-07-06 // 6 min affects: claude-skills, openai-codex-skills, llm-agents, mcp

这是什么?

智能体 Skill——即为 Claude Code、OpenAI Codex 等 LLM 智能体打包操作性知识的、SKILL.md 风格的可复用捆绑包——通常被当作独立、自包含的单个文档来审查。2026 年 7 月 1 日 发布于 arXiv 的一项研究 Skills Are Not Islands: Measuring Dependency and Risk in Agent Skill Supply ChainsarXiv:2607.01136)指出,这种思维模型是错误的,而且越来越危险。Skill 是承载依赖的制品:它们复用其他 Skill、引入软件包(npm、PyPI),并调用外部服务(MCP 服务器)。作者在 2026 年 6 月 6 日对一个公开的 Skill 注册表做了快照——当时列出了 1,640,440 个 Skill——并分析了他们能够下载到的 1,434,046 个(约占列表的 87.4%),这一语料库在三个月内增长了约九倍。

工作原理

该论文构建了一个工具,从 Skill 内部的自然语言安装与使用说明中重建其完整的依赖图,为每个 Skill 生成一份”物料清单”(bill of materials)。将其应用于整个语料库后发现,Skill 所声明的表面,掩盖了一个大得多的真实表面。

直接依赖很常见,但并非全部:约 8.9% 的 Skill 直接依赖另一个 Skill,15.5% 依赖某个软件包,22.3% 依赖某个外部服务。问题在于放大效应。由于 Skill 会递归地复用其他 Skill,单个根 Skill 可能继承一份它从未点名的庞大清单。作者测得的传递性/直接放大比率,总体最高约达 979 倍,软件包最高达 1,754 倍;一个仅声明三个 Skill 依赖的”编排器”式 Skill,最终引入了 1,938 个组件。复用也高度集中——一小撮 Skill 和软件包被其余一切所依赖,其不平等程度(基尼系数)甚至高于 npm 生态——因此少数节点实际上构成单点故障。近三分之一带依赖的 Skill 处于依赖环或依赖簇(cluster)之中,其中某一成员里的危险指令,会传播到任何触及该簇的 Skill。

为何重要

其安全后果是:只读 Skill 文档远远不够。作者报告称,60–78% 与安全相关的信号——远程载荷执行、危险代码模式、提示注入文本、凭据外泄与持久化行为——都是仅仅通过传递性依赖继承而来的,对只检视根 Skill 的人而言不可见。对于一个被广泛复用的软件包,纯传递性的比例高达 98%;对于被标记为存在漏洞的 MCP 服务,则达到 93%。具体而言:智能体以真实权限运行(文件 I/O、shell、网络),Skill 在缺乏强制审查的情况下被安装,而真正有风险的代码往往距离人类批准的那个文件有两三跳之遥。

这是一项测量研究,而非新漏洞利用的报告;作者谨慎地将其发现的模式称为”审计信号”,而非已确认的漏洞。但它并非纯理论:在绘制依赖图时,他们发现此前已被报告的恶意 Skill 的副本仍持续存在于下游仓库中,并已向相关开发者报告。

防御

核心教训是:把 Skill 当作任何其他软件供应链来对待,并在信任根 Skill 之前解析整个依赖图。

在审查前解析依赖,而不只是 Skill 文件。 任何在根 SKILL.md 处停下的核查——无论人工还是自动——都会漏掉大部分风险。应传递性地展开并检视 Skill 对 Skill、软件包和服务的依赖边。

采用带类型的依赖清单。 作者建议显式区分 Skill 依赖、软件包依赖和服务依赖,各自标注来源与版本,使 Skill 实际引入的内容可声明、可审计,而非埋没在散文式说明里。

锁定版本并保留 lockfile。 大量继承而来的风险可追溯到没有锁定版本的安装说明。类似 lockfile 的记录固定版本、来源仓库和路径,让下游用户能够复现并审计他们正在运行的确切依赖图。

运行依赖审计命令。 类比于 npm audit,Skill 包管理器和注册表应解析完整依赖图,并连同证据路径一起标记已知恶意的 Skill、存在漏洞的软件包和高风险的 MCP 服务——包括仅通过传递性到达的依赖。

将依赖簇作为一等对象来管理。 由于紧耦合的 Skill 簇共享影响半径,应将簇成员身份视为治理单元,并在安装时验证兼容性与来源。

状态

方面详情
来源Skills Are Not IslandsarXiv:2607.01136),2026 年 7 月 1 日提交
类别智能体 Skill 生态的供应链测量——传递性依赖风险
语料1,434,046 个 Skill(约占 1,640,440 个 Skill 注册表快照的 87.4%,2026 年 6 月 6 日)
关键发现60–78% 与安全相关的信号仅通过传递性依赖继承
相关工作针对代码智能体 Skill 生态的供应链投毒(arXiv:2604.03081
性质研究/测量结论——无 CVE;为审计信号,并非对每个被标记案例的真实在野利用确认

Sources