• Facebook Basic Black
  • Twitter Basic Black
  • LinkedIn Basic Black

Condiciones Legales - Políticas de Privacidad

AsegurarTe: Consultora en Seguridad de la Información - 2019

Instagram

Debilidad en el proceso de recuperación de cuentas de Instagram en iOS

Tu Instagram podría estar intervenido y nunca te enterarías...

Fecha de reporte: 07/05/2018

Fecha de publicación: 21/05/2018

Versión de la aplicación: 44.0

Sistema Operativo: iOS 11.3.1 (iPhone, iPad)

Descripción del problema de seguridad detectado

La debilidad hallada por el equipo de AsegurarTe se encuentra en el proceso de recuperación de la cuenta de Instagram, siempre que el mismo se realice desde la aplicación móvil del sistema operativo iOS (iPhone, iPad). El problema detectado consiste en que la utilización del token enviado no fuerza el cambio de contraseña (como sí sucede si el usuario intenta recuperar la cuenta vía Web  o desde un dispositivo Android),  sino que permite el ingreso de forma directa,  desde cualquier dispositivo, sin generar alertas o cerrar las sesiones ya iniciadas.

Es decir, capturado el token de autenticación en el proceso de recuperación de la cuenta de Instagram -que llega vía mail o vía sms-, puede ser utilizado para iniciar sesiones de forma directa desde cualquier dispositivo, y sin ningún tipo de aviso de seguridad para el titular de la cuenta, sobre el inicio de sesiones en otros dispositivos.
 

Impacto

El impacto de este fallo implica que en la actualidad, cualquier usuario de Instagram podría tener su cuenta “intervenida” o “pinchada”, donde todas sus conversaciones privadas podrían estar siendo accedidas por terceros,  sin que el legítimo titular de la cuenta pueda enterarse NUNCA.

Ante un acceso indebido, en Instagram no existen notificaciones de seguridad que avisen al usuario sobre el acceso sospechoso o irregular, ni al correo electrónico ni en la propia aplicación. 

Adicionalmente, la falta de registros de sesiones iniciadas en Instagram, implica que hoy no es posible para el usuario saber cuantas sesiones iniciadas existen, ni mucho menos desde que dispositivos o dirección IP se han iniciado, aspecto de seguridad que cualquier usuario si podría saber en Facebook o Whatsapp (servicios del mismo grupo empresario).

 

Esta falta de registros de seguridad, implica como consecuencia que tampoco es posible que el legítimo usuario opte por cerrar todas sesiones abiertas en la propia cuenta, haciendo que la única opción para asegurarse de que nadie más se encuentra dentro de nuestra cuenta, sea forzando el cambio de contraseña (que cierra todas las sesiones).

Demostración del ataque de un celular Android Bloqueado

Explotando la Debilidad utilizando el proceso de recuperación de la cuenta a través del Número de Teléfono (Paso a Paso)​

  1. Para llevar adelante esta versión del ataque utilizando el proceso de recuperación de la cuenta a través del número de teléfono es necesario:

    1. Saber el número de teléfono asociado a la cuenta de Instagram de la víctima.

    2. Tener acceso físico al teléfono de la víctima (aunque se encuentre bloqueado)

    3. Que la víctima tenga la previsualización de SMS activada.

    4. Puede funcionar aunque tenga doble factor de autenticación habilitado, aunque deberemos realizar un paso extra.

  2. Desde la aplicación Instagram para iPhone, vamos a la pantalla principal de logueo de cuenta. Podemos acceder a dicha pantalla ya sea cerrando la sesión que tengamos iniciada o bien, seleccionando "agregar otra cuenta" (Instagram permite tener varias cuentas con sesión iniciadas de forma simultánea). En el caso que nunca hayamos iniciado alguna sesión, será la primer pantalla que nos mostrará, que es donde nos permite ingresar con usuario y contraseña.

  3. Seleccionar la opción ¿Olvidaste tu contraseña? y posteriormente seleccionar la opción "Teléfono". En este punto debemos ingresar el número de teléfono de la víctima, que es un dato que necesitamos saber previamente. Ingresado el número de teléfono, presionamos en "Enviar enlace de acceso". Si el número ingresado es correcto (en algunas ocasiones debemos agregar el 9 adelante, por ejemplo 93424XXXXXX), en la parte superior de la pantalla nos indicará que el SMS ha sido correctamente enviado.

  4. El proceso siguiente es capturar el contenido del SMS que llega al celular de la víctima. En los dispositivos iPhone, por defecto se muestra el contenido de los SMS en las notificaciones, sin necesidad de tener el celular desbloqueado. En algunos dispositivos Android también es posible ver el contenido de los SMS mediante las notificaciones. Es decir, que es condición para llevar adelante este ataque, es que la víctima no tenga deshabilitada la vista previa de los SMS

  5. Una vez obtenido el contenido del SMS, ejecutar en un navegador de internet del dispositivo celular del atacante el link acortado, que tendrá por ejemplo este formato "https://ig.me/1MePqJsHSXXXXXX" 

  6. Si lo realizamos desde un dispositivo móvil, con la aplicación "Instagram" instalada, nos preguntará si deseamos "Abrir en Instagram", colocamos "Abrir".

  7. Si todo ha salido correctamente, ya estamos adentro de la cuenta de Instagram de la víctima, sin que dicho acceso haya sido detectado como sospechoso ni se realice notificación o aviso alguno en la sesión de la víctima (que seguirá usando su cuenta normalmente).

  8. En el caso que la víctima tenga habilitado el doble factor de autenticación, deberemos realizar un paso extra, ya que al intentar el inicio de la sesión, enviará un nuevo SMS al celular de la víctima, indicando el código de seguridad extra (que también deberemos capturar de la misma forma indicada en el paso 3 e ingresarlo para finalizar el inicio de sesión exitoso).

Explotando la Debilidad utilizando el proceso de recuperación de la cuenta a través del Nombre de Usuario (Paso a Paso)

  1. Para llevar adelante esta versión del ataque utilizando el proceso de recuperación de la cuenta a través del nombre de usuario es necesario:

    1. Saber el nombre de usuario de la cuenta de Instagram de la víctima​.

    2. Tener acceso a la cuenta de correo electrónico asociada a la cuenta de la víctima.

    3. Si la víctima tiene doble factor de autenticación, no podrá ser exitoso a menos que se tenga acceso físico al teléfono de la víctima, y la misma tenga habilitada la previsualización de SMS.

  2. Desde la aplicación Instagram para iPhone, vamos a la pantalla principal de logueo de cuenta. Podemos acceder a dicha pantalla ya sea cerrando la sesión que tengamos iniciada o bien, seleccionando "agregar otra cuenta" (Instagram permite tener varias cuentas con sesión iniciadas de forma simultánea). En el caso que nunca hayamos iniciado alguna sesión, será la primer pantalla que nos mostrará, que es donde nos permite ingresar con usuario y contraseña.

  3. Seleccionar la opción ¿Olvidaste tu contraseña? y posteriormente seleccionar la opción "Nombre de usuario". En este punto debemos ingresar el nombre de usuario de la víctima, o bien, el correo electrónico asociado a la misma. Ingresado este dato presionamos en "Enviar enlace de acceso". Si el nombre de usuario ingresado es correcto, en la parte superior de la pantalla nos indicará que el enlace de recuperación ha sido correctamente enviado.

  4. A continuación debemos interceptar el correo electrónico que se enviará desde "security@mail.instagram.com", al mail asociado a la cuenta de la víctima. Dentro del mail, debemos copiarnos el link al cuál redirecciona el botón azul que dice "Entrar como nombredeusuario". En algunos dispositivos es posible ver el contenido de los correos electrónico mediante las notificaciones, incluso si el dispositivo se encuentra bloqueado.

  5. Una vez obtenido el enlace de redirección, ejecutar en un navegador de internet (de cualquier dispositivo a elección del atacante) el link  que tendrá esta forma "https://www.instagram.com/_n/emaillogindlink?uid=UID-FIJO&token=XXXXXX&auto_send=0". Si lo realizamos desde un dispositivo móvil, con la aplicación "Instagram" instalada, nos preguntará si deseamos "Abrir en Instagram", colocamos "Abrir" y se iniciará sesión de la cuenta víctima. 

  6. Si todo ha salido correctamente, ya estamos adentro de la cuenta de Instagram de la víctima, sin que dicho acceso haya sido detectado como sospechoso ni se realice notificación o aviso alguno en la sesión de la víctima (que seguirá usando su cuenta normalmente).

  7. En el caso que la víctima tenga habilitado el doble factor de autenticación, deberemos realizar un paso extra, ya que al intentar el inicio de la sesión, enviará un nuevo SMS al celular de la víctima, indicando el código de seguridad extra (que sólo podremos capturarlo si tenemos acceso físico al celular de la víctima, y además, la misma posee habilitada la vista previa de los contenidos del SMS).

Demostración completa de la debilidad

Detalle Técnico de los Tokens de seguridad enviados desde Instagram

Estructura del Token que llega vía SMS al solicitar la recuperación de cuenta por número de teléfono (realizado desde la App de Instagram en iPhone):

  • Link corto de ejemplo recibido por SMS: https://ig.me/1MePqJsHSbootf1

  • Link largo (desacortado): instagram://smslogin/?uid=UID-FIJO&token=XXXXXX&utm_medium=sms&utm_campaign=smslogin&utm_source=instagram

Estructura del Token que llega vía correo electrónico al solicitar la recuperación de cuenta por nombre de usuario (realizado desde la App de Instagram en iPhone):

Estructura del link que llega al solicitar la recuperación de cuenta (por número de teléfono o por nombre de usuario), al realizarlo desde la aplicación de Instagram para Android, o desde Instagram Web (www.instagram.com)

Como puede observarse, al solicitar la recuperación de la cuenta de Instagram desde la aplicación de Android o desde la Web, en vez de enviarse un token que permite el acceso directo a la cuenta, el sistema envía un link más adecuado desde el punto de vista de la seguridad, que obliga al usuario a renovar la contraseña para poder acceder a la cuenta.

A modo de aclaración, informamos que no se ha probado realizar un ataque de fuerza bruta sobre el token generado, algo que sería posible entendiendo que la longitud del token siempre es fija (6 caracteres), y es una combinación de letras mayúsculas, minúsculas y números. 

Estándares de desarrollo seguro implicados

Respecto del cumplimiento con estándares de desarrollo seguro, como OWASP, consideramos que este fallo afecta al menos 5 de los 10 tópicos del OWASP 2017 (https://www.owasp.org/images/5/5e/OWASP-Top-10-2017-es.pdf)

  • A2:2017-Pérdida de Autenticación

  • A3:2017-Exposición de Datos Sensibles

  • A5:2017-Pérdida de Control de Acceso

  • A6:2017-Configuración de Seguridad Incorrecta

  • A10:2017-Registro y Monitoreo Insuficientes

Recomendaciones de seguridad que debería realizar el equipo de Instagram

A nuestro criterio, los aspecto a mejorar por parte de Instagram para solucionar este problema de seguridad son:

  1. Que la recuperación de la cuenta de la cuenta desde la aplicación, funcione de la misma forma que cuando se realiza vía web (exigiendo el cambio de contraseña) o como funciona al intentarlo desde la aplicación de Instagram para Android.

  2. Que en el momento de iniciarse una nueva sesión en un dispositivo nuevo, se notifique al usuario de alguna forma (en la propia aplicación o enviando un mail).

  3. Que el usuario pueda acceder al listado de las sesiones iniciadas, y si lo desea pueda cerrar una o más sesiones.

  4. Que el token sea de un sólo uso siempre, se ha probado que el mismo no se vencía, y podía ser utilizado múltiples veces. (Actualmente ya no es posible realizar esta prueba, por lo tanto no esta documentado en el video explicativo) [SOLUCIONADO]

¿Qué opinó el equipo de seguridad de Instagram sobre esta debilidad?

Al realizar el reporte correspondiente a través de los canales habilitados por Facebook para informar sobre problemas de seguridad (Instagram pertenece a la empresa Facebook), hemos obtenido esta respuesta.

Marcelo,

The issue you've reported would not have qualified for a bounty. As part of exploiting the issue you describe, someone needs to take control of a user's mobile phone and get that phone in an unlocked state. This is a very high barrier to entry and seems unlikely to happen commonly, making this more of a theoretical attack. The protection in this case is to not allow someone to steal and unlock your phone. Choosing to blog about valid reports before we've had a chance to triage them would forfeit any possible bounties, please keep this in mind for any future reports. 

Gracias por comunicarse con Facebook,

Stephen
Security

¿Qué deben hacer los usuarios para estar seguros de que no se tiene la cuenta intervenida o pinchada por un tercero?

  1. Cambiar la contraseña es la única forma que tiene actualmente un usuario de Instagram para asegurarse que ningún extraño que haya accedido de forma ilegítima se encuentre dentro de su cuenta. El cambio de contraseña hace caducar todas las sesiones previamente iniciadas, cerrando de forma instantánea todas las sesiones.

  2. Habilitar doble factor de autenticación la cuenta de Instagram de esta forma cada vez que alguien quiera ingresar a nuestra cuenta, además de la contraseña (o el token como en el caso mencionado) también se le solicitará el código de 6 dígitos que llega por SMS al número de celular asociado a la cuenta.

  3. Deshabilitar la previsualización de los SMS en las notificaciones de los dispositivos móviles.

  4. Colocar contraseña a los dispositivos móviles.

Investigadores

A.I.A. Maximiliano Macedo: Analista en Informática Aplicada egresado de la Facultad de Ingeniería y Ciencias Hídricas de la Universidad Nacional del Litoral, especializado en Seguridad de la Información. Es Socio Fundador de AsegurarTe - Consultora en Seguridad de la Información, Creador y Desarrollador del Proyecto Botón de Pánico AsT”. Colaborador activo en la campaña de Conciencia Digital”. Colaborador regular en distintos medios de comunicación (Radios, TV, Diarios). Docente de las cátedras de Tecnología de la Información e Itinerarios con orientación en IT para los cursos de nivel primario y secundario. Co-fundador del Proyecto ODILA: Observatorio de Delitos Informáticos de Latinoamérica. Es docente y asesor en el Ministerio Público de la Acusación de la Provincia de Santa Fe, dictando capacitaciones a fiscales y miembros de la PDI en materia de Utilización de la tecnología al servicio de la investigación del delito. Expositor y conferencista en numerosas Jornadas, Congresos y Eventos relacionados al Derecho y la Seguridad de la Información, nacionales e internacionales.

Mail de contacto: mmacedo@AsegurarTe.com.ar

A.I.A. Maximiliano Macedo
 
  • Black LinkedIn Icon
  • Black Twitter Icon
  • Black Facebook Icon
  • Black Blogger Icon
Abog. Marcelo Temperini
  • Black LinkedIn Icon
  • Black Twitter Icon
  • Black Facebook Icon
  • Black Blogger Icon

Abog. Marcelo Temperini: Abogado especialista en Derecho Informático. Doctorando dedicado a la investigación de Delitos Informáticos y Cibercrimen en el Centro de Investigación de la Facultad de Ciencias Jurídicas y Sociales de la Universidad Nacional del Litoral. Socio Fundador de AsegurarTe - Consultora en Seguridad de la Información. Miembro de la Comisión Directiva de la Asociación de Derecho Informático de Argentina (ADIAr). Prosecretario en la Comisión de Derecho Informático y Nuevas Tecnologías del Colegio Público de Abogados de Santa Fe, 1ra. Circunscripción Judicial. Es Técnico Analista de Seguridad y Vulnerabilidad de Redes de Información (ESR Cisco). Ha sido Co-Director de la Fundación ElDerechoInformático.com, y de la Revista Digital ElDerechoInformático.com. Co-fundador del Proyecto ODILA: Observatorio de Delitos Informáticos de Latinoamérica. Es docente y asesor en el Ministerio Público de la Acusación de la Provincia de Santa Fe, dictando capacitaciones a fiscales y miembros de la PDI en materia de Utilización de la tecnología al servicio de la investigación del delito. Es investigador y conferencista invitado en congresos y jornadas nacionales e internacionales.

Mail de contacto: mtemperini@AsegurarTe.com.ar

Repercusión en los medios​