01 febrero 2010

Reconociendo el navegador: ¿Fin de las cookies?

Al ser HTTP un protocolo sin estado, las aplicaciones y servidores web necesitan identificar a los usuarios, así como las acciones que llevan hechas (por ejemplo, el saber el contenido del típico carrito de la compra de una web de comercio electrónico), mediante la utilización de Cookies. Éstas no dejan de ser más que una cadena de caracteres más o menos larga, que se intenta que sea de generación aleatoria y única para cada usuario. De esta manera, cuando entramos en una página en la que nos autenticamos anteriormente por ejemplo, veremos como las siguientes veces (si no hemos hecho un Logoff), el servidor "mágicamente" reconocerá nuestro usuario como aún "loggeado".

Este tipo de mecanismo tiene sus fallos y si logramos interceptar una cookie válida de otro usuario (aprovechando un XSS, robándole el PC, sniffando el tráfico web , etc,....) podremos suplantar su identidad.

Bruce Schneier
, publicó una entrada en su blog sobre un mecanismo para identificar un navegador determinado de forma única. En Panopticlick, detectando una serie de parámetros de nuestro navegador (User Agent, Cabeceras HTTP_ACCEPT, Detalles de Plugins de navegador, Time Zone, Configuración de pantalla y colores, Fuentes de Sistema, admisión de cookies, test de supercookies limitadas), es capaz de decir si nuestro sistema puede ser identificado sin usar cookies por un servidor web.

Después de hacer diversas pruebas, no termino de creérmelo del todo. Es decir, accedo a hacer el test de la página y me dice que "El fingerprint de tu navegador parece ser único entre los 402.693 que ha escaneado hasta ahora". Repito la prueba sin reiniciar el navegador y me dice que sigue siendo único entre los 404.185 que ha probado hasta ahora?????

A ver, por partes. ¿Me dices que en la segunda prueba mi navegador sigue siendo único (yo estoy seguro que no he cambiado ningún parámetro desde hace un minuto) y hace unos milisegundos se ha hecho una prueba con el mismo navegador? Pero no perdáis de vista el número de navegadores probados: En menos de un minuto ha pasado de 402.693 a 404.185. Tienen más visitas que Google ¿o cómo hacen las cuentas? Repito reiniciando el navegador y no haciendo ningún cambio y sigue diciendo que sigue siendo único.

Se me ocurren varias explicaciones:
  • o balancean entre varias máquinas para hacer los tests y no utilizan un repositorio compartido para almacenar el fingerprint de los navegadores que analizan,
  • o el algoritmo que utilizan no está todo lo fino que debería,
  • o es un FAIL total.
La idea en sí es bastante buena, identificar un PC (con la configuración del navegador) sin usar cookies. Evitamos que un robo de cookie pueda tener algún impacto, pero ¿cuánto costaría falsificar lo demás? Es decir: a un potencial atacante, ¿qué le costaría engañar a un usuario por ingeniería social a visitar una página que haga los mismos tests que la gente de Panopticlick, y posteriormente inyectar a mano los datos de este navegador al visitar una página que sepamos que el usuario engañado tiene cuenta? O directamente si le robamos físicamente el PC a ese individuo o se lo comprometemos con acceso VNC o Terminal Server, lograríamos lo mismo.

Ojalá entre nuestros lectores encontremos a algún afortunado que no "fingerprintee" como única su configuración de navegador entre las "taitantasmil" analizadas.

20 comments :

akae dijo...

Ese test parecería algo más serio, y fiable si guardase el último login correspondiente a tu "marca de navegador" y te dijese: Ey, tu id es único entre X, y pasaste por aquí el día aaaammdd. Vamos, que realmente fuese capaz de identificarte y recordarte como hacen las cookies, aunque parece que lo único que hacen por ahora es recopilar ids distintos para probar su teoría.

Daniel Ríos dijo...

Estoy de acuerdo con akae.
La idea es buena pero, por ahora, parece únicamente un intento de recopilar información.

Seifreed dijo...

Hola

Aunque existen medidas para detectar el navegador aún existen muchas otras para falsearlo.

Un saludo

Antonio Sánchez dijo...

La primera vez que he entrado:

"Within our dataset of several hundred thousand visitors, only one in 14,953 browsers have the same fingerprint as yours."

así que tengo un gemelo por ahí fuera! :p

Lorenzo Martínez dijo...

@AKAE, @Daniel -> Está claro que la idea es buena, pero en cuanto instalas software que añade fuentes al sistema o simplemente una actualización del navegador ya haría que fueses "una identidad" nueva, invalidando tus accesos sin cookies anteriores... Vamos que le falta madurar al tema.

@Seinfreed -> a eso me refería con que si averiguo tus parámetros de navegador con ingeniería inversa, puedo replicarlos o incluso sin saberlo, probar a cambiar algo, y ver quién soy ahora en alguna aplicación web muy extendida, por ejemplo: gmail...

@Kamsky -> primera noticia que tengo de una colisión y no indicar que es único entre XYZmil...

Novlucker dijo...

Coincide, coincide!
A no, perdón, coincide uno en más de 200.000 si solo si entro con el noscript activado, con lo cual le quedan 3 cosas para comparar (User-agent, HTTP_ACCEPT Headers y cookies)
De lo contrario mi navegador es único aún cuando ingrese 7 veces (para la suerte XD)
No esta usando de cobayas! XD

Saludos

Maktutote dijo...

Yo creo que de cara al Phising podría ser útil, ya que en caso de perfeccionarse el algoritmo, el atacante debería modificar el fingerprinting del navegador atacado.

Por supuesto que hecha la ley hecha la trampa. Si no se tomasen unas medidas estrictas de cada a poder modificarlo la protección quedaría en nada.

xneo72 dijo...

No creo que este método (al menos de momento) pueda llegar a suplantar a las galletitas de toda la vida, mas bien pienso que se trata de un proyecto con buenas miras e ideas que como bien se ha dicho en el articulo puede que su algoritmo no ande muy fino todavia. En fin creo que todavia utilizaremos los Cookies por mucho tiempo todavia, saludos.

javichu dijo...

Lo que no entiendo es por qué no se utiliza más el SSL ID de la sesión SSL negociada.

Es cierto que se limita a conexiones SSL, pero no se utiliza SSL para la mayoría de los carritos, etc. ?

Aladaris dijo...

Este sistema se cae por su propio peso.
¿Y si cambio la resolución de pantalla?
¿Y si instalo una version nueva de JVM?
¿Y si instalo un plugin nuevo?
...
(A mi también me sale que soy único...)

Anónimo dijo...

FAIL? Pues tiene toda la pinta...

Y como bien habéis dicho, estan fácil (o difícil) aprovechar un XSS para robar las cookies como hacer que la víctima visite un enlace donde cojamos todos sus parámetros.

No no, este sistema no es bueno. El bueno de Bruce parece que no ah acertado.

Newlog

Anónimo dijo...

"Currently, we estimate that your browser has a fingerprint that conveys 18 bits of identifying information"

De momento esa es la información que me dan y realmente coincido con ellos es posible que mi navegador sea "único" entre 2^18 navegadores ( aka. 262144 navegadores ) pero evidentemente ese es un espacio de colisión muy pobre.

Una web importante, tiene muchisimos más de 262144 visitante y muchos más de 262144 usuarios. Si la información significativa proporcionada por mi navegador, digamos se acercase a los 2^32 bits, podríamos decir que mi navegador podría ser relativamente identificado de forma unívoca, o dicho de otra forma, podría ser único en el mundo.

Con la "precisión actual" habría unos 4000 navegadores similares, aceptando que cada usuario tiene un único navegador.

Anónimo dijo...

Con Opera no funciona el test.

Anónimo dijo...

Esto estaría bien como una comprobación añadida a la cookie.

Unknown dijo...

Este tipo de cosa se viene haciendo en sistemas antifraude online desde hace tiempo, pero no se toma como factor unívoco para identificar un usuario/dispositivo, sinot que hay que añadirle unos cuantos parámetros más (IP, proveedor, geolocalización) para que resulte efectivo, y aún así, no te puede fiar del todo.

bgood dijo...

Este tipo de cosa se viene haciendo en sistemas antifraude online desde hace tiempo, pero no se toma como factor unívoco para identificar un usuario/dispositivo, sinot que hay que añadirle unos cuantos parámetros más (IP, proveedor, geolocalización) para que resulte efectivo, y aún así, no te puede fiar del todo.

Anonymous dijo...

Esto estaría bien como una comprobación añadida a la cookie.

Maktutote dijo...

Yo creo que de cara al Phising podría ser útil, ya que en caso de perfeccionarse el algoritmo, el atacante debería modificar el fingerprinting del navegador atacado.

Por supuesto que hecha la ley hecha la trampa. Si no se tomasen unas medidas estrictas de cada a poder modificarlo la protección quedaría en nada.

akae dijo...

Ese test parecería algo más serio, y fiable si guardase el último login correspondiente a tu "marca de navegador" y te dijese: Ey, tu id es único entre X, y pasaste por aquí el día aaaammdd. Vamos, que realmente fuese capaz de identificarte y recordarte como hacen las cookies, aunque parece que lo único que hacen por ahora es recopilar ids distintos para probar su teoría.

Daniel Rios dijo...

Estoy de acuerdo con akae.
La idea es buena pero, por ahora, parece únicamente un intento de recopilar información.