影子 MCP:无人为之制定预算的企业问题
员工将未经授权的 MCP 服务器插入 Claude 和 Cursor。 一项网关规则、一项库存查询和一项策略模板可帮助您抢先一步。
影子 IT 过去指的是营销经理为 Dropbox 付费。 Shadow SaaS 意味着一个产品团队 使用个人信用卡注册 Figma。 两者都包含在内:工具在浏览器中运行 选项卡,触摸了用户已经可以看到的数据,并且无法超出选项卡边界。 影子MCP 打破了这种遏制。 员工将社区 MCP 服务器切换为 Cursor 或 Claude 桌面,现在代理可以读取 SSH 密钥、运行 shell 命令以及与生产环境对话 通过用户的环境凭据访问数据库。
Cloudflare Gateway 于 2026 年 4 月发布了 MCP 感知规则。Zscaler 和 Netskope 紧随其后 一周。 由于企业安全团队开始提出要求,该工具迎头赶上。 这篇文章涵盖了 本季度要做的四件事:了解威胁模型、构建检测、交付 清点脚本,列入许可名单,并发布三页的政策。
为什么 Shadow MCP 比 Shadow SaaS 差
浏览器中的恶意 SaaS 选项卡在沙箱中运行。 它无法读取用户的 SSH 私钥。 它 无法生成外壳。 它无法打开到生产 Postgres 的 TCP 连接。 浏览器的 同源策略和操作系统沙箱进行遏制。
MCP 服务器在浏览器外部运行。 Claude Desktop 和 Cursor 作为子级生成 stdio 服务器 具有用户权限的用户计算机上的进程。 HTTP MCP 服务器连接 用户粘贴的任何凭证。然后,代理从该服务器调用工具,作为 它的正常循环。 从操作系统的角度来看,工具调用就是用户打开一个 文件或运行命令。
具体区别:社区 GitHub MCP 服务器从随机 npm 包中提取并添加到
~/.cursor/mcp.json 可以渗出任何东西 ~/.ssh/, 每一个
.env 您的主目录下的文件以及用户的任何存储库的全部内容
已退房。 用户批准了一次。 代理再也没有问过。 基于浏览器的流氓软件
工具无法做到这一点。
再增加一个难题:用户的 VPN。 如果代理运行时笔记本电脑位于公司 VPN 上, MCP 服务器继承该网络位置。 内部服务、临时数据库和 元数据端点全部变得可访问。 服务器不需要对任何人进行网络钓鱼。 它只是等待 用于连接 VPN。
在您的网络上查找 Shadow MCP
检测工作在三层:端点、出口网关和 DNS。 你想要信号 来自所有三个,因为每个都捕获不同的故障模式。
在端点上,监视 Claude Desktop 或 Cursor 生成的子进程。 双方客户
使用已知的父进程名称调用 stdio 服务器作为子进程。 您的 EDR(CrowdStrike、
SentinelOne(端点防御者)可以对任何根植于以下位置的进程树发出警报
Claude.app, Cursor.app, 或者 claude-code。 过滤至
您批准的; 标记其他所有内容。
在出口处,过滤 HTTP 流量。 MCP over Streamable HTTP 附带独特的标头
(mcp-protocol-version)和独特的内容类型
(application/json-rpc-2)。 Cloudflare Gateway、Zscaler 和 Netskope 均匹配
两者都有。 以下是 Cloudflare 零信任规则,用于阻止未经批准的 MCP,同时允许您
批准的主机:
在 DNS 上,您的解析器会在任何 HTTPS 连接之前查找社区 MCP 服务器主机 打开。 将批准的允许列表输入您的 DNS 过滤器(Cisco Umbrella、NextDNS、Cloudflare 网关 DNS)作为唯一允许的 MCP 目的地。 与已知匹配的所有其他查找 MCP 注册提要获得一个区块和一张票证。
对于 npm 安装的 stdio 服务器,您的端点 DLP 代理可以监视匹配的包
*-mcp-*, @modelcontextprotocol/*,或任何声明
mcp 其条目 package.json bin 场地。 这抓住了
在用户将服务器连接到 Cursor 之前安装事件。
一下午建立 MCP 库存
检测会告诉您新服务器何时出现。 库存会告诉您已安装的内容。 发送脚本,通过 MDM(Jamf、Intune、Kandji)运行它,并将结果发布到报告中 端点。 工作一下午,你就知道哪些机器有哪些服务器了。
该脚本读取每个主要客户端使用的两个配置文件。 Claude Desktop 保留其配置
在 ~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 和
%APPDATA%\Claude/claude_desktop_config.json 在 Windows 上。 光标将其配置保持在
~/.cursor/mcp.json。 这两个文件都是纯 JSON,带有 mcpServers
将服务器名称映射到命令、参数、URL 和环境变量的对象。
哈希很重要。 当用户添加服务器、轮换密钥或拉下某个服务器时,配置文件会发生更改
团队模板。 存储整个文件的 SHA-256,并对您未推送的任何更改发出警报。 的
环境变量名称(而不是值)也出现在报告中; 看到 GITHUB_PERSONAL_ACCESS_TOKEN
社区服务器下列出的是其自己的信号。
每天运行脚本。 将输出输入到您现有的资产库存中(Snipe-IT、ServiceNow、 或 Postgres 表)。 构建一个仪表板,显示:本周新服务器、超过 配置哈希发生更改的 N 台机器和服务器。 这三个视图涵盖了您将要看到的大部分内容 需要稍后询问。
将您信任的服务器列入白名单
库存显示您已安装的内容。 允许列表说明了允许的内容。 默认拒绝,每个 服务器已审核,每个批准都会过期。 在 Git 中对文件进行版本控制,以便批准历史记录为 可审计。
三件事让这个许可名单变得有用。 首先,每个参赛作品都有审核票和有效期;
批准不会永远存在。 其次,stdio 服务器包含允许的参数,因此
postgres-mcp 二进制批准 --readonly 不能重新运行
无需新评论即可写入访问权限。 第三,范围是命名且明确的; 稍后的控制层
可以强制执行它们。
将新服务器加入白名单需要在人工审核之前进行两次自动检查。 首先,验证服务器主机的 TLS 状态。 通过纯文本 HTTP 提供 MCP 服务的服务器,或者 证书将在 10 天后过期,或者缺少 HSTS,则不是候选者:
其次,检查响应标头。 您希望 HSTS 具有较长的 max-age、合理的
content-type,和一个 mcp-protocol-version 与内容匹配的标头
服务器说它在清单中支持。 标头和清单之间的漂移是一个危险信号:
将这两项检查作为入场单的一部分进行。 如果任一失败,票证将自动关闭,并显示 失败原因。 审核者只能看到通过基础知识的服务器。
每个公司都需要的三页 MCP 政策
政策不需要太长。 它需要回答五个问题:批准了什么、谁批准 批准新服务器,每个角色可以做什么,如何监控它,以及什么时候会发生什么 出问题了。 一张简短的表格比一份无人阅读的 30 页文档更有效。
| 区域 | 政策 | 控制 |
|---|---|---|
| 认可的服务器 | 只有允许列表 YAML 中的服务器才能在公司设备上运行或接触公司数据。 | DNS + 出口块、EDR 流程规则、MDM 推送的许可名单文件、六个月批准到期。 |
| 审核流程 | Security Platform 会审核所有新的服务器请求。 数据平台对任何具有数据库访问权限的服务器进行联合签名。 对处理受监管数据的服务器进行合法签名。 | 查看票证模板、自动 TLS 和标头检查、发布的 5 个工作日的 SLA。 |
| 范围限制 | 默认情况下,工程师获得只读数据服务器。 写入权限需要第二个审批者。 禁止生产凭证; 使用暂存或范围令牌。 | 通过 MDM 推送的按角色白名单捆绑包、具有短 TTL 的范围 API 密钥、身份验证网关强制范围。 |
| 监控 | 通过批准的服务器进行的每个工具调用都会记录在审核日志中。 未经批准的服务器尝试会在 15 分钟内触发警报。 | Kafka 和 SIEM 的网关审核接收器、每日库存差异、配置文件哈希漂移警报。 |
| 事件响应 | 受损的 MCP 服务器被视为受损的 API 集成。 撤销服务器的密钥,隔离受影响的端点,查看暴露窗口的审核日志。 | 记录的运行手册、随叫随到的轮换、包含 MCP 场景的季度桌面。 |
| 例外情况 | 临时例外需要 CISO 的批准、30 天的期限以及书面的后续计划。 | 例外票证模板、自动过期的许可名单条目、每周例外审查。 |
| 离职 | 当员工离开时,他们的 MCP 配置将与其他公司状态一起被擦除。 他们持有的任何钥匙都会在 24 小时内轮换。 | MDM 擦除操作、密钥轮换操作手册、每个密钥上次访问的审核日志。 |
要点
- MCP 能力超过 SaaS 能力。 社区 MCP 服务器读取 SSH 密钥、运行 shell 命令并继承您的 VPN 位置。 将其视为特权 集成,不像浏览器选项卡。
-
检测需要三层。 EDR 流程规则、网关 HTTP 过滤器
mcp-protocol-version,并且 DNS 许可名单涵盖了不同的故障模式。 - 一下午就清点了。 60行Python脚本读取两个配置 文件每个主要客户使用,散列它们,并发布到报告端点。 每天运行一次 通过 MDM。
-
默认拒绝白名单,有效期短。 每个服务器都有一张评论票
六个月有效期。 使用
/v1/ssl/check和/v1/headers/inspect作为 自动进气门。 - 一张表格胜过 30 页的政策。 批准的服务器、审核流程、范围 限制、监控、事件响应、例外、下线。 七行,一页,已发布 在工程维基百科中。
Botoi 自己的 MCP 服务器位于 api.botoi.com/mcp 是服务器外观的示例
一旦准备好列入白名单:TLS 1.3、HSTS、范围 API 密钥、每密钥速率限制和 49
带注释的精选工具。 你可以用上面的两个卷发自己验证一下姿势
添加之前,或检查 MCP 设置页面
和 API文档
获取完整的工具列表。
FAQ
- 出于库存目的,什么算作 MCP 服务器?
- stdio 和 HTTP 服务器都计数。 stdio 服务器是 Claude Desktop 或 Cursor 从配置文件条目生成的子进程; 在代理启动之前没有网络足迹,但它具有相同的功能表面。 HTTP 服务器位于客户端通过 Streamable HTTP 或 SSE 连接的 URL 处。 您的清单需要涵盖两者,这意味着读取端点上的配置文件并监视出口以获取 MCP 流量签名。
- 我可以在不破坏批准的代理的情况下完全阻止企业网络上的 MCP 吗?
- 是的。 默认情况下,在出口网关处阻止所有内容,然后将您批准的 MCP 服务器所在的特定主机名列入白名单。 经过批准的 stdio 服务器根本不接触网络(它们通过普通 HTTPS 与其支持 API 进行通信,而您已经控制了该 HTTPS)。 您会失去企业设备上的社区 MCP 实验,这就是重点。 开发者仍然可以使用VPN之外的个人机器进行探索。
- Shadow MCP 与即时注入风险有何不同?
- 提示注入是指攻击者欺骗模型做其操作员不希望做的事情。 Shadow MCP 是运营商自己以未经审核的能力进行布线。 不同的威胁参与者,不同的控制。 如果该工具根本不应该存在,那么即时注入防御(工具确认、沙箱、输出过滤)就无济于事。 除了模型级防御之外,您还需要库存和白名单。
- 阻止是否需要升级下一代防火墙?
- 不会。DNS 过滤加上 HTTP 层出口检查涵盖了大部分内容。 截至 2026 年 4 月,Cloudflare Gateway、Zscaler 和 Netskope 均已发布 MCP 感知规则。对于本地部署,您可以使用任何 L7 代理过滤 MCP-Protocol-Version 标头或 application/json-rpc-2 内容类型。 Squid、Envoy 和 HAProxy 都处理这个问题。 困难的部分不是过滤器;而是过滤器。 它正在维护白名单。
- MCP 为我提供了哪些开箱即用的审计跟踪?
- 几乎没有。 该协议定义了工具调用和响应,但不要求服务器或客户端记录它们。 Claude Desktop保留一些本地日志; 光标少了。 社区服务器通常不记录任何内容。 如果您需要能够通过事件审查的审计跟踪,您可以在服务器端自行检测,或者在前面放置一个写入结构化日志的网关。 不要依赖客户持有证据。
开始使用 botoi 构建
150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。