En los mensajes de error no se debe mostrar información como que existe un usuario llamado “burbuja2” que intenta acceder a la base de datos “burbuja”:
Tag: seguridad
No repita ninguna de sus últimas 10 contraseñas
En un servicio web que utilizo, el otro día me pidieron que cambiara la contraseña. Uno de los requisitos era que no repitiese ninguna de las últimas 10 contraseñas:
Además, la contraseña debía cumplir:
- Empezar con una letra.
- Contener números.
- Contener mínimo una letra mayúscula.
- Una longitud mínima de 10 y máxima de 14 caracteres.
- Y el único carácter especial que se acepta es el guion bajo “_”.
¡Casi nada!
¿Guardar las contraseñas sin ocultar? Error de principiante
La semana pasada nos levantamos con la noticia Twitter recomienda cambiar la contraseña a sus 300 millones de usuarios por un fallo en la seguridad:
Twitter ha recomendado a sus usuarios que revisen la posibilidad de cambiar su contraseña de acceso tras detectar un problema técnico en sus sistemas internos, aunque ha aclarado que no hay indicaciones de que haya habido una filtración externa.
La recomendación figura en una anotación en el blog de la compañía firmada por el responsable técnico de Twitter, Parag Agrawal, en la que describe cómo sucedió ese error y las medidas que recomienda para garantizar la confidencialidad.
De acuerdo con el aviso, Twitter almacena las contraseñas encriptadas, reemplazado el texto escrito por el usuario con una serie de números y letras, y almacena los datos en sus propios sistemas, un proceso de “hashing” que califica de “estándar”. Pero “debido a un error, las contraseñas se escribieron en un registro interno sin completar el proceso de ‘hashing”, agrega la compañía, aunque no aclara a cuántos usuarios afectó el error.
Cuando entré a Twitter me encontré el siguiente aviso:
En el artículo Keeping your account secure de Twitter explican un poco más:
We mask passwords through a process called hashing using a function known as bcrypt, which replaces the actual password with a random set of numbers and letters that are stored in Twitter’s system. This allows our systems to validate your account credentials without revealing your password. This is an industry standard.
Due to a bug, passwords were written to an internal log before completing the hashing process. We found this error ourselves, removed the passwords, and are implementing plans to prevent this bug from happening again.
Y también mandaron un correo electrónico, en español, con la explicación de lo sucedido:
Cuando estableces una contraseña para tu cuenta de Twitter, recurrimos a la tecnología para ocultarla a fin de que ninguna persona de la empresa pueda verla. Recientemente, descubrimos un error que guardaba las contraseñas no ocultas en un registro interno. Hemos corregido el error y nuestra investigación demuestra que ninguna persona incumplió las reglas ni hizo un uso indebido de la información.
Para mayor seguridad, te recomendamos que cambies tu contraseña en todos los servicios donde la utilizaste. Puedes cambiar tu contraseña de Twitter en cualquier momento yendo a la página de configuración de contraseñas.
Ocultamos las contraseñas a través de un proceso de hash que utiliza una función conocida como bcrypt, mediante lo cual la verdadera contraseña se reemplaza por un conjunto aleatorio de números y letras que se guardan en el sistema de Twitter. Esto permite que nuestros sistemas validen las credenciales de tu cuenta sin revelar tu contraseña. Este es un estándar de la industria.
Debido a un error, las contraseñas se escribían en un registro interno antes de que se completara el proceso de hash. Nosotros mismos descubrimos este error, eliminamos las contraseñas y comenzamos a implementar planes para evitar que este error se vuelva a producir.
La falta de seguridad de Yahoo
Hace un año se descubrió que Yahoo había recibido un ataque y se habían robado los datos de unos 500 millones de cuentas.
Ahora se ha sabido que fueron unas pocas más, algo así como el 100%, todas las cuentas de Yahoo: Los problemas de seguridad de Yahoo crecen como por arte de magia: mejor cambiar contraseñas.
Y curioso también el error que se comenta en esa página web:
El desastre de Yahoo fue de proporciones bíblicas; pero por alguna razón este tipo de cosas no parecen importarle mucho a la compañía. Buena muestra es que el propio sistema de verificación en dos pasos tiene un bug que hace cuando se envía el código falte un simple espacio entre «Tu clave de cuenta de Yahoo es…» y el propio código:
A simple vista no está muy claro si el código es esSNTU o SNTU. Y este bug lleva así literalmente meses. Es imposible no preguntarse cómo un sitio en el que trabajan todavía miles de empleados nadie se da cuenta de fallos de este tipo. ¿Acaso no usan sus propios servicios?
Análisis de contraseñas filtradas
En Cosas que se pueden aprender analizando 32 millones de contraseñas:
- 123456 es la contraseña más utilizada del mundo, seguida de password.
- El 80% de las contraseñas tienen entre 8 y 12 caracteres. De menos de 4 o más de 17 hay muy muy pocas.
- El 90% de las contraseñas solo utilizan minúsculas y números.
- La mitad de las contraseñas solo están compuestas por letras; un tercio terminan en un número.
Cómo crear una contraseña segura y recordarla siempre
El artículo Cómo crear una contraseña segura y recordarla siempre propone:
MÉTODO 1: Una frase hecha contraseña
Allá por 2008, el experto en seguridad Bruce Schneier recomendó un sencillo método para conseguir una contraseña segura y que se pueda recordar: crear una clave a partir de una frase. Aún recomienda este método.Nada como coger algo memorable sobre nosotros, algo que sepamos de memoria desde hace décadas, y mezclarlo de una forma que vamos a recordar por narices, incluso si al principio cuesta un poco. Por ejemplo, “¡El Madrid ganó la Undécima el 28 de mayo de 2016!” se puede convertir fácilmente en “¡ElMagalaUnel28demade2016!”. El patrón es fácil: añadir exclamaciones al principio y al final, coger las dos primeras letras de cada palabra, respetar las mayúsculas y usar números para la fecha. Si no eres futbolero, piensa en otra combinación con este estilo. A ver si ‘descubrís’ de qué trata esta contraseña: “CrCodeAmel12deocde1492”.
MÉTODO 2: Palabras inconexas, pero graciosas
Otro método efectivo consiste, directamente, en utilizar palabras sin conexión alguna entre sí en cuanto a significado o sintaxis, pero que podamos recordar fácilmente porque nos hacen gracia o porque suena gracioso.’FistroAstronautaCorrección’ se recuerda fácilmente, aunque sería recomendable ponerle un número por alguna parte.Las palabras inconexas están muy bien, pero se pueden olvidar si no se tiene buena memoria. Por eso el método ‘PAO’ puede ser más efectivo. Fue creado por los ingenieros de la Carnegie Mallon University, sus siglas significan ‘persona, acción y objeto’ y quizá es el truco nemotécnico más sencillos de todos los de esta lista. “BeyonceconduceunFordporLugo?” no tiene ningún sentido, pero mezcla los tres elementos y es fácil de recordar si eres fan de la cantante. O de Lugo. Se puede ser más extremo con este método y usar símbolos y números para hacerla más segura todavía: “MigatoEnrique17_gobierna_Angola”.Es importante utilizar palabras que no estén relacionadas entre sí. Cuidado con usar nombres de películas o citas célebres, pues, de nuevo, las herramientas de los hackers son cada día más sofisticadas y encuentran lo primero de todo estas expresiones que se han usado juntas a menudo.
MÉTODO 3: Método avanzado para la memoria
Todos estos sistemas pueden funcionar muy bien tal y como son, pero hay un problema de fondo: no es nada recomendable usar la misma contraseña siempre. Por muy segura que sea, si te la roban, podrán acceder a todo lo que tengas en Internet con un solo hackeo. Por ello, una recomendación para crear contraseñas similares, pero diferentes, es utilizar grupos de significado, por llamarlo de algún modo, y crear variantes de una misma idea con varias contraseñas.Cojamos el ejemplo de Beyoncé al volante. Si usáramos dicha cuenta en Gmail, a lo mejor podríamos emplear “BritneySpearspilotaunRenaultporGerona”. Puede parecer rebuscado visto así, pero las categorías están ahí: cantante famosa, acción, marca de coche y ciudad. Si te gustan los animales, puedes hacer algo similar con razas de perro. Si te gusta la música, con instrumentos. ¿La comida? Con recetas. Lo importante, casi tanto como que la contraseña sea segura, es recordarla al instante.
Cuentas de eBay robadas
En los últimos meses, numerosos gigantes de la Web han sufrido ataques y robos de datos de cuentas de sus clientes. Esta vez le ha tocado a eBay: eBay pide a sus 128 millones de clientes que cambien las claves.
La noticia dice:
La compañía de comercio electrónico eBay ha pedido a sus 128 millones de clientes que cambien las contraseñas, tras reconocer que había sufrido hace unos meses un ataque cibernético a la base de datos.
La base de datos contenía nombres, edad, contraseñas de correos, direcciones físicas y números de teléfono, aunque la empresa señala que no tienen evidencia de que los piratas informáticos hubieran accedido al sistema de pagos Paypal, del que es propietaria.
[…]
El ataque se realiza a través de “un pequeño número” de cuentas de empleados que permitían el acceso no autorizado a la red corporativa, explicó la compañía en un comunicado. El infringimiento de las normas se detectó por primera vez hace unas dos semanas y, según la compañía, desde entonces no se ha descubierto un incremento de las actividades fraudulentas en su web.
Uso de cookies para mantener la persistencia de un login
A mis alumnos, en la Práctica 9: PHP 2 (cookies y sesiones) les pido que implementen la típica opción de “recordarme” que existe en muchos sitios web. Las cosas que uno ve son muchas veces sorprendentes, pero pocas veces veo algo que realmente sea correcto… el guardar directamente el nombre de usuario y la contraseña en una cookie no es muy seguro 🙂
Sobre este tema no hay mucha información. He intentado averiguar cómo lo hacen sitios web como Google o Facebook, pero no encuentro información sobre ello. ¿Alguien lo sabe?
Lo mejor que he encontrado es el artículo Persistent Login Cookie Best Practice. La solución que propone es fácil de entender e implementar:
The cookie should consist of the user’s username, followed by a separator character, followed by some large random number (128 bits seems mind-bogglingly large enough to be acceptable). The server keeps a table of number->username associations, which is looked up to verify the validity of the cookie. If the cookie supplies a random number and username that are mapped to each other in the table, the login is accepted.
At any time, a username may be mapped to several such numbers. Also, while incredibly unlikely, it does not matter if two usernames are mapped to the same random number.
A persistent cookie is good for a single login. When authentication is confirmed, the random number used to log in is invalidated and a brand new cookie assigned. Standard session-management handles the credentials for the life of the session, so the newly assigned cookie will not be checked until the next session (at which point it, too, will be invalidated after use).
The server need not make the effort of deliberately trying to avoid re-assigning random numbers that have been used before: the chance of it happening is so low that even if it did, nobody would know to make use of it.
When a user logs out through some deliberate logout function, their current cookie number is also invalidated. The user also has an option somewhere to clear all persistent logins being remembered by the system, just in case.
Periodically, the database is purged of associations older than a certain time-period (three months, perhaps: the size of the table would be far more an issue than any possibilities of collision in a 128 bit random space).
The following user functions must not be reachable through a cookie-based login, but only through the typing of a valid password:
- Changing the user’s password
- Changing the user’s email address (especially if email-based password recovery is used)
- Any access to the user’s address, payment details or financial information
- Any ability to make a purchase
Gran agujero de seguridad
En el sitio web Have I been pwned? podemos averiguar si nuestra cuenta en algún sitio web famoso como Adobe, Sony o Yahoo! se ha visto comprometida debido a alguno de los recientes ataques que han sufrido.
El peor de los ataques es el sufrido por Adobe pero ha habido más:
The big one. In October 2013, 153 million accounts were breached with each containing an internal ID, username, email, encrypted password and a password hint in plain text. The password cryptography was poorly done and many were quickly resolved back to plain text. The unencrypted hints also disclosed much about the passwords adding further to the risk that hundreds of millions of Adobe customers already faced.
En Adobe credentials and the serious insecurity of password hints nos muestran un pequeño análisis de los datos que se han publicado. Y en The only secure password is the one you can’t remember nos dan algunos consejos para lograr contraseñas seguras.
Por cierto, este es el correo de disculpa que manda Adobe:
Información importante sobre el restablecimiento de la contraseña
Como anunciamos el día 3 de octubre, Adobe ha descubierto que se han producido ataques en nuestra red que han consistido en el acceso ilegal y la extracción de una base de datos de backup con las identificaciones ID de Adobe y contraseñas cifradas. Escribimos para informarte de que tu ID de Adobe se encontraba en la base de datos extraída por los atacantes. Sin embargo, lo más importante, es que tu contraseña actual no estaba incluida. Debido a esto, no la hemos restablecido. No tenemos motivos para pensar que tu cuenta de ID de Adobe esté en peligro o que se hayan realizado actividades no autorizadas en ella. La base de datos tomada por los atacantes procedía de un sistema de backup con registros desactualizados, por lo que se había indicado su desmantelamiento. El sistema de autenticación de Adobe de registros, que cifra criptográficamente las contraseñas de los clientes, no fue el origen de la base de datos extraída.
Sin embargo, si utilizas tus contraseñas antiguas en otros sitios web, deberías cambiarlas. También te recomendamos que sigas las prácticas recomendadas de contraseñas para asegurarte de que la actual sea segura:
- No reutilices contraseñas: La contraseña para tu cuenta de ID de Adobe debe ser única. No reutilices una contraseña anterior de tu ID de Adobe ni una contraseña que estés utilizando en otro sitio web.
- Asegúrate de que tu contraseña es difícil de adivinar: Tu contraseña debe contener al menos ocho (8) caracteres de longitud. Esta debe incluir una mezcla de diferentes conjuntos de caracteres, como letras mayúsculas (A-Z), letras minúsculas (a-z), dígitos (0-9) y caracteres especiales (# $ % & – _ { }). No debe utilizar ni la totalidad ni parte de tu nombre o de tu ID de Adobe.
Lamentamos profundamente cualquier posible molestia que este incidente pueda ocasionarte. Valoramos la confianza de nuestros clientes y seguiremos trabajando con empeño para evitar que incidentes como este vuelvan a repetirse en el futuro. Si tienes alguna duda, puedes obtener más información visitando la página de atención al cliente, que encontrarás aquí.
Equipo de atención al cliente de Adobe
¿MD5, Sha1, Sha2?
Excelente artículo Comparing Hash Algorithms: Md5, Sha1, Sha2, en el que se compara de una forma muy sencilla la seguridad y la rapidez de estos algoritmos.
La conclusión es que no se debe emplear MD5 para nada, y entre Sha1 y Sha2, Sha2 mucho mejor.