事件经过
MCP TypeScript SDK的服务端Bearer认证未强制OAuth令牌受众,因此接受为另一个服务签发的有效令牌。在多服务部署中,持有某个服务令牌的攻击者可以作为授权调用者认证到MCP服务器。
影响分析
MCP服务器经常部署在共享的OAuth生态系统中,其中一个授权服务器为多个服务签发令牌;缺少受众检查会让针对另一个服务的令牌解锁MCP工具,这是进入代理工具表面的认证绕过路径。
攻击途径
服务端HTTP Bearer认证接受为不同服务签发的有效访问令牌,因为SDK未强制令牌受众。持有其他服务令牌的调用者可以认证到MCP服务器,并获得授予认证调用者的机密性和完整性能力。
受影响系统
@modelcontextprotocol/sdk >= 1.6.0, < 1.32.0; @modelcontextprotocol/server >= 2.0.0, < 2.3.0; @modelcontextprotocol/express >= 2.0.0, < 2.0.2; @modelcontextprotocol/server-legacy >= 2.0.0, < 2.3.1
缓解措施
升级到@modelcontextprotocol/sdk 1.32.0 / server 2.3.0 / express 2.0.2 / server-legacy 2.3.1,然后启用受众验证并提供预期的令牌受众(仅升级会使新的验证保持禁用状态)。公告:https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-rvq5-wwqv-78pq