Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Vulnerabilidad en el SDK oficial de Python para MCP podría permitir que servidores maliciosos roben credenciales de OAuth


Se detectó una vulnerabilidad grave en el SDK de Python del Model Context Protocol (MCP) que permite a servidores maliciosos robar credenciales OAuth. El fallo permite que un atacante capture secretos y tokens de acceso para suplantar la identidad del usuario en servicios reales. Se recomienda actualizar a las versiones 1.30.0 o 2.2.0 y configurar correctamente el parámetro issuer para mitigar el riesgo.





Un servidor MCP malicioso podría engañar a una aplicación basada en el SDK de Python oficial de MCP para que entregue las credenciales OAuth que utiliza para iniciar sesión en un servicio real, según indicaron los responsables del SDK en un aviso de seguridad.

Las versiones afectadas enviaban el secreto del cliente, el código de autorización y la clave de prueba PKCE a un punto final de token controlado por el atacante. La solución se encuentra en las versiones 1.30.0 y 2.2.0.

El Model Context Protocol (MCP) es un estándar abierto para conectar aplicaciones de IA con herramientas y datos externos, y este paquete es su SDK oficial de Python para crear servidores y clientes MCP.

Con las credenciales robadas, el atacante puede solicitar un token de acceso válido al servicio de inicio de sesión real. Cycode, la empresa de seguridad que informó del fallo, demostró este intercambio en una prueba y afirma que el token resultante posee todos los permisos otorgados a la aplicación. El secreto del cliente es de larga duración, por lo que sigue funcionando hasta que se cambie.

El fallo tiene una calificación de alta (7.5) para los dos proveedores que funcionan sin intervención humana. Para el proveedor interactivo, donde alguien debe iniciar el proceso de acceso, la puntuación es de 6.5. Hasta el 29 de septiembre no se había asignado ningún CVE.


Cómo un servidor roba las credenciales



Cuando un cliente MCP necesita iniciar sesión, pregunta al servidor al que se conecta dónde se encuentra su servicio de inicio de sesión, llamado servidor de autorización. En las versiones afectadas, el SDK no siempre verificaba esa respuesta. Un servidor malicioso podría dirigirlo a un servicio de inicio de sesión elegido por el atacante, ya sea nombrando su propio servidor o proporcionando detalles de inicio de sesión que nombran el servicio real del usuario mientras envía las credenciales a otro lugar.

El cliente envía entonces su secreto, su código de autorización y su clave de prueba PKCE al atacante en lugar de al servicio real. La clave de prueba es un valor de un solo uso diseñado para evitar que un código de autorización robado sea reutilizado, por lo que entregarla también anula esa protección.

Con el proveedor interactivo, la persona aún debe aprobar el inicio de sesión. Cycode afirma que la página que aprueban es la página de inicio de sesión genuina, por lo que nada parece incorrecto. Los dos proveedores de máquina a máquina no requieren inicio de sesión ni intervención humana.


Quién está afectado



Tu aplicación está afectada si utiliza el SDK como cliente MCP sobre HTTP con uno de los proveedores OAuth: OAuthClientProvider, ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider, o el obsoleto 1.x RFC7523OAuthClientProvider, y puede conectarse a un servidor que no controlas totalmente mientras posees credenciales para un servicio de inicio de sesión real. Los servidores MCP creados con el SDK, los clientes locales (stdio) y los clientes que adjuntan sus propios tokens no están afectados.

Línea Afectada Corregida en
1.x: 1.9.1 hasta 1.29.1 -> 1.30.0
2.x: 2.0.0 hasta 2.1.1 -> 2.2.0


Qué hacer



Actualiza a la versión 1.30.0 en la línea 1.x o a la 2.2.0 en la línea 2.x. En las versiones corregidas, el cliente determina qué servicio de inicio de sesión espera antes de obtener cualquier detalle y rechaza cualquier otro.

Actualizar no es la solución completa para dos de los proveedores. Si usas ClientCredentialsOAuthProvider o PrivateKeyJWTOAuthProvider, el aviso indica que "actualizar no cambia nada hasta que también pases issuer=" aquí para nombrar el servicio de inicio de sesión al que pertenecen esas credenciales. Sin esto, seguirán cualquier servidor al que el servidor MCP los dirija.

En la versión 1.30.0, el aviso sobre esto es una advertencia de obsolescencia estándar, que Python oculta por defecto, por lo que es fácil pasarlo por alto. El RFC7523OAuthClientProvider obsoleto no tiene opción de issuer=, así que debes cambiarte a uno de los otros dos proveedores.

Después de actualizar, limpia cualquier registro de cliente OAuth almacenado una vez, ya que los antiguos no están vinculados a un servicio de inicio de sesión. Si un cliente ya se ha conectado a un servidor no confiable, rota su secreto de cliente y revoca sus tokens en el servicio de inicio de sesión. En versiones antiguas, no hay otra solución que conectarse únicamente a servidores MCP en los que confíes.


Divulgación



Las comprobaciones del emisor se incluyeron en las notas de lanzamiento de las versiones 1.30.0 y 2.2.0 el 7 de septiembre, enumeradas como cambios de comportamiento en lugar de como una corrección de seguridad. El aviso siguió el 28 de septiembre, el mismo día que Cycode publicó su análisis. El aviso acredita a ocho informadores, incluido el investigador de Cycode.

Ni el aviso ni Cycode informan de ningún ataque utilizando este fallo, y no se ha reportado ninguno en otros lugares.

Fuente:
THN

0 comments :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.