Vulnerabilidad en el SDK de Python MCP permite robo de credenciales OAuth
Se ha descubierto una vulnerabilidad en el SDK oficial de Python para el Protocolo de Contexto de Modelo (MCP), que podría permitir a servidores maliciosos robar credenciales OAuth (un sistema de autorización que permite el acceso a servicios sin compartir contraseñas). Este problema fue identificado por la empresa de seguridad Cycode y es importante porque puede comprometer la seguridad de aplicaciones que dependen de este SDK para conectarse a servicios reales.
Cómo funciona el ataque
Cuando un cliente MCP necesita iniciar sesión, solicita al servidor conectado la ubicación del servicio de autorización. En las versiones afectadas, el SDK no verifica correctamente esta respuesta. Por lo tanto, un servidor malicioso puede redirigir al cliente a un servicio de inicio de sesión falso, donde las credenciales se envían a un atacante en lugar de al servicio legítimo.
- El cliente envía su secreto, código de autorización y clave de prueba PKCE (diseñada para evitar el uso no autorizado de códigos de autorización) al servidor del atacante.
- Esto permite al atacante solicitar un token de acceso válido del servicio de inicio de sesión real, obteniendo así los permisos de la aplicación.
A quién afecta
Las aplicaciones que utilizan este SDK como cliente MCP sobre HTTP con proveedores de OAuth específicos están en riesgo. Esto incluye a aquellos que se conectan a servidores que no controlan completamente, mientras mantienen credenciales para servicios reales. Las versiones afectadas son desde 1.9.1 hasta 1.29.1 y desde 2.0.0 hasta 2.1.1, siendo necesarias las versiones 1.30.0 y 2.2.0 para solucionar la vulnerabilidad.
Qué significa esto para ti
Los usuarios y empresas que utilizan este SDK deben actualizar a las versiones corregidas lo antes posible para proteger sus aplicaciones. Además, se les recomienda limpiar cualquier registro de cliente OAuth almacenado previamente, ya que podrían estar vinculados a un servicio de inicio de sesión inseguro. Es fundamental actuar rápidamente para evitar que un cliente ya conectado a un servidor no confiable sea explotado.