258 meneos
2296 clics
El CSS es tan potente que puede "desanonimizar" a usuarios de Facebook [ENG]
Algunas de las recientes adiciones al estándar web Cascading Style Sheets (CSS) son tan poderosas que un investigador de seguridad ha abusado de ellas para desanonimizar a los visitantes de un sitio de demostración y revelar sus nombres de usuario de Facebook, avatares, y si les gustaba una página web de Facebook en particular. La información filtrada a través de este ataque podría ayudar a algunos anunciantes a vincular direcciones IP o perfiles publicitarios con personas de la vida real, lo que supone una grave amenaza para la privacidad.
|
comentarios cerrados
Hay un ejemplo gigante en GIF, se ve que no os habéid dignado a abrir la noticia siquiera.
Por lo visto ya está arreglado (Firefox 60 y Chrome 63)
Ni CSS ni leches.
De todos modos el título de la notícia es una mierda. El ataque en realidad no es contra CSS: es un "timing attack" contra el renderizado de un efecto visual. Para ello se aprovecha de:
1) CSS mix-blend-mode, una propiedad que permite elegir diferentes modos de "fusión" de objetos superpuestos.
2) Javascript, con el que se prepara y ejecuta el ataque (sin javascript este ataque no funciona). Insisto: en realidad CSS sin javascript no tendría este problema.
3) La mala implementación del efecto en Chrome y Firefox, que en vez de usar operaciones de tiempo constante para calcular el resultado usan una implementación que tarda más o menos según el caso (y por tanto permite realizar "timing attacks" contra ella). Safari no está afectado.
La vulnerabilidad ya está arreglada, y consiste "simplemente" en realizar un número de cálculos constante (haciendo que la aplicación del efecto siempre tarde lo mismo independientemente del blend mode y por tanto evitando timing attacks como este).
Tú eres un "constructor". Te dedicas a tratar de montar el mejor sistema posible con los recursos de los que dispones. Tu trabajo consiste en ver el lado "positivo" de esos recursos y aprovecharlos si sirven para cumplir tus objetivos. En este caso, si hubieras visto que existía el CSS blending mode y te hubiera tocado usarlo en algun proyecto que lo requiera, lo que te habría preocupado es si es suficientemente rápido como para el uso que quieres darle. Que a veces sea más rápido y otras no te da absolutamente igual, siempre que sea lo suficientemente rápido en todos tus casos de uso.
La persona que ha descubierto esto es, me atrevería a aventurar, un a persona que se dedica a la seguridad. Siguiendo con la analogía, ellos son "destructores". Su trabajo es justamente el opuesto al tuyo: tratar de sacar todos los posibles modos de fallo de los sistemas que hay montados. Eso les da una visión muy distinta. Cuando una de estas personas observa que hay una diferencia significativa de velocidad de procesado según la entrada, ya está pensando en qué información puede extraer con eso. Lo que ven es un potencial "timing attack", no una herramienta con la que construir funcionalidad.
Por ejemplo, fíjate que hubo un tiempo en el que una página podía usar el callback "onload" de un iframe para saber cuándo había terminado de cargar la página que contiene. En esta pregunta de stack overflow [1] hay mucha confusión porque a algunos les funciona y a otros no. El motivo es sencillo: alguien se dió cuenta de que con eso la página contenedora puede descubrir información que no debería y a partir de ciertas versiones los navegadores ya no disparan este callback. Por ejemplo, una página podría saber si estás identificado como usuario de otra página o no dado que el contenido en un caso y otro es diferente y por tanto el tiempo de carga también, así que analizando ese tiempo de carga podrías descubrir si el usuario está identificado en esa web o no.
No es tan fácil comprender que a la gente que cobra por investigar y descubrir este tipo de problemas se les pueda ocurrir algo como lo que se presenta en esta noticia. Al fin y al cabo es una variación creativa del mismo problema que el del iframe.onload.
[1] stackoverflow.com/questions/29233928/iframe-onload-javascript-event
Me gusta el cuño que aplicas de "constructores" y "destructores", nunca lo había visto así y tiene mucho sentido. Ahora entiendo muchas cosas y parece mentira que no conociera antes estos conceptos.
Voy a buscar más información sobre esto, me ha cambiado la perspectiva y me ha picado la curiosidad.