14 agosto 2010

Cuando 'Privado' significa 'casi privado'

Desde hace algún tiempo los navegadores han incorporado un método de navegación al que han denominado privado en el que se supone que toda actividad que se realice desde ese modo, debe quedar entre tu y tu conciencia.

Como viene siendo habitual cualquier axioma que implique 'certeza absoluta' suele permanecer así hasta que alguien lo mira con cierto detenimiento.

En el caso de los Navegadores y su modo privado, así ha sido. Los cuatro grandes de la navegación: Internet Explorer, Firefox, Chrome y Safari implementan el modo privado de una forma inconsistente y que permite obtener mas datos de los debidos.
El estudio disponible aquí (y bastante denso, muy de corte universitario) se puede resumir en lo siguiente:

Un navegador debería tener como 'metas' los siguientes puntos:

  • Al navegar de forma privada y luego / antes de forma normal en un site web, este no debería poder distinguir entre  uno y otro visitante (Consideraciones de IP aparte)
  • Un servidor web no debería poder distinguir al mismo usuario si este se conecta al servidor web empleando dos sesiones privadas diferentes. (Es decir, se conecta en modo privado, cierra, abre el navegador en modo privado y vuelve a conectar)
  • Un servidor web no debería poder distinguir si un usuario está usando el modo privado durante la navegación
Como se puede ver en el estudio publicado, esas tres máximas de la privacidad son subvertidas de diferentes formas.
Ejemplos de 'leaks' que no deberían estar ahí:
  • Algunos navegadores almacenan tanto en el lado 'publico' como 'privado' la actividad SSL basada en certificados digitales, es decir, aquellos que se han generado durante la navegación
  • Igualmente, algunos navegadores almacenan en modo publico / privado certificados 'self signed' (no validados por CAs de confianza) permitiendo acceder a ellos en ambos modos
  • Ficheros descargados durante la navegación privada
  • Conexiones Netbios: Explorer permite y entiende links tipo \\unamaquina\unrecurso, si un usuario en modo privado realiza una petición de ese tipo, estará enviando junto al intento de conexión mucha información.
  • Ciertas extensiones como 'No Script' que almacenan y manejan listas blancas / negras de hosts, no tienen en consideración el modo privado, por lo que tratan y almacenan los datos de forma indistinta en lado privado / lado normal
Como nota curiosa, los investigadores de la universidad de Stanford diseñaron un tipo de ataque basado en 'CSS History Hacking' (ver nuestra maquina de Zoltar) por el cual eran capaces de averiguar si alguien estaba usando el modo privado / no privado durante la navegación. Contrataron dos campañas de anuncios, una de ellas para un sitio 'de mayores' y otra en una tienda de regalos. Empleando su sistema de tracking para usuarios con navegación privada, llegaron a la conclusión de que el porcentaje de uso en un sitio 'porno' era bastante superior que en el de una tienda normal.

5 comments :

svoboda dijo...

La verdad es que como se comenta (aún no he leído el estudio), el modo privado en la mayoría de ocasiones deja mucho que desear, aún estamos muy lejos de un verdadero modo privado.
La única utilidad que se me ocurre así de repente, es que no guarda registro en el historial de las páginas visitadas, ni en la típica página de top sites. Cuantas presentaciones se han hecho famosas no por su contenido, sino por el contenido del historial del navegador con las que se hacían.

Anónimo dijo...

No tengo claro si Yago, al igual que los autores del estudio, ha comprendido el objetivo del "modo privado".

Siendo un artículo tan académico, los autores se sacan de la manga los dos objetivos del modo privado: proteger frente "local attacker" y "web attacker" (algo que la industria llama realmente "browser fingerprinting"). Me gustaría ver referencias a algún articulo/blog/etc. de los fabricantes de los navegadores que confirme esos objetivos. Así pues, los autores parten de una premisa errónea.

El "modo privado" pretende no dejar rastro en el navegador de las webs visitadas. Ni la página sobre el modo privado de IE, ni la página de ayuda sobre el modo incognito de Google Chrome (que, por cierto, está incluida en las referencias del artículo), ni la página sobre el modo privado de Firefox ni la página sobre el modo privado de Safari especifican nada sobre "web attacker" o "browser fingerprinting". La página de Firefox explica claramente: Note: Private Browsing prevents information from being recorded on your computer. It does not make you anonymous on the Internet.

Evitar browser fingerprinting es por supuesto algo mucho más complicado, por diversos motivos. Esta entrada en el blog de Zalewski sobre cookies y privacidad explica bastante, al igual que en su libro Silence on the wire. También es interesante este artículo de la EFF sobre browser fingerprinting.

El único argumento correcto que incluye el artículo es que las extensiones pueden hacer que el modo privado no proteja siquiera contra los "local attackers", algo que no es nada nuevo (las extensiones pueden facilitar también ataques XSS, etc.) ni fácil de arreglar, por otra parte.

Yago Jesus dijo...

@Anonimo Muy interesante lo que comentas. Solo unas pequeñas salvedades, para empezar el concepto 'Privado' no está suficientemente bien definido / concretado, citando una de las paginas que referencias se puede leer 'For times when you want to browse in stealth mode' Entrar en que significa 'stealth', es entrar en modo subjetivo. No obstante, aun dejando a tu criterio si privado abarca o no el modo 'web', no obvies que el estudio también abarca el modo 'local', por ejemplo el tema de los certificados digitales que son creados / aceptados en sesiones privadas y permanecen en el equipo afecta al modo local ¿No? Y como bien dices el tema de las extensiones es igualmente 'modo local'. Adicionalmente en el estudio se menciona una suite de herramientas (creo que aun no publicadas) para auditar trazas en modo LOCAL de Firefox. En definitiva, dale otro vistazo al papper con mas calma y verás que aplica en modo web y modo local.

Anónimo dijo...

Tampoco me he leído el artículo de arriba a abajo (me parece bastante aburrido porque comienza con la falsa premisa de proteger en "modo web"), la verdad.

Lo único interesante del artículo, dado que considero que el "modo web" está fuera de discusión, es la tabla 2.

De ella, es interesante comentar que:
-añadir marcadores es una acción iniciada por el usuario (y tiene un un significado evidente de persistencia)
-descargar archivos también requiere persistencia, obviamente
-generar certificados de clientes y "protocol handlers" require confirmación del usuario y también implica persistencia

La única parte que considero interesante es la de excepciones para los certificados de servidor, que me parece debida a las bibliotecas de certificados de Windows y no a los navegadores en sí, puesto que afecta sólo a IE y Chrome (Firefox implementa su propio repositorio de certificados) y no afecta a Chrome en Linux (comprobado).

Respecto a las extensiones, los mismos autores explican que es muy difícil solucionar ese problema, y la solución que ellos proponen es de risa (una especie de lista blanca implementada mediante una extensión, que además requiere reiniciar el navegador en cada cambio de modo). Para ello, prefiero tener un perfil distinto (algo sencillo en Firefox) sin extensiones, para navegación "privada".

En definitiva... creo que donde ellos ven un "bug" yo veo una "feature", y más que problemas de seguridad veo una interpretación errónea de experiencia de usuario: me parece que los desarrolladores de los navegadores han escogido un modelo bastante válido para el modo de navegación privada que mantiene el sistema usable, pero los autores no lo entienden así. Cuestión de gustos, a mi parecer.

Yago Jesus dijo...

@Anónimo, estoy al 85 % contigo, no son grandes fallos, ni meteduras de pata monumentales, el matiz -en mi opinión- es que, cuando se habla de privacidad, cualquier nimiedad cuenta y tener una falsa sensación de privacidad es muy muy grave