Hace poco saltó la alarma cuando en muchos sitios se hablaba sobre el «Robo de contraseñas en Firefox»
Otros sitios leyeron la noticia y dieron una interpretación distinta, y como bien sabemos, la información se degrada poco a poco, por lo que no quiero ni saber que puede haber llegado a entender un usuario común.
Actualmente y tras la salida de Firefox 2.0.0.1 mucho han vuelto a retomar el tema al no verlo arreglado, este hecho me hizo sentir curiosidad sobre el alcance real del bug y porqué aun estaba sin resolver, por lo que me dirigí a Bugzilla para leerlo.
Bien, voy a intentar hacer un resumen de todo lo que allí se comenta hasta ahora (que es bastante), además de una recomendación al final para poder tener una contraseña en cada sitio y solo recordar una.
Pongamos que entramos a la página http://www.pagina1.com, en ella tenemos un nombre de usuario y contraseña y le decimos a Firefox que los recuerde y así siempre que entremos nos lo rellene sin tener que memorizarlos.
Pues bien, el bug solo puede darse en una situación muy específica:
- Entramos normalmente a http://www.pagina1.com
- La página ha sido modificada para que un formulario oculto nos pida nombre de usuario y contraseña y este los mande a http://www.pagina2.com
- Como anteriormente dijimos a Firefox que guardara estos datos y al ver que el formulario está en http://www.pagina1.com (donde lo habíamos guardado), Firefox rellena los datos y permite enviarlos.
De esta forma nuestros datos (solo los guardados para esa página, no es resto) serían trasmitidos a otra página automáticamente y sin nuestro consentimiento.
Pero, un momento, ¿otra web puede robarme mis contraseñas de http://www.pagina1.com?
No, ya que el formulario oculto debe estar situado en http://www.pagina1.com y Firefox solo rellenará los datos para ese dominio que es donde lo guardamos y solo con los datos de http://www.pagina1.com no de otra página.
¿Cómo modifican http://www.pagina1.com para que exista un formulario oculto?
Evidentemente no lo va ha hacer el autor, ya que es estúpido que intente robarte contraseñas que usas en su sitio de esta forma si lo puede hacer mirando la base de datos de usuarios guardando las contraseñas sin encriptar.
En este caso solo podría hacerse en sitios como foros y comentarios, donde un usuario externo pueda insertar código html para introducir el formulario oculto. Pero, ¡ojo!, la mayoría de webs seguras no permiten que un usuario normal introduzca html en comentarios ya que podría comprometer la seguridad de la web totalmente, no solo esto.
¿Y si hacemos que Firefox compruebe si el formulario se envía a una web externa?
Pues conseguiríamos que todas las webs que tiene un servidor diferente para el inicio de sesión y otro para almacenar los datos no funcionaran con el gestor de contraseñas.
Ej: http://pages.google.com/ para iniciar sesión y http://usuario.googlepages.com/ para mostrar las páginas
¿Qué ocurre si http://www.pagina1.com es una web que sirve webs a usuarios del tipo http://www.pagina1.com/usuario/ ?
Bien, en este caso podría explotarse el bug desde una página de usuario y conseguir la contraseña del dominio padre http://www.pagina1.com, lo que nos lleva a la siguiente pregunta:
¿Y si Firefox comprobara la URL exacta desde donde se guardó para evitar el problema anterior?
Pues de nuevo encontraríamos problemas en las páginas como muchos wikis que tras intentar editar uan web que requiere registro te redirigen para que lo hagas a (por ejemplo)
http://en.wikipedia.org/w/index.php?title=Special:Userlogin&returnto=Main_Page
Por lo que si guardaramos los datos para esta url completa, en el resto de página o en la portada no funcionarían y tendríamos que guardarlo para cada url completa y si cambiamos de contraseña imaginad que lío…
¡Dios mio! Entonces es peor el remedio que la enfermedad, ¿qué nos queda por hacer?
Bien, como este problema solo puede explotarse insertando un formulario en la propia web (o como hemos visto desde un subdominio), los administradores de dichas páginas deberían evitar que sus usuarios puedan insertar html simulando formularios en comentarios.
Las páginas que tienen alojadas webs de usuarios deberían filtrar el uso de inputs del tipo type=»password»
Conclusión:
Personalmente pienso que TODOS los programas gestores de contraseñas son inseguros por diseño, y como no se va a eliminar el gestor de contraseñas en Firefox (ya que es algo muy demandado) ni en ningún otro navegador, el problema recae en que desde las páginas web se evite que terceras personas les inserten formularios con envío de contraseñas.
¿Como evitar que el robo de una contraseña comprometa otras webs con la misma contraseña?
La respuesta simple es, usa una contraseña distinta para cada web, así si una se ve comprometida no el resto.
Esto es inviable cuando se está registrado en muchas páginas, por lo que se ha ideado un sistema para tener una contraseña diferente en cada web (además una contraseña sólida) y solo tener que recordar una.
¿Como es esto posible?
Pues con PwdHash, una extensión para Firefox que, a partir de una única contraseña, generará una clave diferente para cada web que visitamos. Usa una función que genera una salida dependiendo de la entrada, pero que mediante esos datos de salida no se puede conseguir la entrada.
De esta forma, usando nuestra contraseña “maestra??? y el nombre de dominio de la página a la que accedemos, creará un hash que será el que se envíe como contraseña. Para hacerlo, podemos escribir nuestra contraseña con @@ delante o pulsar F2 antes de escribirla, así de fácil.
Si nos encontramos en un pc sin la extensión instalada (en un cyber) podemos generarla desde https://www.pwdhash.com/.
Espero que todo este rollo haya servido para aclarar algo, si encontráis algo erróneo no dudéis en comentármelo, puede que no me haya percatado de algún punto.
Actulización (21/12/06 18:47): En un blog del washintong post aseguran que un miembro del equipo de seguridad de Mozilla ha comunicado que se va a modificar el gestor de contraseñas para que recoja más información, no citan fuente así que no puedo asegurarlo, supongo que añadirán que se guarde aparte del dominio del formulario, la página a donde se envía, pero como he comentado en el análisis, la situación no cambiaría demasiado.
13 comments for “Gestión de contraseñas”