事件经过
MCP TypeScript SDK的HTTP客户端传输和OAuth客户端函数在跟随跨源重定向时保留了自定义标头,对于307/308状态码还保留了请求体。因此,恶意的或被攻破的MCP或授权服务器可以接收到OAuth刷新令牌、客户端密钥、API密钥和会话标识符。
影响分析
MCP客户端持有允许代理执行操作的凭据;传输上的单个跨源重定向可以泄露OAuth刷新令牌或客户端密钥,这些凭据用于向下游服务认证代理,使得从原本受信任的代理集成中窃取凭据成为可能。
攻击途径
HTTP客户端传输和OAuth客户端请求在跟随到不同源的重定向时保留了自定义请求标头,对于HTTP 307/308状态码还保留了请求体。包含mcp-session-id的自定义标头以及包含refresh_token和client_secret的OAuth请求体可以被重新发送到重定向的源。
受影响系统
@modelcontextprotocol/sdk < 1.32.0; @modelcontextprotocol/client >= 2.0.0, < 2.3.0
缓解措施
升级到@modelcontextprotocol/sdk 1.32.0 / @modelcontextprotocol/client 2.3.0。公告:https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-6prh-2h8m-c8cw