Seguridad

Zero-day en el servicio de autenticación de Apple: es posible tomar el control de las cuentas que lo implementen

Bhavuk Jain (@bhavukjain1), conocido programador y entusiasta de la ciberseguridad, ha descubierto un fallo en el servicio de autenticación de Apple que le ha permitido tomar el control de las cuentas en los servicios y aplicaciones web que lo implementaban.

El servicio de autenticación de Apple, ‘Sign in with Apple’ permite a sus usuarios iniciar sesión de sitios web y aplicaciones web que lo implementan. De este modo, los usuarios pueden usar una única cuenta (la de Apple) para registrarse en otros servicios de terceros.

Apple no mantiene ninguna relación con los sitios web externos, sólo les ofrece la tecnología (vulnerable) de inicio de sesión.

El servicio de Apple funciona de forma similar a OAuth 2.0, donde hay dos formas de autenticar al usuario: usando JWT (JSON Web Token) o mediante un código servido por Apple que será utilizado para generar posteriormente un token JWT.

El proceso de cómo se crea y valida este token JWT se muestra en el diagrama representado a continuación:

En el segundo paso, Apple permite al usuario enviar información sobre su Email ID de Apple, ya sea o no requerido por la aplicación de terceros. Si el usuario decide ocultar su ID, Apple genera un ID único para ese usuario que servirá para retransmitirle la información.

Sea cual sea la forma, tras un inicio de sesión exitoso, Apple genera un token JWT que contiene ese Email ID que será usado por la aplicación de terceros.

Un token JWT básico contiene información codificada sobre la fecha de caducidad del token y sobre la identidad del usuario que se autentica. Los JWT de Apple tienen el siguiente aspecto:

Bhavuk Jain descubrió que podía solicitar un token JWT para cualquier Email ID de Apple y éstos se validaban con la clave pública de Apple. Esto significa que un atacante podría construir un token válido utilizando el email de la víctima y acceder a su cuenta.

Ejemplo:

  1. Se realiza una petición POST al servicio de autenticación de Apple con un correo aleatorio.
  1. Apple genera un token JWT válido (id_token) para ese correo en particular:

El impacto de esta vulnerabilidad es crítico ya que permitiría el secuestro completo de cuentas en servicios que implementen la tecnología de Apple, como pueden ser Dropbox, Spotify o Airbnb entre otros. Si bien estas aplicaciones no fueron auditadas durante la investigación, es posible que sean vulnerables si no implementaron medidas de seguridad adicionales.

Más información:

Zero-day in Sign in with Apple

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.