Apple ha pagado una recompensa de 100.000 dólares a un programador por haber destapado 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 website y apps que utilicen ese sistema.
Según Bhavuk Jain, programador que ha hallado el fallo, el error estaba vinculado con la manera 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 info que recaban las apps y sitios website en comparación con otros servicios de inicio de sesión, como Facebook℗ y Google. Una de las mayores mejorías de «Iniciar sesión con Apple» es la capacidad de ocultar tu dirección de correo electrónico de la app o servicio de terceros.
Here’s my first 6 digit bounty from @Apple. Blog post(entrada-noticia) 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 code 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 app de terceros. Si los usuarios deciden no compartir su correo electrónico con una app 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 app de terceros para comenzar la sesión del usuario.
Aquí es donde se produce el fallo. Jain afirma que en abril detectó que podía pedir JWT para cualquier ID de correo electrónico de Apple.
«Cuando la signatura de estos tokens fue verificada empleando la clave pública de Apple, se presentaron como válidos. Esto significa que un atacante podría falsificar un JWT al asociar cualquier ID de correo electrónico con él y adquirir acceso a la cuenta de la víctima», explicó el programador en un blog.
Jain detectó que esto se debía a que, pese-a-que Apple℗ pedía a los usuarios que se conectaran a su cuenta de Apple℗ antes de comenzar la solicitud de autorización, no validaba si la misma persona solicitaba un JWT en el próximo paso de su servidor de autenticación.
La debilidad afectaba a las apps de terceros que utilizaban este sistema y no implementaban sus propias medidas de seguridad adicionales.
Los atacantes podrían explotar esta debilidad inclusive si los usuarios decidieran ocultar su ID de correo electrónico de Apple℗ a los servicios de terceros y que además podría utilizarse para registrar una nueva cuenta con el ID de Apple℗ de la víctima.
«El impacto de esta debilidad era suficiente crítico, ya que podría haber permitido una toma de control completa. Muchos programadores han entrado el inicio de sesión con Apple, ya que es obligatorio para las apps que soportan otros inicios de sesión con redes sociales», dice Jain. «Estas apps 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 comprobar un usuario».
Jain aclara 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.