¿Enumeración de nombre de usuario?

13

Por lo que entiendo, es una mala práctica de seguridad mostrar mensajes informativos de inicio de sesión fallidos, como:

  

El correo electrónico que ingresaste no existe

En lugar de

  

Combinación incorrecta de correo electrónico / contraseña

porque puede llevar a la enumeración del nombre de usuario. ¿Es esta realmente una manera efectiva de enumerar los inicios de sesión? Parece que la única forma de explotar esto sería crear una lista masiva de millones de direcciones de correo electrónico y luego ver si alguna cuenta tiene cuentas. Teniendo en cuenta la cantidad de direcciones de correo electrónico que hay por ahí, esto parece una posibilidad remota. ¿Hay ejemplos reales de este tipo de falla que se explota?

    
pregunta Abe Miessler 24.09.2013 - 17:16
fuente

4 respuestas

14

Permítame darle un ejemplo de un escenario hipotético pero muy plausible.

Hay un aspirante a hacker llamado Bob. Una buena mañana soleada, Bob encontró una falla de inyección SQL en un popular sitio de redes sociales llamado HandBook. Usando dicha falla de inyección SQL, Bob logró volcar una lista de direcciones de correo electrónico y contraseñas de cuentas registradas con HandBook. Dado que HandBook tiene un equipo de seguridad de mierda, todas las contraseñas están sin cifrar con MD5 . Abriendo su fiel mesa del arco iris, Bob logra recuperar las contraseñas de texto simple del 86% de las cuentas de usuario.

¿Qué hace Bob a continuación? Bob sabe que el 86% de las personas en HandBook son adolescentes. ¿Qué les encanta a los adolescentes más que a uno uno del sitio de redes sociales? ¡ Dos sitios de redes sociales, por supuesto! Bob decide probar todas las combinaciones de contraseñas y direcciones de correo electrónico que logró descifrar en contra del servicio de autenticación de un segundo sitio popular de redes sociales, Chatter. Dado que los adolescentes son adolescentes, no tienen políticas de contraseña seguras. Bob logra acceder al 76% de las cuentas de usuario simplemente intentando la misma contraseña o una variante cercana. Pudo lograr esto muy rápidamente ya que el formulario de inicio de sesión de Chatter le notificó amablemente cuando intentaba iniciar sesión con una dirección de correo electrónico inexistente.

¿Es esto un defecto? Sí, potencialmente. Mencioné esto en otra de mis respuestas . Se ha señalado que esto podría no ser un problema importante si los nombres de usuario de las cuentas registradas se pueden enumerar de otra manera, por ejemplo, a través de la página de registro. Sin embargo, muchas páginas de registro están protegidas con CAPTCHA, lo que hace que los intentos automáticos en su contra sean mucho más difíciles.

    
respondido por el Ayrx 24.09.2013 - 17:27
fuente
9

Esta es la vieja tradición.

En tiempos anteriores , las personas estaban usando mainframes y contraseñas muy deficientes, por lo que protege la cuenta los nombres eran "importantes": si un atacante sabía el nombre de un usuario real, podía probar las contraseñas y, en ese momento, intentar que funcionaran algunas docenas de contraseñas.

Por supuesto, esto no fue satisfactorio, porque los nombres de los usuarios no son realmente información secreta. Era mucho mejor tener contraseñas seguras.

Hoy en día , ocultar los nombres de usuario es menos importante, y también imposible en algunos contextos. Por ejemplo, cuando un usuario se registra en algún sitio web, utilizando un "nombre" de su elección, entonces el sitio web DEBE advertirle sobre duplicados, y eso es inevitable; El sitio no puede tolerar a dos usuarios con el mismo nombre. En ese contexto, no es posible ocultar realmente los nombres de usuario; por lo tanto, ocultar nombres de usuarios debería ser inútil. Como menciona @Terry, CAPTCHA en las páginas de registro puede hacer que la enumeración de nombres de usuarios sea más difícil de realizar de forma automática (pero "más difícil" no es lo mismo que "difícil").

Por lo tanto, los mensajes de inicio de sesión fallidos que no distinguen entre un nombre de inicio de sesión no existente y una contraseña incorrecta aún se usan ampliamente, pero más por el bien de la tradición que por una razón fuertemente racional. .

Tenga en cuenta, sin embargo, que hay botnets que intentan replicarse intentando los inicios de sesión SSH en direcciones IP aleatorias, con "nombres de usuario y contraseñas comunes". Simplemente inspeccione el archivo auth.log de un servidor Linux, verá estos intentos. Tales botnets lo han hecho durante años. Ellos podrían hacer esto por un sentido de tradición (no hay razón para creer que las personas malvadas son más competentes en lo que hacen que las personas no malvadas), pero es posible que este tipo de bruta la fuerza realmente funciona con una probabilidad de éxito no despreciable; y un mensaje de error que distingue entre un nombre de inicio de sesión incorrecto y una contraseña incorrecta solo puede ayudar a estas redes de bots.

Por lo tanto, aunque la noción total de evitar filtrar nombres de usuarios es principalmente un remanente histórico de tiempos anteriores, aún puede tener algún valor en algunos casos de esquina, principalmente fuerza bruta masiva por parte de un atacante sin mente.

    
respondido por el Tom Leek 24.09.2013 - 17:34
fuente
3

Si un atacante está haciendo un ataque de ingeniería social. El atacante podría poner una dirección de correo electrónico de la víctima dentro del formulario de inicio de sesión. Entonces podremos saber si la víctima está registrada o no en un correo electrónico específico. Si la víctima está registrada en un sitio web, el atacante crearía una cuenta en ese sitio web e intentaría un ataque de ingeniería social. No creo que detenga al atacante, pero al no mostrar el mensaje "El correo electrónico que ingresaste no existe", debería ralentizar el ataque.

    
respondido por el fvaliquette 24.09.2013 - 17:38
fuente
-2

Puede agregar una lista masiva de nombres de usuarios públicos a la base de datos y no permitir que los usuarios los elijan y respondan con un error general. De esta manera, un atacante no puede distinguir entre un usuario válido y un inválido.

La desventaja sería: 1- limitar a los usuarios a elegir su nombre de usuario deliberado 2- Disminuir el rendimiento agregando una nueva consulta en los nombres de usuario falsos

alguna idea?

    
respondido por el armin 25.01.2016 - 03:57
fuente

Lea otras preguntas en las etiquetas