CVE-2026-44428MCP Registry 在 1.7.6 版本之前存在严重的安全漏洞,其 GitHub OIDC 认证流程存在设计缺陷。该系统本应作为 MCP 服务器的应用商店,但在验证身份时,客户端和服务端仅依赖于全局的受众字符串,而非特定的注册表实例。无论用户选择哪个注册表 URL,客户端都会请求固定的 audience=mcp-registry,服务端也仅验证此固定值。这导致在一个注册表部署中获取的合法令牌,可以被重放到任何其他共享相同代码库和受众字符串的注册表部署中。攻击者可利用此漏洞绕过实例间的隔离,利用合法令牌在未授权的注册表上执行发布操作。该问题已在 1.7.6 版本中修复。
该漏洞的核心在于 MCP Registry 对 GitHub Actions OIDC ID Token 中 `aud`(Audience)声明的处理不当。在安全设计中,Audience 用于限制令牌的适用范围,防止令牌在不同服务间滥用。然而,MCP Registry 的实现在客户端硬编码了 `audience=mcp-registry`,未根据部署环境(如 URL)进行区分。服务端在验证令牌时,仅检查该硬编码的 audience 是否存在,而未验证其是否与当前服务实例匹配。由于服务端直接从令牌的 `repository_owner` 声明中推导发布权限,攻击者只需获取针对任意一个实例的有效令牌,即可将其重放至目标实例。目标实例会误认为该令牌是发给自己的,从而授予攻击者相应的发布权限,造成越权访问。