基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-11-12 15:14

57 个 MCP 服务探测揭示匿名访问边界

dev.to · AI#MCP#身份认证#安全审计
Editor brief · 编辑速览

作者称对官方注册表中57个 Streamable HTTP 服务进行被动探测,发现37%允许匿名握手,其中76%无需初始化即可列出工具。文章提供原始数据和复现脚本,但工具清单可见本身不能证明敏感操作也可匿名执行。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

57 个在官方 MCP registry 中声明提供 Streamable HTTP 端点的服务器,有 37% 在零认证条件下完成了握手。这是 Correctover 作者 Guigui Wang 于 2026-11-12 发布的审计结果。但文章更想追问的是:即使加了认证,服务器是否真的知道当前会话属于谁?

作者把问题分成两层:公开端点没有认证,以及会话没有绑定认证身份。前者是部署缺口,后者涉及协议与 SDK 的设计。对正在接入 MCP 的程序员,这个区分比一个吓人的百分比更有用。

37% 没有认证,究竟暴露了什么

作者对 57 个服务器进行了被动探测,每个端点只发送一次无害的 initialize 请求,不做注入、不改变状态。所有请求都带有 X-Audit-By: Correctover 请求头,并提供原始数据与可重放脚本。

其中,37% 无需认证即可完成握手。在这些无需认证的端点中,76% 还会向根本没完成协议握手的调用方返回完整工具清单。注意分母:76% 指向前面那组端点,并非全部 57 个服务器。

一个广告技术端点公开了 35 个账户级工具,涉及邮箱列表、账户查询、营销活动管理,通过一条 curl 请求就能发现。

工具清单不同于普通网页目录:它是 Agent 可以读取并据此发起调用的接口说明。不过,发现工具清单,不等于已经证明所有工具都能越权执行。 原文公开探测证明了握手和工具发现缺少认证,没有逐一展示这些账户工具的执行结果。

有了 token,为什么还可能进入别人的会话

作者随后在自建目标上,使用自己的 token 和会话,对官方 TypeScript SDK 做了受控实验。这部分与前面的公开端点探测应分开看。

实验中,攻击方持有一个有效 token,再配上泄露的受害者 session ID,就能让工具在受害者会话内执行;发送 DELETE 还能终止该会话,此后受害者使用自己的有效 token,也只会得到 404。

这里有两个前提:攻击方已有有效 token,并且拿到了受害者 session ID。原文没有说明真实环境中 session ID 的泄露频率。

作者称之为 Session-as-Identity antinomy,即「把会话当作身份」的矛盾。session ID 原本回答「请求进入哪个上下文」,认证主体回答「请求是谁发的」。只检查会话字符串是否存在,却不核对它归谁所有,就可能允许合法登录者进入别人的上下文。

认证通过,只能证明调用方有身份;会话归属还需要单独验证。

修复方向分两层,不能只等协议升级

作者指出,2025-06-18 版规范没有要求把会话绑定到认证主体,参考实现则通过字符串相等来验证会话。文章还援引 Ruby SDK 的一个 CVE,以及已合并并进入 Final 状态的 SEP-2567,说明上游已经认识到这类问题;但没有给出 CVE 编号和受测 SDK 版本。

两项协议提案走的是不同路线:SEP-2567 移除会话,采用 sessionless MCP;SEP-1299 保留会话并绑定身份。按作者的判断,两条路线都能处理上述矛盾。

对运营方,文章建议在 MCP 端点前配置 OAuth,并提供 RFC 9728 发现机制;保留会话时,把 session ID 当作绑定认证主体的能力凭证处理。

作者也发现了一个正确实现:它能妥善验证伪造和缺失的 session ID。因此,问题并非无法修复。只是无论移除会话还是绑定身份,都不能替运营方把认证真正打开。

我的判断

这篇最有价值的地方,是把「有没有认证」和「认证后有没有核对会话归属」拆开了。常见的只测一次 token 能否访问接口,覆盖不了后一个问题。

但 37% 只能描述这批受测端点,不能直接推广到所有 MCP 服务。原文没有交代抽样代表性、各端点是否原本就打算公开,也没有提供足够信息让读者判断 SDK 实验覆盖了哪些版本。公开只读工具与账户操作工具,风险也需要分别评估。

作者销售审计判定服务,存在商业动机;公开数据、重放脚本和错误日志则有助于外部核验。文章提出的机制问题有具体实验支撑,但不能据此认定所有使用官方 SDK 的部署都可以被相同方式利用。

能拿来做什么

  • 维护 MCP 端点时,分别检查匿名 initialize、未握手获取工具清单、实际工具调用的认证要求,避免只验证正常客户端流程。
  • 自建 Node MCP 服务时,用两组自己的测试身份交叉提交 token 与 session ID,同时检查工具执行和 DELETE 是否验证会话归属。
  • 审查 Agent 接入的 MCP 服务时,把账户查询、邮箱和活动管理等工具列为重点,继续核实执行权限,别停在工具清单可见性上。
  • 作者提供了号称 30 秒即可运行的 GitHub Action,可用于检查自己的服务;原文未贴出配置或命令,采用前应先核对脚本及判定规则。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
用 MCP 为本地智能体接入开发环境
下一篇
从安装到断点重跑的 AI 工具排障清单

资讯速览

dev.to · AI · 2026-11-12 15:14

AI 评分 8.0 / 10

相关标签

#MCP#身份认证#安全审计

继续阅读

  • Scribe v3 升级实时转写,采集延迟仍需自解
  • 用 MCP 为本地智能体接入开发环境
  • 从安装到断点重跑的 AI 工具排障清单
  • 语音 Agent 为何把格式符号读出声
  • 聊天任务截止日期如何解析才可靠