Hace 5 años | Por ccguy a bleepingcomputer.com
Publicado hace 5 años por ccguy a bleepingcomputer.com

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

U

#7 Sí, pero de Facebook pueden sacar datos como nombre y apellidos (si los tienes en tu perfil, claro). De otros lados los datos que pueden sacar son más limitados, salvo sitios sensibles como bancos.

leporcine

#11 pero el nombre y apellidos son datos públicos, ¿no?, quiero decir que con la api de facebook ya consigues esos datos...

U

#29 ¿Cualquier web puede obtener esos datos sin tu consentimiento?

leporcine

#35 hace mucho que no hago nada para facebook, pero me suena que así es.

D

#7 No no es un ejemplo. Sin estar logeado en ningún lado este ataque no se puede llevar a cabo. Necesitas estar previamente logeado en Facebook o similar y luego ir a estos sitios.

heffeque

#6 Precisamente lo que se indica en múltiples sitios es que Facebook puede saber quién eres tú aun sin que tengas cuenta en Facebook (shadow profiles).

Wayfarer

#3 Al final la solución va a ser volver a navegar con Internet Explorer 6.

c

#8 La solución es que el servidor no envíe los datos que no quiere que sean visibles.
Ni CSS ni leches.

PacoJones

#8 Has hecho infeliz a mi emoticono, ya no sonrie

katinka_aäå

#3 Es normal que pasen estas cosas. Colocas un con position: relative, se coloca bien el footer pero de rebote se te desmonta la página entera de maneras que no creías posibles y además averiguas datos del usuario. Magia.

D

#10 ??? Que dices?

S

#10 Odio CSS con toda mi alma.

D

#17 CSS es lo más

Imag0

#17 un niño de 5 años lo manejaria con una sola mano. Sólo hay que seguir las reglas.

PacoJones

#17 Yo amo CSS, si lo odias ahora es que no viviste la época de IE6 y su mierda implementación y cuando todavía no existía CSS3, aquello si que era para valientes.

a

#3 Sí, con CSS se pueden hacer cosas realmente sorprendentes.

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).

PacoJones

#32 ¿Y no te sorprende que alguien descubra algo así? Llevo más de diez años trabajando en esto y me siguen asombrando que salgan cosas así, sobre todo porque no sabría ni por donde empezar a mirar.

a

#37 Bueno, me sorprende y no me sorprende tanto. Es una cuestión de mentalidad.

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] https://stackoverflow.com/questions/29233928/iframe-onload-javascript-event

PacoJones

#42 Gracias, pensé que Meneame estaba ya perdido y me encuentro con tu gran comentario.

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.

D

#3 sobre todo

PacoJones

#34 Te diría que ha sido el corrector pero mentiría como un bellaco roll apuntado queda

NapalMe

Hay que ser muy tonto pasa "anonimizar" algo tapandolo con objetos HTML o propiedades CSS...

NapalMe

#20 Un buen ejemplo.

KimDeal

#18 estaba pensando eso mismo pero me decía, no se puede ser tan cafre, o algo se me escapa, hace tiempo que no programo webs

D

#18 Dicha la broma me parece que no se han leído la noticia. No robas información que está oculta en html o css. Sino que con css en una web pueden sacarte tu nombre de usuario (o el de cualquiera) en facebook, tu avatar, el estatus...
Hay un ejemplo gigante en GIF, se ve que no os habéid dignado a abrir la noticia siquiera.

NapalMe

#25 Cualquier cosa que pueda sacar, debe antes estar allí.

D

#26 Desde luego, y que propones internet sin información? Te lo explico mejor ya que no quieres abrir la noticia. No roba ninguna información oculta, lo que hace es identificar al usuario a través de css, de ahí el "desanonimizar" recopilando datos que no están ocultos como el nombre, el avatar o el estado. Que propones un facebook sin nada de esto? wall

d

El exploit esta roto roto me deja sin ram así lo lanzo con 1400 con 700 me pide subirlo.

D

es el año de CSS en frontend

D

#9 y los 10 años anteriores también.

D

#13 Es un chiste, idiota

iolerei_iu_iu

#0 identificar igual mejor

ccguy

#4 Pues sí, gracias. No se me ha ocurrido. ¿algún@admin me lo edita?

Lordkrudell

Yo me desanonimo, tu te desanonimas, el se desanomiza, nosotros nos desanimamonio...

D

Para quien no haya entrado en la noticia:

Por lo visto ya está arreglado (Firefox 60 y Chrome 63)

D

Supongo que esto es más bien es pura y llana investigación sobre seguridad informática, en la práctica creo que deja mucho que desear.

D

system failure

D

Eso sólo será con CSS3.

elpalleiro

Interesante artículo, lástima el "desanonimizar" del título.

D

#1 con lo fácil que es "identificar"