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.