1 jun. 2020

Cien mil dólares al descubridor de un Zero-Day en "Sign in with Apple"

Una vulnerabilidad critica en los botones "Registrate con Apple" pudo haber permitido a atacantes hacerse con el control de la cuenta de Apple de cualquier usuario.

Se ha descubierto un fallo relativamente sencillo de llevar a cabo en el sistema Sign in with Apple que ha reportado 100.000 dólares a su descubridor Bhavuk Jain. Básicamente permitía que un atacante comprometiese de forma muy sencilla cualquier servicio protegido por Sign in with Apple. Bhavuk Jain revelo que la vulnerabilidad que descubrió residia en la forma en la que Apple validaba a un usuario en el lado del cliente antes de iniciar una petición a los servidores de autenticación de Apple.

La ahora parcheada vulnerabilidad pudo haber permitido a los atacantes saltarse la autenticación en las cuentas de los usuarios objetivos que se hubieran registrado en servicios de terceros y aplicaciones con esta opción.

Sign in with Apple trabaja de forma muy similar a OAuth 2.0. Un usuario se puede autenticar usando JWT (Json Web Token) o un código que genera el servidor de Apple que se usa a su vez para generar un JWT. Durante la autenticación Apple da la opción de compartir el Email ID con la tercera parte contra la que se está autenticando, o bien Apple genera un Email ID específico temporal para mantener la privacidad y el JWT se genera según ese correo. Debido a esto, y donde está el fallo, es que en realidad se podía realizar una petición JWT poniendo cualquier email ID de Apple y la verificación del token devuelto sería válida.
Para aquellos que no lo sepan, cuando se autentica un usuario de esta forma, el servidor genera un JSON Web Token (JWT) conteniendo información secreta que la aplicación de terceros usa para confirmar la identidad del usuario que se registra. Tan simple como eso, se podría tener acceso a cualquier servicio protegido con Sign in with Apple puesto que el token presentado sería válido. Eso sí, siempre que el propio servicio no implementase otras medidas de protección. Según los logs de Apple, no se había usado este ataque antes de ser descubierto (y reportado de forma responsable).
Bhavuk encontró que, aunque Apple les pide a los usuarios iniciar sesión en la cuenta de Apple antes de iniciar la petición, no estaba validándolo si la misma persona pide un JWT en el siguiente paso de su servidor de autenticación.

Con esto, la validación faltante en esa parte del mecanismo pudo haber permitido a un atacante proporcionar un Apple ID distinto al del usuario que lo solicita, engañando a los servidores de Apple para que generen un payload JWT que sea valido para registrarse en un servicio de terceros con la identidad de la víctima.

El investigador confirmo que la vulnerabilidad funcionaba incluso si elegias esconder tu email de las aplicaciones de terceros e incluso podía ser explotado para crear una nueva cuenta con el Apple ID de la víctima. Bhavuk reporto la vulnerabilidad al equipo de seguridad de Apple el último mes, y la compañía parcheo la vulnerabilidad.

Además, la compañía confirmo que esta vulnerabilidad no había sido explotada para comprometer ninguna cuenta, después de mirar los logs de sus servidores.

Fuente: Bhavuk Jain

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!