El investigador de seguridad Laxman Muthiyah reportó a Facebook el hallazgo de una vulnerabilidad en Instagram que hubiese permitido a un atacante secuestrar de manera remota cualquier cuenta sin necesidad de interacción por parte de los propietarios de las mismas.
Según explicó Laxman, luego de que Facebook aumentara los montos de las recompensas que paga como parte de su programa de bug bounty, tanto para el hallazgo de vulnerabilidades críticas como de secuestro de cuentas, decidió investigar en busca de algún fallo que pueda reportar. Así fue que encontró esta vulnerabilidad que le significó una recompensa de $30.000.
El fallo radicaba en el mecanismo de recuperación de contraseñas de la versión móvil de Instagram, el cual permite a los usuarios recuperar el acceso a sus cuentas en caso de olvidar su clave de acceso. En este sentido, un usuario de Instagram que se olvide de su contraseña y decida resetearla deberá demostrar su identidad confirmando la recepción de un código de seis dígitos que le llegará a través de un mensaje SMS al número telefónico asociado. Este código, que expira pasados los 10 minutos, deberá ser ingresado por el usuario para poder cambiar su contraseña.
Así fue que el investigador probó la opción de realizar ataque de fuerza bruta e ingresar una gran cantidad de combinaciones posibles. Si bien el sistema permite un número máximo de intentos, este límite de tiempo puede evadirse mediante solicitudes de fuerza bruta desde diferentes direcciones IP y aprovechándose también de lo que se conoce como condición de carrera (en inglés race hazard o race condition). De esta manera, el envío de una gran cantidad de solicitudes de combinaciones utilizando múltiples IP permitieron a Laxman enviar una gran cantidad de combinaciones sin tener problemas de límite.
El investigador demostró la presencia de la vulnerabilidad a través de un video en el que logró secuestrar una cuenta de Instagram al enviar 200.000 combinaciones de códigos diferentes y utilizando una gran cantidad de IP diferentes.
Según explicó el investigador, en un escenario de ataque real un actor malintencionado necesitaría 5.000 IPs para secuestrar una cuenta, algo que se puede obtener mediante un proveedor de servicios en la nube como Amazon o Google, lo cual requeriría una inversión de aproximadamente 150 dólares. De esta manera es posible realizar el ataque completo probando con una combinación de 1 millón de códigos.
La vulnerabilidad, que ya fue parcheada, sirve como ejemplo para demostrar que incluso las grandes plataformas y servicios son vulnerables a posibles ataques y/o fallos de seguridad, por lo que es importante que no dejemos la seguridad librada al azar o en manos de los que proveen los servicios que utilizamos. Es importante que como usuarios hagamos nuestra parte para reforzar la seguridad, ya sea mediante el uso del doble factor de autenticación, utilizando contraseñas únicas por servicio o mediante otras acciones.