En el transcurso del año 2010 han visto la luz nuevas técnicas de ataque a aplicaciones Web. Entre todas ellas vamos a hablar del API javascript “Evercookie” creado por Samy Kamkar. Lo que Samy intenta demostrar con la creación de este API es la posibilidad de hacer que las cookies sean persistentes pese a que un usuario intente borrarlas. Para hacerlo se utilizan diferentes mecanismos que permiten almacenar la información en el lado del cliente, como HTML5 local storage, HTTP Etags, LSO Flash cookies, etcétera; todas los mecanismos y sus respectivos enlaces los podéis encontrar en la página de Evercookie.
Una vez nos descargamos el API, este pone a nuestra disposición un ejemplo de página que lo utiliza. En esta entrada vamos a comprobar cómo evercookie hace persistente las cookies usando la página de ejemplo.
Antes del acceso vemos en nuestro navegador en este caso Firefox 3 que no disponemos de ninguna cookie:

Acto seguido accedemos a la página de ejemplo:
Una vez dentro se crea una cookie de nombre uid. Esta cookie es persistente o eso dice el autor ya que ha sido generada con Evercookie. Para este caso vemos como ha fijado el uid=620.


Por el momento nada extraordinario y el comportamiento es el habitual; o eso creemos, ¿no? Ahora vamos a eliminar toda la información mediante los mecanismos que ofrece Firefox (Clear Private Data Now):

Acto seguido accedemos a las cookies como hemos hecho antes y vemos que está todo borrado, no hemos dejado ni huella…. ¿seguro?. Cuando volvemos a acceder a la página, vemos como es capaz de recuperar el uid -en nuestro ejemplo el 620- que había generado la primera vez que accedimos; por lo que siempre que accedamos a la página web desde nuestro equipo ésta sabrá que somos el mismo usuario; es más, si dentro de nuestro navegador disponemos de varios perfiles, es capaz de recuperar la cookie, dado que por ejemplo la “cookie flash” está contenida en la carpeta Macromedia que queda fuera del alcance del perfil.
Una página Web que utilice estos mecanismos podría construirse un perfil asociado a un identificador de manera que podría proponernos ofertas, artículos, etc. que se ajusten a nuestras necesidades sin realmente habernos identificado en ningún lugar. Aparentemente estaríamos navegando de manera anónima pero no sería así, ya que la aplicación puede crear un perfil nuestro gracias a esta técnica.
Otro de los aspectos interesantes de esta técnica es lo que se denomina como “cross-browser”, donde la cookie es persistente y compartida por los diferentes navegadores. Se ha podido comprobar durante las pruebas realizadas que al crear una cookie persistente en Mozilla Firefox con evercookie y acceder después con Google Chrome, éste visualiza la cookie que se había creado en Firefox.
Un gran API, una gran técnica. Por tanto es normal que haya sigo la segunda más votada en el “Top Ten Web Hacking Techniques of 2010” del blog de Jeremiah Grossman.






La solución a este problema puede encontrarse almacenando estas claves en un dispositivo que siempre llevemos con nosotros y que permita almacenar las contraseñas de manera segura, lo que implica que si alguien que no somos nosotros accede al dispositivo no pueda disponer de ellas. Entre estos dispositivos podemos encontrar Blackberrys o PDAs, que disponen de software con esta funcionalidad, entre otros. Aún así no todos los usuarios disponemos de este tipo de dispositivos, y plantearse una inversión en un “trasto” así para únicamente almacenar las contraseñas no parece del todo coherente. Entonces cabe plantearse la siguiente pregunta: ¿existe algún dispositivo que todo usuario lleve siempre consigo y en el cual almacenar las claves pueda ser rápido, cómodo y seguro? Esta pregunta hoy en día tiene respuesta: el móvil.
Por poner un ejemplo de una situación en la que no es suficiente con que haya un cartel que prohibe una acción, ¿cuánta gente no respeta la señal de prohibición en autopistas de circular como máximo a 120 km/h? A causa de ello se han tomado una serie de medidas (multas, sanciones penales, etc.) para concienciar al conductor de que debe respetar las normas de circulación, dado que las consecuencias en este caso son fatales. Todas estas situaciones, que reflejan cómo es el comportamiento natural de nuestra sociedad, pueden ser trasladadas al campo de la informática: en la gran mayoría de ocasiones no es suficiente únicamente con advertir del peligro al usuario sino que es necesario tomar las medidas pertinentes. Por lo tanto, en última instancia uno se debe plantear, como en el caso del cartel del metro, si es suficiente con la presencia de éste ó por el contrario deben establecerse medidas para que el cumplimiento sea efectivo.