Official MCP Python SDK Flaw Can Let Malicious Servers Steal OAuth Credentials
The Hacker News · 29 sept, 08:08

Una vulnerabilidad en el SDK oficial de Python del Protocolo de Contexto de Modelo (MCP) permite que servidores MCP maliciosos recluten las credenciales OAuth de las aplicaciones cliente. Un servidor atacante podría redirigir al cliente a un endpoint de token controlado por el atacante, capturando el secreto del cliente, el código de autorización y la clave PKCE, que luego puede usar para solicitar tokens de acceso válidos con los permisos otorgados originalmente. La vulnerabilidad afecta a las versiones 1.9.1 a 1.29.1 (línea 1.x) y 2.0.0 a 2.1.1 (línea 2.x), y fue reparada en las versiones 1.30.0 y 2.2.0 lanzadas el 7 de septiembre.
MCP es un estándar abierto para conectar aplicaciones de IA a herramientas y datos externos. La vulnerabilidad radica en que el SDK de Python no validaba siempre el servidor de autorización que le indicaba el servidor MCP al que se conectaba. Un servidor malicioso podría apuntar a un endpoint controlado por el atacante utilizando el nombre del servicio real, engañando al cliente para que enviara allí el secreto del cliente, el código de autorización y la clave PKCE (diseñada para evitar la reutilización de códigos robados). Cycode demostró que los tokens obtenidos con estas credenciales mantienen todos los permisos originales, y el secreto del cliente es de larga duración.
La vulnerabilidad se clasifica con puntuación CVSS 7.5 para los dos proveedores sin intervención humana (ClientCredentialsOAuthProvider y PrivateKeyJWTOAuthProvider) y 6.5 para el proveedor interactivo (OAuthClientProvider). Las versiones corregidas implementan verificaciones del emisor de autorización. Sin embargo, dos de los proveedores requieren además pasar explícitamente el parámetro issuer= en la configuración; sin él, siguen siendo vulnerables. La aplicación cliente debe estar conectada a servidores que no controla completamente y mantener credenciales activas para considerarse afectada.
Puntos clave
- Afecta a versiones 1.9.1–1.29.1 (1.x) y 2.0.0–2.1.1 (2.x)
- Parches disponibles: 1.30.0 y 2.2.0
- ClientCredentialsOAuthProvider y PrivateKeyJWTOAuthProvider requieren parámetro issuer= adicional tras actualizar
- Mitigaciones: rotar secreto del cliente y revocar tokens en el servicio de autenticación si se conectó a servidores no confiables