新发布SkillSec:把 Skills 安全从恶意检测,升维到能力审计SkillSec了解更多 →
安全研究

从 npm 蠕虫到 MCP 投毒:AI Agent 供应链攻击的演化与防线

安势研究院·2026.07.06·4 分钟阅读

软件供应链投毒不是新故事:2018 年 event-stream 被植入窃取加密货币钱包的后门;2021 年周下载量近 800 万的 ua-parser-js 遭劫持分发挖矿与窃密程序;2024 年的 xz/liblzma 后门(CVE-2024-3094)更是让攻击者花三年时间潜伏社区、差一步就进入全球主流 Linux 发行版。2025 年 9 月,自我复制的 npm 蠕虫 “Shai-Hulud” 感染数百个包,用被窃的维护者凭证自动向下游继续投毒——攻击已经从“手工作坊”进化到“自动化流水线”。

攻击面正在向 Agent 生态迁移

当企业开始大规模使用 AI Agent,一个新的、监管几乎空白的分发渠道出现了:MCP 服务器与 Agent Skill。它们像插件一样被安装,却拥有比传统依赖大得多的权限——读写文件、调用内部 API、发送邮件、操作浏览器。

真实事件已经发生。2025 年 9 月曝光的 postmark-mcp 事件中,一个在 npm 上发布的 MCP 服务器在若干个版本里表现完全正常,随后的更新悄悄加入一行代码:把用户发出的每封邮件密送到攻击者的邮箱。安全研究机构还演示了“工具投毒”(tool poisoning):把恶意指令藏在 MCP 工具描述里,诱导模型在用户不知情时读取并外传 SSH 私钥;mcp-remote 的远程命令执行漏洞(CVE-2025-6514,CVSS 9.6)则证明连接一个不可信 MCP 服务器本身就可能导致主机沦陷。

为什么“恶意检测”不够用

传统安全工具面对这些威胁有一个结构性盲区:Skill 的危险往往不来自恶意代码,而来自它被授予的能力组合

  • 说明书即攻击面:Skill 的行为很大程度由自然语言描述(如 SKILL.md)驱动,提示注入可以藏在文档里,静态扫描器根本不看这些文件。
  • 善意也危险:一个功能正常的“邮件摘要” Skill,同时拥有读邮件和访问外部 API 的能力,就构成了现成的数据外传通道——它没有一行“恶意代码”。
  • 组合攻击链:单个 Skill 无害,多个 Skill 的能力叠加(读文件 + 网络访问 + 定时任务)可能拼出完整的渗透路径。

所以正确的问题不是“它是不是恶意的”,而是“它被启用后,Agent 将获得哪些需要审批的能力”。这正是能力审计与恶意检测的分水岭。

企业的三道防线

第一道:准入卡点。任何 MCP 服务器、Skill 在进入企业环境前必须过审计,输出明确的 block / need_review / pass 判定,而不是装完再说。安势 SkillSec 把这套方法产品化:7 大风险域、30+ 结构化能力标签、E1–E5 证据分级,证据链精确到 SKILL.md 行号。

第二道:版本持续监控。postmark-mcp 的教训是“上架时干净”不等于“永远干净”,每次版本更新都应重新过审,重点盯行为差异。

第三道:运行时最小权限。按能力标签配置 Agent 的实际授权,把“可以做”收敛到“需要做”,让即使漏网的投毒也难以变现。

MCP 与 Skill:两种信任模型,两套审计要点

虽然常被并列讨论,两者的风险结构并不相同。MCP 服务器是运行时服务——动态、可远程、随时可被更新,审计重点是端点行为与工具描述的漂移:昨天审计通过的服务器,今天一次静默更新就可能改变行为,postmark-mcp 正是这条路径。Skill 是能力包——说明书(SKILL.md)加脚本的静态组合,最大的风险是“声明与实现的背离”:文档说只读,脚本却在写;文档说本地处理,代码却在外联。审计必须同时读自然语言与代码,并核对两者是否一致,这也是为什么传统只看代码的扫描器在这个生态里天然失明。

标准层面的共识正在形成:OWASP 已将供应链风险列入面向 LLM 与 Agentic 应用的风险清单,企业侧则完全可以把既有的“软件准入”治理框架向 Agent 生态延伸——同样的资产台账、同样的准入评审、同样的版本变更管控,只是审计对象从依赖包扩展到了 MCP 与 Skill。工具在变,治理的第一性原理没变:任何进入生产环境的第三方能力,都必须先回答“它能做什么”。

供应链攻击的历史规律是:分发渠道在哪里,投毒就会跟到哪里。npm 用了七年才建立起相对成熟的防御共识,Agent 生态没有七年可等——它的权限太大、增长太快。把审计放在启用之前,是现在就能做的事。

MCP 安全Skill 安全供应链投毒AI AgentSkillSec

相关阅读

技术解读

SBOM 不止是合规清单:从“我用了什么”到“我能承受什么”

很多团队把 SBOM 当成一份交差用的清单。但真正有价值的 SBOM,是能驱动决策的:哪些漏洞可被利用、哪条依赖该先修、哪个许可证会带来风险。