<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>网络安全 on Kalend's Blog</title><link>https://blog.kalend.top/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/</link><description>Recent content in 网络安全 on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Mon, 29 Jun 2026 08:30:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP 安全血案：5条攻击路径、20万台服务器中招、你装的插件可能有毒</title><link>https://blog.kalend.top/2026/06/29/2026-06-29-mcp-security-vulnerabilities.html/</link><pubDate>Mon, 29 Jun 2026 08:30:00 +0800</pubDate><guid>https://blog.kalend.top/2026/06/29/2026-06-29-mcp-security-vulnerabilities.html/</guid><description>&lt;h2 id="开篇你装的-mcp-插件可能正在偷你的密钥"&gt;开篇：你装的 MCP 插件，可能正在偷你的密钥
&lt;/h2&gt;&lt;p&gt;上周有个朋友找我，说他用 Cursor 写代码，某天突然发现 &lt;code&gt;.ssh&lt;/code&gt; 目录被读过，AWS 凭证疑似泄露。排查了两天，最后定位到一个两周前从社区 registry 装的 MCP 服务器——一个号称「数据库查询工具」的 npm 包，后台默默把环境变量打包发到了一个海外 IP。&lt;/p&gt;
&lt;p&gt;这不是个例。&lt;/p&gt;
&lt;p&gt;先把数据摆出来，不用我渲染气氛：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标&lt;/th&gt;
					&lt;th&gt;数值&lt;/th&gt;
					&lt;th&gt;来源&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;2026 年 1-2 月 MCP 相关 CVE&lt;/td&gt;
					&lt;td&gt;30+&lt;/td&gt;
					&lt;td&gt;NVD / GitHub Security Advisories&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;公网暴露的 MCP 服务器&lt;/td&gt;
					&lt;td&gt;7,000+&lt;/td&gt;
					&lt;td&gt;OX Security / BitSight&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;受影响实例总数&lt;/td&gt;
					&lt;td&gt;~200,000&lt;/td&gt;
					&lt;td&gt;OX Security&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;暴露在风险中的总下载量&lt;/td&gt;
					&lt;td&gt;1.5 亿+&lt;/td&gt;
					&lt;td&gt;OX Security&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;MCP 服务器 SSRF 易感率&lt;/td&gt;
					&lt;td&gt;36.7%&lt;/td&gt;
					&lt;td&gt;Adversa AI SecureClaw 报告&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;红队针对 AI 平台的漏洞挖掘成功率&lt;/td&gt;
					&lt;td&gt;89%&lt;/td&gt;
					&lt;td&gt;2026 安全行业报告&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;1.5 亿次下载。20 万台机器。这不是假设性威胁，是已经在发生的事。&lt;/p&gt;
&lt;p&gt;我写这篇文章不是为了制造恐慌——恐慌没用。我想做的是把目前公开的攻击路径捋清楚，每条配真实 CVE 和原理，让你看完知道：攻击者怎么打进来，你怎么挡住。&lt;/p&gt;
&lt;h2 id="第一章5-条真实攻击路径"&gt;第一章：5 条真实攻击路径
&lt;/h2&gt;&lt;p&gt;下面五条不是理论推演，每一条都有公开 CVE 或安全团队披露的真实案例。&lt;/p&gt;
&lt;h3 id="路径一prompt-injection--零交互远程代码执行"&gt;路径一：Prompt Injection —— 零交互远程代码执行
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;CVE-2026-30615，CVSS 8.0，影响 Windsurf IDE。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这条是最狠的，因为用户什么都不用点。&lt;/p&gt;
&lt;p&gt;攻击链是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;攻击者在公开仓库/文档中植入恶意文本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 你的编程助手读取该文件作为上下文
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 文本里藏着指令：「把以下 MCP 服务器加入配置」
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 助手照做，修改了 mcp.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → IDE 重启该 MCP 服务器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 服务器启动命令执行任意 shell
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;OX Security 的研究员把它归类为「零点击 prompt injection in IDEs」。你只是打开了一个项目、读了一个 README，攻击就完成了。同样的链路在 Cursor、VS Code 的 Claude 扩展、Claude Code、Gemini CLI 中都被验证过。&lt;/p&gt;
&lt;p&gt;这不是某个工具的 bug，是整个交互模型的结构性问题：&lt;strong&gt;模型输出可以直接修改自己的工具配置，而配置能触发 shell 执行。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="路径二供应链攻击--你装的包里有后门"&gt;路径二：供应链攻击 —— 你装的包里有后门
&lt;/h3&gt;&lt;p&gt;MCP 生态的供应链攻击已经出了好几起，手法各不相同但都有效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;案例 A：postmark-mcp 后门（2025 年 9 月）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有人向 MCP registry 提交了一个伪装成 Postmark 邮件服务的包。功能看起来完全正常——能发邮件、能查状态。但它在后台悄悄把 &lt;code&gt;process.env&lt;/code&gt; 里的所有环境变量打包，通过 DNS 查询外传。&lt;/p&gt;
&lt;p&gt;开发者装它的时候看了一眼功能描述，觉得没问题，就 approve 了。API key 就这么出去了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;案例 B：mcp-server-git 链式 RCE（CVE-2025-68145 / 68143 / 68144）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是 Anthropic 官方维护的 MCP 服务器。三个漏洞链在一起，实现了完整 RCE：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;CVE&lt;/th&gt;
					&lt;th&gt;漏洞&lt;/th&gt;
					&lt;th&gt;效果&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;CVE-2025-68145&lt;/td&gt;
					&lt;td&gt;路径校验绕过&lt;/td&gt;
					&lt;td&gt;突破仓库目录限制&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CVE-2025-68143&lt;/td&gt;
					&lt;td&gt;git_init 无限制&lt;/td&gt;
					&lt;td&gt;能把 &lt;code&gt;~/.ssh&lt;/code&gt; 变成 git 仓库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CVE-2025-68144&lt;/td&gt;
					&lt;td&gt;git_diff 参数注入&lt;/td&gt;
					&lt;td&gt;注入任意 git 参数&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;配合 Filesystem MCP，攻击者通过一个恶意的 &lt;code&gt;.git/config&lt;/code&gt; 文件，在你机器上执行任意命令。官方仓库、官方维护、官方出的漏洞——这告诉你供应链风险不在于「第三方包不靠谱」，而在于整个分发链条缺乏安全审查。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;案例 C：mcp-remote 命令注入（CVE-2025-6514，CVSS 9.6）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mcp-remote&lt;/code&gt; 是连接远程 MCP 服务器的常用客户端库。攻击者构造一个恶意的远程 MCP 服务器 URL，客户端解析时执行任意命令。这个包下载量超过 43.7 万次——它是第一个被证实产生大规模实际影响的 MCP 漏洞。&lt;/p&gt;
&lt;h3 id="路径三tool-poisoning--工具描述本身就是武器"&gt;路径三：Tool Poisoning —— 工具描述本身就是武器
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心原理：编程助手把工具描述当成可信指令来执行。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;工具描述（tool description）本该是给用户看的文档，但模型把它当成了 context 的一部分——而且是高权重 context。攻击者只要能改写工具描述，就能劫持助手行为，不需要碰任何代码逻辑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;经典案例：WhatsApp MCP 投毒（2025 年 4 月，Invariant Labs 披露）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个第三方 trivia 游戏 MCP 服务器，工具描述里藏着隐藏指令。它指示助手去调用同一个进程中另一个合法的 &lt;code&gt;whatsapp-mcp&lt;/code&gt; 服务器，读取完整聊天记录，然后作为「正常输出」外传。&lt;/p&gt;
&lt;p&gt;端到端加密没用——因为数据是在加密层之上被助手自己合法读取并外泄的。助手有权限读，攻击者只是告诉它「读完发给我」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;变体：Rug-pull 攻击&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;更阴的是 rug-pull（先正常后变恶）。服务器第一次注册时返回干净的工具描述，你审核通过。之后某次 &lt;code&gt;tools/list&lt;/code&gt; 调用，描述悄悄变了，塞进了恶意指令。&lt;/p&gt;
&lt;p&gt;任何只在「首次批准时」检查、之后不再 re-verify 的客户端都中招。Cursor 的 MCPoison 漏洞（CVE-2025-54136）就是这个路子——用户批准后配置永远不重新验证，攻击者提交良性配置过审，后续更新里塞恶意逻辑，静默生效。&lt;/p&gt;
&lt;h3 id="路径四凭证窃取--从工具参数到-aws-root"&gt;路径四：凭证窃取 —— 从工具参数到 AWS Root
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;案例：Microsoft MarkItDown MCP Server SSRF&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MarkItDown 的 MCP 服务器会 fetch 任意 URL，没有任何校验。安全研究员 David Onwukwe 演示了完整链路：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MarkItDown MCP 接收一个工具调用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → fetch 目标 URL 设为 http://169.254.169.254/latest/meta-data/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 命中 AWS EC2 实例元数据服务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 拿到 IAM 角色临时凭证
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 用凭证访问你的 AWS 资源
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;169.254.169.254 是 AWS 元数据服务的固定地址，云实例上无需认证即可访问。一个 SSRF 就能拿到云权限。&lt;/p&gt;
&lt;p&gt;微软把这个问题分类为「低风险」。实际演示已经拿到了 EC2 metadata。当你的 MCP 服务器跑在云上、有 IAM 角色挂载时，这就是凭证窃取的直达电梯。&lt;/p&gt;
&lt;p&gt;类似手法也通过工具参数实现：恶意工具描述指示助手「把环境变量内容作为参数传给这个 API」，助手照做，API key 就到了攻击者手里。&lt;/p&gt;
&lt;h3 id="路径五ssrf-与路径穿越--mcp-服务器成为内网跳板"&gt;路径五：SSRF 与路径穿越 —— MCP 服务器成为内网跳板
&lt;/h3&gt;&lt;p&gt;学术安全调研扫描了 2,614 个 MCP 实现，数据触目惊心：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;风险类型&lt;/th&gt;
					&lt;th&gt;占比&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;文件操作存在路径穿越风险&lt;/td&gt;
					&lt;td&gt;82%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;存在代码注入风险&lt;/td&gt;
					&lt;td&gt;67%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;存在命令注入风险&lt;/td&gt;
					&lt;td&gt;34%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SSRF 暴露率&lt;/td&gt;
					&lt;td&gt;36.7%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;案例 A：Fetch MCP Server SSRF（CVE-2025-65513，CVSS 7.5）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mcp-fetch-server&lt;/code&gt; 的 &lt;code&gt;is_ip_private()&lt;/code&gt; 函数没能正确识别私有 IP 地址。攻击者让服务器请求内网地址（&lt;code&gt;http://10.0.0.1/admin&lt;/code&gt;、&lt;code&gt;http://169.254.169.254/...&lt;/code&gt;），函数判断「不是私有 IP」，请求放行。MCP 服务器变成了攻击者进入你内网的跳板。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;案例 B：filesystem-mcp 路径穿越（CVE-2025-67366）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;配置了只能访问 &lt;code&gt;/home/user/project&lt;/code&gt; 的文件系统 MCP，攻击者用 &lt;code&gt;../../etc/shadow&lt;/code&gt; 穿越出去，读到了任意文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;案例 C：Zen MCP Server 路径穿越（CVE-2025-66689）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;is_dangerous_path()&lt;/code&gt; 函数用精确字符串匹配黑名单。&lt;code&gt;/etc/shadow&lt;/code&gt; 被拦了，但 &lt;code&gt;/etc/shadow/../../../home/user/.ssh/id_rsa&lt;/code&gt; 没被拦——因为不在黑名单的精确匹配里。一个子目录穿越就绕过了「敏感路径保护」。&lt;/p&gt;
&lt;h2 id="第二章为什么-mcp-天生不安全"&gt;第二章：为什么 MCP 天生不安全
&lt;/h2&gt;&lt;p&gt;拆完攻击路径，往上抬一层看架构。MCP 的安全问题不是「实现写得烂」，是设计层面就有几个结构性缺陷。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷一：工具描述被默认当作权威指令&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;传统 API 安全模型里，文档是文档，执行是执行，两者隔离。Swagger 文档里写什么不会影响服务端行为。&lt;/p&gt;
&lt;p&gt;MCP 打破了这个隔离。工具描述直接进入模型 context，模型把它当指令执行。这意味着——文档即攻击面。任何能改工具描述的环节（服务器更新、中间人、供应链）都等于拿到了模型的部分控制权。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷二：服务器代码跑在你机器上，但行为由远程定义&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MCP 服务器作为子进程跑在你本地，有你用户的全部权限——能读 &lt;code&gt;.ssh&lt;/code&gt;、能读 &lt;code&gt;.aws&lt;/code&gt;、能访问内网。但它的行为逻辑（工具定义、执行逻辑）由远程 npm/PyPI 包决定，随时可以更新。&lt;/p&gt;
&lt;p&gt;你的机器提供了权限和信任，远程服务提供了行为，两者之间没有隔离层。这就像你在自己家里装了一个别人能远程操控的锁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷三：没有人工审核的默认信任链&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;多数 MCP 客户端用「首次信任」（TOFU）模型。你第一次批准一个服务器，之后它的所有更新和工具调用默认放行，不再重新验证。Cursor 的 MCPoison 就是钻了这个空子。&lt;/p&gt;
&lt;p&gt;工具调用链可以跨安全域：一个你信任的 MCP 服务器，被恶意指令引导去调用另一个你授权的 MCP 服务器，数据就跨域流动了。上面 WhatsApp 投毒就是这个模式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;缺陷四：协议规范只管传输，不管安全&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MCP 规范定义了消息格式和传输层（stdio / SSE），但认证、响应完整性、审计——全是生态各自为政。82% 的实现有路径穿越风险，不是因为开发者菜，是因为协议没提供安全基线，每个人都在重新发明轮子，而且发明得都不好。&lt;/p&gt;
&lt;h2 id="第三章真实伤亡清单"&gt;第三章：真实伤亡清单
&lt;/h2&gt;&lt;p&gt;把受影响面拉个清单，让你知道自己在不在射程内。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IDE / 编程工具全线中招：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;受影响情况&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Cursor&lt;/td&gt;
					&lt;td&gt;MCPoison 信任绕过（CVE-2025-54136）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;VS Code（Claude 扩展）&lt;/td&gt;
					&lt;td&gt;零点击 prompt injection 链&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Windsurf&lt;/td&gt;
					&lt;td&gt;CVE-2026-30615，CVSS 8.0 RCE&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Code&lt;/td&gt;
					&lt;td&gt;通过 hooks/MCP config/env 攻击链&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Gemini CLI&lt;/td&gt;
					&lt;td&gt;MCP 工具链受影响&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;LangChain / LangFlow / Flowise&lt;/td&gt;
					&lt;td&gt;未认证 UI 注入 RCE&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;LiteLLM&lt;/td&gt;
					&lt;td&gt;CVE-2025-45809，SQL 注入&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OX Security 评估：这些工具背后的 MCP 生态总下载量超过 1.5 亿次，约 20 万个实例存在被利用风险。&lt;/p&gt;
&lt;p&gt;Anthropic 对核心设计缺陷的回应是：「这是设计行为，sanitize 是开发者的责任。」&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;vulnerablemcp.info 数据库现状：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;社区维护的漏洞数据库 The Vulnerable MCP Project 已收录 50+ 个漏洞，其中 13 个评为 Critical。这个数字还在涨，每周都有新 CVE 进来。&lt;/p&gt;
&lt;p&gt;如果你在生产环境跑 MCP 服务器，或者哪怕只是在本地用 Cursor 配了几个 MCP 插件，你都在这个射程内。&lt;/p&gt;
&lt;h2 id="第四章开发者自保指南"&gt;第四章：开发者自保指南
&lt;/h2&gt;&lt;p&gt;不废话，直接上操作。&lt;/p&gt;
&lt;h3 id="5-条核心防护措施"&gt;5 条核心防护措施
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. 审查你装的每一个 MCP 服务器&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看当前配置的所有 MCP 服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Cursor: Settings → MCP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Claude Code: ~/.claude/mcp.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# VS Code: 命令面板 → &amp;#34;MCP: List Servers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查 git 历史里有没有可疑改动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git log --all --since&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2 weeks ago&amp;#34;&lt;/span&gt; -- mcp.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 移除不用的服务器——每一个都是攻击面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对于每一个服务器：确认发布者身份、检查 GitHub 仓库近期活跃度和 issue 区有没有安全报告。不认识的服务器，删掉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 沙箱隔离&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MCP 服务器进程不该有你用户的所有权限。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 用 Docker 跑，只挂载项目目录，不挂 ~/.ssh、~/.aws&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it --rm &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;:/workspace &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /workspace &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; your-mcp-server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者用 Dev Container，VS Code 原生支持&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原则：MCP 进程不该接触到「泄露了会很惨」的凭证。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 最小权限&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API key 用只读 scope，别给 root key&lt;/li&gt;
&lt;li&gt;文件系统 MCP 限定到项目目录，别给 home 目录&lt;/li&gt;
&lt;li&gt;网络 MCP 加出站白名单，别让它随便 fetch&lt;/li&gt;
&lt;li&gt;用了之后立刻 revoke 不再需要的凭证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 固定版本，不用 @latest&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 危险&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx @some-package/mcp-server@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 正确——锁定具体版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx @some-package/mcp-server@1.2.3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;供应链 rug-pull 靠的就是你无感知地拉到恶意更新。锁版本 + 监控更新日志，至少能让你知道什么时候变了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 用 mcp-scan 做安全扫描&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Invariant Labs 出的 &lt;code&gt;mcp-scan&lt;/code&gt; 是目前最实用的免费工具：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 需要 Python 3.10+ 和 uv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -LsSf https://astral.sh/uv/install.sh &lt;span class="p"&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 扫描你的 MCP 配置，自动检测工具投毒和已知漏洞&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx mcp-scan
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CI/CD 集成——发现 critical 问题直接失败&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx mcp-scan --exit-code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它能检测工具描述里的投毒指标、匹配已知漏洞数据库、检查版本是否受影响。30 秒跑完，建议每周扫一次。&lt;/p&gt;
&lt;h3 id="mcp-服务器选型-checklist"&gt;MCP 服务器选型 Checklist
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;检查项&lt;/th&gt;
					&lt;th&gt;通过标准&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;发布者身份&lt;/td&gt;
					&lt;td&gt;可验证的 GitHub 组织/个人，有历史信誉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;源码可审&lt;/td&gt;
					&lt;td&gt;公开仓库，能读到完整源码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;活跃度&lt;/td&gt;
					&lt;td&gt;近 3 个月有提交，issue 有回应&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;认证机制&lt;/td&gt;
					&lt;td&gt;有 auth 层，不裸奔&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;权限范围&lt;/td&gt;
					&lt;td&gt;只请求必要权限，不做 read+write 全要&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;社区反馈&lt;/td&gt;
					&lt;td&gt;搜索 CVE + 安全报告，无未修复的高危项&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="推荐工具"&gt;推荐工具
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;mcp-scan&lt;/td&gt;
					&lt;td&gt;免费开源&lt;/td&gt;
					&lt;td&gt;工具投毒检测 + 漏洞匹配&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Snyk Agent Scan&lt;/td&gt;
					&lt;td&gt;免费/付费&lt;/td&gt;
					&lt;td&gt;依赖链漏洞扫描，CI/CD 集成&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SecureClaw&lt;/td&gt;
					&lt;td&gt;企业级&lt;/td&gt;
					&lt;td&gt;55 项审计，合规报告&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;agent-audit&lt;/td&gt;
					&lt;td&gt;开源&lt;/td&gt;
					&lt;td&gt;OWASP Agentic Top 10 对标审计&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;个人开发者：mcp-scan 起步，Snyk 补依赖链。企业环境：上 SecureClaw 做持续监控。&lt;/p&gt;
&lt;h2 id="第五章总结与展望"&gt;第五章：总结与展望
&lt;/h2&gt;&lt;p&gt;先说结论：&lt;strong&gt;MCP 的安全不是「以后再说」的事，是现在就得管的事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;30 个 CVE 用 60 天砸下来，已经把 MCP 从「有前景的开放标准」打成了「活跃攻击面」。而根因——工具描述当指令执行、远程定义本地行为、协议不管安全——不是修几个 bug 能解决的。&lt;/p&gt;
&lt;p&gt;好在社区在动：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;协议层&lt;/strong&gt;：MCP 规范团队在推内置认证标准、工具描述签名、服务器 attestation。这些能从根源上解决工具投毒和供应链问题，但落地还要几个月。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registry 审查&lt;/strong&gt;：主要 MCP registry 在上线发布者验证 + 自动安全扫描，供应链风险会降但不会消失。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;客户端防御&lt;/strong&gt;：越来越多客户端加了细粒度权限控制和定期 re-verify，TOFU 模型在松动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这些都是未来的事。今天的现实是：你装的 MCP 插件可能有毒，你配的服务器可能暴露在公网，你的凭证可能已经被打包外传了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你现在该做的三件事：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开你的 IDE MCP 设置，删掉所有不认识的服务器&lt;/li&gt;
&lt;li&gt;跑一遍 &lt;code&gt;uvx mcp-scan&lt;/code&gt;，修掉 critical 项&lt;/li&gt;
&lt;li&gt;把敏感凭证从 MCP 进程能触及的环境里挪走&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;做完这三步，你的风险面至少砍掉一大半。剩下的，等协议和工具成熟。&lt;/p&gt;
&lt;p&gt;安全从来不是等来的，是防出来的。MCP 生态还在野蛮生长，你不变靶子，就只能自己穿甲。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;数据来源：OX Security 供应链 advisory、The Vulnerable MCP Project（vulnerablemcp.info）、Adversa AI SecureClaw 报告、Invariant Labs 工具投毒披露、NVD/GitHub Security Advisories。 CVE 详情可在对应数据库查询。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>