Apple ha pagado una recompensa de 100.000 dólares por un fallo en «Iniciar sesión con Apple»

Apple ha pagado una recompensa de 100.000 dólares a un desarrollador por haber descubierto un grave error en el sistema de acceso «Iniciar sesión con Apple».

Este fallo podría haber sido explotado por usuarios malintencionados para hacerse con la cuenta de un usuario en sitios web y aplicaciones que utilicen ese sistema.

TE INTERESA:

Las apps deberán ofrecer "Inicio de sesión con Apple" si permiten logins de otras plataformas

Según Bhavuk Jain, desarrollador que ha encontrado el fallo, el error estaba relacionado con la forma en que Apple validaba a los usuarios que usaban «Iniciar sesión con Apple».

El servicio de inicio de sesión está diseñado para limitar la cantidad de información que recaban las aplicaciones y sitios web en comparación con otros servicios de inicio de sesión, como Facebook y Google. Una de las mayores ventajas de «Iniciar sesión con Apple» es la capacidad de ocultar tu dirección de correo electrónico de la aplicación o servicio de terceros.

Here’s my first 6 digit bounty from @Apple. Blog post will be up next week. #bugbounty pic.twitter.com/QygxvtGYJb

— Bhavuk Jain (@bhavukjain1) May 24, 2020

El origen del fallo de seguridad

Para autorizar a un usuario, Iniciar sesión con Apple utiliza un JWT (JSON Web Token) o un código generado por los servidores de Apple. Al autorizar, Apple da a los usuarios la opción de compartir u ocultar su ID de Apple con la aplicación de terceros. Si los usuarios deciden no compartir su correo electrónico con una aplicación específica, Apple genera un ID de correo electrónico de Apple específico para ese servicio.

Después de la autorización, dependiendo de lo que el usuario elija, Apple genera un JWT que contiene el ID de correo electrónico. Este ID es utilizado posteriormente por la aplicación de terceros para iniciar la sesión del usuario.

Aquí es donde se produce el fallo. Jain afirma que en abril descubrió que podía solicitar JWT para cualquier ID de correo electrónico de Apple.

«Cuando la firma de estos tokens fue verificada usando la clave pública de Apple, se mostraron como válidos. Esto significa que un atacante podría falsificar un JWT al vincular cualquier ID de correo electrónico con él y obtener acceso a la cuenta de la víctima», explicó el desarrollador en un blog.

Jain descubrió que esto se debía a que, aunque Apple pedía a los usuarios que se conectaran a su cuenta de Apple antes de iniciar la solicitud de autorización, no validaba si la misma persona solicitaba un JWT en el siguiente paso de su servidor de autenticación.

La vulnerabilidad afectaba a las aplicaciones de terceros que utilizaban este sistema y no implementaban sus propias medidas de seguridad adicionales.

Los atacantes podrían explotar esta vulnerabilidad incluso si los usuarios decidieran ocultar su ID de correo electrónico de Apple a los servicios de terceros y que también podría utilizarse para registrar una nueva cuenta con el ID de Apple de la víctima.

«El impacto de esta vulnerabilidad era bastante crítico, ya que podría haber permitido una toma de control completa. Muchos desarrolladores han integrado el inicio de sesión con Apple, ya que es obligatorio para las aplicaciones que soportan otros inicios de sesión con redes sociales», dice Jain. «Estas aplicaciones no fueron probadas pero podrían haber sido vulnerables a una toma completa de control de una cuenta si no hubiera habido otras medidas de seguridad al verificar un usuario».

Jain explica que Apple llevó a cabo una investigación y determinó que no había habido un mal uso ni se había comprometido ninguna cuenta debido a la vulnerabilidad. Apple ha parcheado la vulnerabilidad.