你电脑上那些MCP,可能早就被人投过毒了

admin 2026-10-04 04:44:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文揭示MCP生态存在投毒风险,攻击者通过恶意配置文件利用AI编辑器自动加载机制实现代码执行。文中介绍snyk-agent-scan工具可扫描本机MCP服务器与agentskills,检测提示注入、恶意下载等风险,并给出CVE实例与规模数据。建议将MCP配置当代码审计,持续校验工具定义。 综合评分: 88 文章分类: 安全工具,漏洞分析,恶意软件,ai安全


你电脑上那些 MCP,可能早就被人投过毒了

原创

大白 大白

知白守黑1024

2026年10月3日 06:18 北京

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

先说一件已经发生过的事。

2026 年 6 月,微软在 GitHub 上的73 个开源仓库被临时下线,涉及 Azure、Azure-Samples、Microsoft、MicrosoftDocs 四个组织。GitHub 给出的提示是仓库违反了服务条款,实际情况是这些仓库里被推进了恶意提交。

比规模更值得看的,是它怎么触发的。

那条提交没有新增任何依赖,只加了四个配置文件。开发者在本地克隆仓库、用平常的 AI 编辑器把它打开——不装包、不点运行——payload 就以开发者本人的系统权限跑了起来。不弹窗,不二次确认,也没有沙箱。

因为这四个文件,全都是编辑器「约定要自动读」的东西。

一条 commit 加四个配置文件,覆盖四款主流 AI 编辑器

01攻击面,已经挪到你自己电脑上

过去谈 Web 安全,思路是「把服务器守好」。但 AI 编程助手把一大块可信边界搬到了开发者的本机:你装的每一个 MCP 服务器、每一个 agent skill,都在你的机器上、以你的身份运行。

问题出在一个很少被提起的细节上:MCP 的工具描述(tool description)是写给模型看的指令,不是写给用户看的说明文档。它通常被折叠、被截断,你基本不会逐字读完;但模型会把它当成需要遵守的要求。

于是就有了三种典型的投毒方式。

CSA 归纳的三类变体,以及它们共同的成因

这三种里最容易被忽视的是第二种。它的危险在于「先通过审核、再变坏」——你当初确认的那个工具确实无害,但确认过一次之后,之后服务端返回什么内容,客户端就不再较真了。开头那个微软的案例同源:信任锚在「这是微软的仓库」这个名字上,至于提交往里写了什么,没人再看。

不用假设。2025 年 4 月,Invariant Labs 演示过一个「潜伏型」MCP 服务器:它先挂出一个无害的 get_fact_of_the_day 小工具,等你批准之后,再把工具描述换成藏有指令的版本,指挥同时连着 WhatsApp 的 agent 去读取完整聊天记录,并把内容塞进一次正常的发消息调用里带出去。这段 payload 藏在 Cursor 界面横向滚动才能看到的位置,用户全程没有察觉。

02主角是一个「先扫自己」的工具

mcp-scan 时期的官方演示:一条命令扫出 W001 工具描述异常、E001 提示注入与两条 toxic flow

Snyk Agent Scan,前身就是安全圈熟知的mcp-scan。它出自 Invariant Labs——就是上面做 WhatsApp 演示的那支团队,从 ETH Zurich 分出来,2025 年 6 月 24 日被 Snyk 收购,工具随之改名并继续以开源方式维护。

几个基本事实:仓库累计3,110 Star(2026-10-02 实测),Apache-2.0 许可,2025 年 4 月建仓,最后一次提交在 2026 年 9 月 30 日,仍在活跃维护。需要说明的是,这个项目不接受外部贡献,只收 issue。

它做的事很直接:把本机上所有 agent 组件——编辑器、MCP 服务器、agent skills——找出来,逐个查有没有被投毒、有没有可疑数据流。装完第一条命令,扫的就是你自己。

03它怎么工作

官方文档里的架构示意:一条命令 → 扫描器 → MCP 服务器与 skills

流程拆开是三步:

发现。遍历本机各 agent 的配置路径。覆盖面比想象中宽——Claude Code、Claude Desktop、Cursor、VS Code、GitHub Copilot、Windsurf、Gemini CLI、Amp、Amazon Q、Kiro、OpenCode、Codex 等都在自动发现范围内,并且区分系统级、用户级、项目级、插件级四种配置作用域。

取描述。对每个 MCP 服务器,它要么启动 stdio 进程、要么连接远端 URL,把工具描述拉回来看。这一步是它能查到投毒的原因,也是它最大的风险点——后面会说。

分析。本地检查加云端 API 联合判断,配置里的密钥等敏感值在发出前先做脱敏。

结论以风险指标 + 分数的形式给出,满分 1000 分,分四档:100 低、300 中、600 高、1000 严重。v0.6 版本共覆盖14 类风险,MCP 侧 4 类(工具描述注入、不可信内容、隐私数据、破坏性能力),skill 侧 10 类(提示注入、可疑下载地址、恶意代码、凭据处理、硬编码密钥等)。

04输出长什么样

v0.6 的评分式输出:github 服务器命中 1000/1000 的提示注入,release-helper 命中 600/1000 的可疑下载地址

旧版(v0.5.x 线)的问题码输出:E001 严重提示注入,工具描述里直接写着 IGNORE PREVIOUS INSTRUCTIONS

两版输出的差别值得留意:旧版给的是问题码(E/W 开头),新版给的是带分数的风险指标。官方明确说两条输出格式都属于实验性质、可能随版本变动,不建议把某个字段写进生产流程去依赖。

05装机:两条命令的事

它不发 npm 包,官方只提供两种装法:uvx免安装运行,或者从 GitHub Releases 下独立二进制。前置条件只有一个:Snyk 免费账号,去账号页生成一个 API Token。

BASH

1|把 Snyk 令牌放进环境变量

export SNYK_TOKEN=你的令牌

2|扫描整台机器上的 agent、MCP 服务器与 skills

uvx snyk-agent-scan@latest

3|也可以只扫一个配置,或某一批 skill

uvx snyk-agent-scan@latest ~/.vscode/mcp.json

uvx snyk-agent-scan@latest ~/.claude/skills

想接进流水线,用它自带的 CI 模式:有发现就以非零码退出,直接卡住构建。

BASH

只做结构探查,不跑安全分析

snyk-agent-scan inspect

CI 模式:有发现即以非零码退出

snyk-agent-scan –ci –dangerously-run-mcp-servers

从源码运行(仓库已 clone 到本地)

uv run pip install -e .

uv run -m src.agent_scan.cli

官方仓库里还带了一个「故意有洞」的演示 MCP 服务器,配一个 mcp.json 就能复现上面那些发现,适合先拿来练手再扫真环境。

06已经发生的实锤

不是纸上推演。已经确认的漏洞与规模数据里,有四条值得记住:

CVE-2026-33032

nginx-ui 的 MCP 集成里,/mcp接口有白名单加鉴权,/mcp_message却只查 IP 白名单,而默认白名单是空的——空被当成「全部放行」。任何能访问到它的网络攻击者,都能无鉴权调用全部 MCP 工具,包括重载 nginx 配置。

CVE-2025-54073

典型的命令注入:mcp-package-docs 把未经净化的输入参数直接拼进child_process.exec的 shell 命令字符串,最终演变成远程代码执行。

CVE-2026-30623

2026 年 4 月 15 日 OX Security 披露的 LiteLLM 认证后远程命令执行:往 MCP 服务器配置里填任意 command 与 args,LiteLLM 不做校验就直接在宿主机上执行。OX 把这族问题归为「设计层面」的缺陷——根源在 MCP SDK 的 stdio 传输会照单执行拿到的任何命令。

规模数字

OX Security 在 2026 年 4 月的披露里给出量级:约 20 万个存在风险的 MCP 实例、相关软件包累计 1.5 亿次以上下载;CSA 在 5 月的简报里沿用了这组数字。2025 年 7 月 Knostic 做的一次互联网扫描发现 1,862 个暴露在公网的 MCP 服务器,其中手工验证的 119 个全部无需鉴权就能读到工具列表。OWASP 的 MCP Top 10 里,工具投毒排在 MCP03 位。

项目方自己的数据:Snyk 在 2026 年 2 月的 ToxicSkills 研究里扫了 3,984 个公开 agent skill,确认76 个恶意 payload,其中13.4%(534 个)至少含一个严重级问题,发布时仍有至少 8 个恶意 skill 公开可下载。

07用它之前要知道的四件事

一、扫描本身有风险。为了拿到工具描述,它会执行配置里的 stdio 命令、也会向外发起请求。官方建议:扫不可信的第三方配置时,放进 Docker 容器或一次性环境里跑,并且逐条确认它要连的服务器。

二、它盯的是「agent 自己的问题」。官方列出的检测面是提示注入、工具投毒、toxic flow、恶意 skill 这类 agent 原生风险;传统静态分析那一套——第三方库的已知漏洞、弱加密算法、不安全配置——不在它的射程内,要交给别的工具。

三、它是体检,不是疫苗。扫描给出的是某一时刻的结论。Rug Pull 恰恰发生在两次扫描之间,所以真正的防线是持续校验:给工具定义做哈希或版本锁、按工具收敛权限、维护 MCP 服务器白名单。

四、最终判断还得是人。评分能帮你排序,但一个 300 分的「不可信内容」到底能不能接受,取决于你把它和什么东西连在一起用。

回到开头那四个配置文件。它们能得手,靠的从来不是多高明的漏洞,而是没人去看那几行新增的配置。

把 MCP 配置和 skill 文件当成代码来审,把「连接时的信任」换成「每次都验」——工具能帮你把问题摊到桌面上,但这个习惯只能自己养。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。

本文转载自:知白守黑1024 大白 大白《你电脑上那些 MCP,可能早就被人投过毒了》

【软考网规】等保专题 网络安全文章

【软考网规】等保专题

文章总结: 本文系统梳理等保2.0专题知识,涵盖五级等级标准、各级安全保护能力要求、定级备案流程、一个中心三重防护体系及云大物移工新增内容,并给出二级三级参考设
评论:0   参与:  0