Muchas veces pulsamos el botón 'Recordar contraseña' en nuestro navegador para mayor comodidad cuando visitamos un sitio web al que accedemos regularmente. Pero, ¿es seguro almacenar nuestros usuarios y contraseñas en Firefox? La respuesta es no totalmente, y menos aún si no utilizamos una contraseña maestra. A continuación veremos por qué.
Lo primero es entender, a grandes rasgos, cómo almacena Firefox las credenciales del usuario. Desde la versión 3.5, este navegador abandona los ficheros de texto signons#.txt y guarda la información correspondiente en el fichero signons.sqlite en el directorio de nuestro perfil (ej. C:\Documents and Settings\vmotos\Datos de programa\Mozilla\Firefox\Profiles\3kmyva0l.default).
Este fichero es una pequeña base de datos sqlite con dos tablas: moz_logins que contiene los sitios y las credenciales almacenadas y moz_disabledHosts que contiene los sitios web excluidos indicados por el usuario.
table - moz_disabledHosts
table - moz_logins
Si echáis un vistazo a los datos de la tabla, podréis ver que tanto el usuario como la contraseña almacenados para un sitio aparecen cifrados:
Esto es porque Firefox primero cifra las credenciales mediante Triple DES (CBC) basándose en el API PKCS#11 de RSA y la librería NSS de Mozilla y luego los codifica en Base64. Para ello obtiene una clave de cifrado del fichero key3.db que a su vez está basada en la contraseña maestra especificada por el usuario.
Aquí viene el problema: si el usuario no especifica ninguna contraseña maestra, los usuarios y passwords almacenados por el usuario aparecerán codificados sólo en base64 o, si utilizamos las últimas versiones de Firefox, serán cifradas por una contraseña hardcoded con string 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01.
Es decir, si un atacante obtiene nuestros ficheros signons.sqlite, key3.db y cert8.db (almacén de certificados de Firefox) será capaz de obtener en claro nuestras contraseñas con suma facilidad, ya sea traspasándolos a otro equipo o mediante herramientas como FirePasswordViewer u otras implementaciones en Python (ffpwdcracker) o C (firefox_password_dump). Sin embargo, si especificamos una contraseña maestra, un atacante tendría que obtenerla primero mediante fuerza bruta (véase Firemaster).
Así que tenerlo en cuenta amigos, si almacenáis contraseñas en Firefox, utilizar una contraseña maestra compleja o pensar en otras alternativas como Lastpass, Keepass (keeFox), eWallet, etc.
Lo primero es entender, a grandes rasgos, cómo almacena Firefox las credenciales del usuario. Desde la versión 3.5, este navegador abandona los ficheros de texto signons#.txt y guarda la información correspondiente en el fichero signons.sqlite en el directorio de nuestro perfil (ej. C:\Documents and Settings\vmotos\Datos de programa\Mozilla\Firefox\Profiles\3kmyva0l.default).
Este fichero es una pequeña base de datos sqlite con dos tablas: moz_logins que contiene los sitios y las credenciales almacenadas y moz_disabledHosts que contiene los sitios web excluidos indicados por el usuario.
# sqlite3 signons.sqlite
sqlite> .tables
moz_disabledHosts moz_logins
table - moz_disabledHosts
- id - index of each entry
- hostname - blacklisted website URL
table - moz_logins
- id - index of each entry
- hostname - base website URL
- httpRealm -
- formSubmitURL - Actual website URL for which secrets are saved.
- usernameField - name of username element of form field
- passwordField - name of password element of form field
- encryptedUsername - encrypted username
- encryptedPassword - encrypted password
- guid - unique GUID for each entry
- encType - value 1 indicates encrypted
Si echáis un vistazo a los datos de la tabla, podréis ver que tanto el usuario como la contraseña almacenados para un sitio aparecen cifrados:
sqlite> select * from moz_logins;
1|https://www.google.com||https://www.google.com|Email|Passwd|MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECKYXpPNiS8DzBAgX2oMvFyuQGQ==|MDoEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECP23fc7O7vvQBBBBn2uQyUBYVhjksEc2ZSOO|{e1192bc4-82b3-4235-8063-bf6fd6e6279f}|1
Esto es porque Firefox primero cifra las credenciales mediante Triple DES (CBC) basándose en el API PKCS#11 de RSA y la librería NSS de Mozilla y luego los codifica en Base64. Para ello obtiene una clave de cifrado del fichero key3.db que a su vez está basada en la contraseña maestra especificada por el usuario.
Aquí viene el problema: si el usuario no especifica ninguna contraseña maestra, los usuarios y passwords almacenados por el usuario aparecerán codificados sólo en base64 o, si utilizamos las últimas versiones de Firefox, serán cifradas por una contraseña hardcoded con string 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01.
Es decir, si un atacante obtiene nuestros ficheros signons.sqlite, key3.db y cert8.db (almacén de certificados de Firefox) será capaz de obtener en claro nuestras contraseñas con suma facilidad, ya sea traspasándolos a otro equipo o mediante herramientas como FirePasswordViewer u otras implementaciones en Python (ffpwdcracker) o C (firefox_password_dump). Sin embargo, si especificamos una contraseña maestra, un atacante tendría que obtenerla primero mediante fuerza bruta (véase Firemaster).
Así que tenerlo en cuenta amigos, si almacenáis contraseñas en Firefox, utilizar una contraseña maestra compleja o pensar en otras alternativas como Lastpass, Keepass (keeFox), eWallet, etc.
Alguna sugerencia para chrome? es exactamente igual?
ResponderEliminarHola @anonimo, échale un vistazo a http://www.howtogeek.com/70146/how-secure-are-your-saved-chrome-browser-passwords/
ResponderEliminar