导航

[业内新闻动态] [【转载】] MCP 服务器平台存在严重漏洞,导致 3,000 多台服务器和数千个 API 密钥泄露

#1
Smithery.ai(一个流行的模型上下文协议 (MCP) 服务器注册中心)存在一个严重漏洞。该漏洞可能使攻击者能够窃取 3,000 多台 AI 服务器的数据,并窃取众多服务中数千名用户的 API 密钥。

MCP 通过将 AI 应用链接到外部工具和数据(例如本地文件系统或远程数据库)来为其提供支持。服务器分为本地服务器和远程服务器,远程服务器通常由服务提供商自行托管或完全托管。

据 GitGuardian 报道,Smithery.ai 的混合模型简化了部署,将用户提交的服务器托管在其基础设施上,这些基础设施由 GitHub 代码库构建成 Docker 镜像。但这种便利也放大了风险:一次漏洞就可能波及整个 AI 工具生态系统。

利用简单配置漏洞
该漏洞源于 Smithery 构建过程中控制松懈。用户提交一个 smithery.yaml 文件,通过 dockerBuildPath 指定 Docker 构建上下文。合法的设置指向仓库内部,但系统未验证输入,导致路径遍历攻击。

通过将 dockerBuildPath 设置为“..”,攻击者可以引用 repo 之外的构建器机器的主目录,从而将敏感文件暴露给恶意 Dockerfile。

在测试中,GitGuardian 精心设计了一个名为“test”的仓库,其中包含一个经过操纵的 yaml 文件和 Dockerfile。Dockerfile 使用 curl 将目录树泄露到攻击者控制的站点,从而泄露了 .docker/config.json 等文件。

该文件包含一个权限过高的 fly.io身份验证令牌,用于 Docker 注册表访问,但授予更广泛的机器 API 权限。

Fly.io 使用虚拟化容器为 Smithery 的托管提供支持,并且该令牌解锁了一个拥有 3,243 个应用程序(主要是 MCP 服务器)以及服务基础设施的组织。

利用该令牌,攻击者可以查询应用程序、在机器上执行代码(通过“id”命令确认 root 访问权限),甚至嗅探网络流量。

1000044842.jpg

捕获对受感染服务器的 HTTP 请求会泄露客户端发送的 API 密钥,例如查询参数中的 Brave 密钥。据GitGuardian 称,如果规模扩大,这可能会窃取数千个通过 MCP 服务器连接到服务的客户端的机密信息。

此次事件凸显了中心化AI托管的供应链风险。MCP服务器通常依赖静态API密钥而非OAuth,这虽然降低了攻击难度,但也增加了权限限制的复杂性。

与Salesloft 的 OAuth 滥用等违规行为类似,它展示了一个缺陷如何实现跨信任的横向移动。

Smithery 在 2025 年 6 月 13 日披露漏洞后,于 2025 年 6 月 15 日修复了遍历漏洞,包括轮换密钥和加强版本。随着人工智能生态系统的发展,此类平台必须优先考虑隔离,以保护开发者免受生态系统范围内的威胁。