Ron Masas, investigador de seguridad de imperva, ha revelado una vulnerabilidad que ha sido parcheada en la versión web de Facebook Messenger. Esta brecha de seguridad habría permitido que cualquier sitio web expusiera con quién se han estado enviando mensajes los usuarios.
En una publicación de blog ha mostrado que los “Me gusta” de Facebook, el historial de ubicación y otros metadatos, pudieron haber sido extraídos de las cuentas de Facebook usando un ataque de canal lateral que denominó como “Fuga de marcos entre sitios” (CSFL, por su abreviatura).
Para formalizar el ataque CSFL, el investigador ha informado las últimas mejoras y ha revisado la brecha de seguridad de Facebook, definiendo en principio que el ataque de canal lateral es realizado en el navegador web de un usuario final y explota las propiedades de origen cruzado de los elementos iframe para determinar el estado de una aplicación vulnerable.
“¿Qué es un estado? Tome una página de resultados de búsqueda como ejemplo. En términos de estado, la información más útil que el atacante podría descubrir sería si una consulta dada arrojó resultados. Si un atacante pudiera determinar el estado de la página de resultados de búsqueda, probablemente podría inferir otra información sobre el usuario actualmente registrado”.
Identificando la brecha de seguridad
Para identificar la amenaza, Masas sintió la necesidad de entender cómo funciona Facebook Messenger, al igual que sucede con las aplicaciones que usa regularmente. Y es que, como muchas personas, usa esta plataforma para comunicarse con sus amigos, familiares y empresas.
Fue así como comenzó a hurgar en la aplicación web de Facebook Messenger y notó que los elementos iframe dominaban la interfaz de usuario. El cuadro de chat, así como la lista de contactos, según él se representaron en iframes y eso abre la posibilidad de un ataque CSFL.
“Al igual que en el error anterior, confié en la capacidad de contar el número de iframes en una página de origen cruzado ubicada en una página de fondo que podría ser controlada por un atacante. Sin embargo, en Messenger, no había forma de crear solicitudes de búsqueda sin la interacción del usuario”.
Además de eso, a diferencia del error anterior, el recuento de iframe siempre llegó a tres una vez que la página estaba completamente cargada, eliminando la posibilidad de detectar un “estado” utilizando el número de elementos de iframe.
Su siguiente paso fue comenzar a cavar en esos tres iframes, para entender cómo, por qué y cuándo están cargados. Ha revelado que decidió registrar los datos del recuento de iframe a lo largo del tiempo para la mayor cantidad de puntos finales que pudo encontrar, con el objetivo de descubrir estados interesantes y detectables.
“Después de algunas pruebas, comencé a buscar en el punto final de la conversación. Grabé datos de ‘estado completo’, es decir, páginas que cargarían mi conversación con un usuario con el que he estado en contacto, y algunos datos de ‘estado vacío’, mostrando conversaciones con usuarios con los que nunca he contactado”.
Ron Masas ha dicho que, después de ver cinco ejemplos, ya estaba claro que estaba en algo porque los gráficos de “estado vacío” producen un patrón interesante de manera consistente, como lo ha mostrado en varios videos de prueba.
Igualmente ha explicado que el recuento de iframe alcanzaría tres y luego se reduciría repentinamente durante unos pocos milisegundos, cuando el usuario actual no ha estado en contacto con un usuario específico.
Esto, a su juicio, permite a un atacante distinguir de manera confiable entre los estados lleno y vacío. También podría permitirle verificar de forma remota si el usuario actual ha conversado con una persona o empresa específica, lo que violaría la privacidad de esos usuarios.
“Al registrar los datos de recuento de cuadros a lo largo del tiempo, encontré dos nuevas formas de filtrar información de origen cruzado. Al observar patrones en lugar de un número estático, pude filtrar el ‘estado’ de una ventana de origen cruzado, ya sea analizando el patrón sin procesar o cronometrando ciertos ‘hitos’ del patrón”.
Actuación de la amenaza
El investigador ha indicado que se debe engañar a un usuario de Messenger con la intención de que abra un enlace al sitio malicioso, para que así funcione el ataque CSFL. A continuación, necesita que el usuario haga clic en cualquier parte de la página y se abrirá una nueva pestaña, manteniendo la anterior abierta en segundo plano.
“La nueva pestaña comenzaría a reproducir un video, manteniendo al usuario ocupado mientras cargamos el punto final de la conversación del usuario en la pestaña de fondo”.
Mientras Messenger se carga en segundo plano, se registra el recuento de iframe, lo que permite detectar si el usuario actual ha estado en contacto con usuarios específicos o con los robots de Facebook Messenger.
Se debe mencionar que Facebook ha mitigado la brecha de seguridad creando elementos iframe al azar, lo que inicialmente rompió la prueba de concepto de Ron Masas, una vez informada la vulnerabilidad a la compañía bajo su programa de divulgación responsable.
“Sin embargo, después de algunos trabajos, logré adaptar mi algoritmo y distinguir entre los dos estados. Compartí mi hallazgo con Facebook, que decidió eliminar por completo todos los marcos de la interfaz de usuario de Messenger”.
De acuerdo al investigador, el ataque de canal lateral o ataque CSFL basado en el navegador sigue siendo un tema que se pasa por alto; mientras que grandes jugadores como Facebook y Google se están poniendo al día, la mayoría de la industria aún no lo sabe.