playb0t/mcp-remote-oauth-security

GitHub: playb0t/mcp-remote-oauth-security

针对 geelen/mcp-remote 0.1.16–0.1.38 的 OAuth 信任边界安全披露项目,记录了七个漏洞公告及其验证证据。

Stars: 0 | Forks: 0

Abstract OAuth trust path between a remote MCP server and a local client

mcp-remote OAuth 信任边界漏洞

针对 geelen/mcp-remote 版本 0.1.160.1.38 的协调安全披露。

Disclosure date Research scope Upstream status Advisories Exploit code

``` REMOTE METADATA IS NOT PASSIVE DATA. Every URL, redirect, origin, and credential handoff is a trust decision. ``` ## 摘要 `mcp-remote` 将仅支持 stdio 的 MCP 客户端桥接到远程 MCP 服务器,并代表它们执行 OAuth 发现。这使得远程服务器元数据成为一个安全 边界:客户端绝不能仅仅因为这些 URL、重定向或 凭证目标出现在 OAuth 发现过程中,就将它们视为受信任的。 早期的 [CVE-2025-6514](https://nvd.nist.gov/vuln/detail/CVE-2025-6514) 在 `0.1.16` 版本中修复了浏览器启动路径中的命令注入。 我们的审查发现,在 `0.1.16` 到当前版本 `0.1.38` 中,相关的 OAuth 发现和凭证处理路径 仍然存在暴露风险。 主要的漏洞链如下: ``` flowchart LR A["Attacker-controlled MCP server"] --> B["401 + WWW-Authenticate"] B --> C["Server-selected resource metadata URL"] C --> D["Authorization-server metadata discovery"] D --> E["Automatic redirects / browser launch / SSE transport"] E --> F["Internal network requests or credential-boundary failure"] ``` 有两项发现通过仅限 localhost 的金丝雀测试进行了重新验证。四项为有边界的 源码审查发现。一项为明确的条件性纵深防御发现。这些 证据类别有意未作合并。 ## 公告索引 以下标识符为稳定的研究 ID。当公开的 CVE 记录可用时,相应的 CVE 标识符将被添加到对应的文件中。 | 研究 ID | 发现 | 建议 CVSS 3.1 | 证据 | |---|---|---:|---| | [F-01](advisories/F-01-resource-metadata-ssrf.md) | 通过未经验证的 `resource_metadata` URL 触发的 SSRF | 6.5 | 本地 PoC,已重新验证 | | [F-02](advisories/F-02-authorization-server-ssrf.md) | 通过 `authorization_servers[]` 触发的盲 SSRF | 4.3 | 本地 PoC,已重新验证 | | [F-04](advisories/F-04-md5-token-isolation.md) | 基于 MD5 的 OAuth token 文件隔离 | 5.9 | 源码审查 | | [F-08](advisories/F-08-browser-url-validation.md) | 浏览器启动前不完整的内部地址验证 | 5.4 | 源码审查 | | [F-09](advisories/F-09-cleartext-token-storage.md) | OAuth 凭证以明文形式存储 | 5.5 | 源码审查 | | [F-10](advisories/F-10-redirect-validation-bypass.md) | 遵循重定向绕过一次性 URL 验证 | 7.5 | 源码审查 | | [F-11](advisories/F-11-sse-token-origin-scope.md) | SSE 授权注入缺乏显式的 origin 绑定 | 5.3 | 条件性纵深防御发现 | 这些分数由研究人员提出。它们不是 CNA 或 NVD 的评分。 ## 当前上游状态 - 审查版本:`0.1.38` - 审查并重新验证的 commit: `02619aff36e79803d7c894e8c8ae7b34b2d11f8c` - 初始验证:2026-02-17 - 重新验证:2026-05-03 - 主分支检查:2026-07-31 - 修复版本:截至披露时尚无已知版本 - 已知在野利用:未观察到或声称 ## 负责任披露摘要 初始私下公告于 2026-02-17 提交。在未收到维护者回复或新版本发布后, 这些发现于 2026-05-03 被重新验证。公开 披露发生在一段延长的协调期之后,旨在为 用户提供具体的升级、隔离和监控指南。 有关完整的时间线,请参阅 [TIMELINE.md](TIMELINE.md),有关范围、验证和局限性,请参阅 [METHODOLOGY.md](METHODOLOGY.md)。 ## 仓库结构图 ``` . ├── README.md Research overview and advisory index ├── METHODOLOGY.md Scope, evidence classes, and limitations ├── TIMELINE.md Coordinated-disclosure chronology ├── SECURITY.md Publication corrections and upstream routing ├── CITATION.cff Stable research citation ├── assets/ Repository visual identity └── advisories/ One bounded technical record per finding ``` ## 使用与引用 防御者、维护者和漏洞数据库可以引用本仓库中稳定的 公告 URL。在总结记录时,请保留发现 ID、受影响的 版本范围、证据类别和局限性。 机器可读的引用元数据可在 [`CITATION.cff`](CITATION.cff) 中找到。 ## 研究员 由 [playb0t](https://github.com/playb0t) 发现并报告。
标签:MCP协议, Modbus, OAuth, 安全漏洞披露, 漏洞分析, 路径探测, 防御加固