Nuevo sistema de inicio de sesión de Gmail: ¿va en contra de la sabiduría convencional?

83

Me di cuenta de que el nuevo inicio de sesión de gmail solicita primero un nombre de usuario y luego confirma si existe dicho nombre de usuario, antes de solicitar la entrada de la contraseña.

¿Esto no va en contra de la sabiduría de seguridad convencional para no divulgar información acerca de si existe un nombre de usuario, para frustrar la clase de ataques que intentan muchos nombres de usuario posibles?

Supongo que Google sabe lo que están haciendo, entonces, ¿esto significa que tienen alguna forma de estar seguros contra lo que se considera convencionalmente una vulnerabilidad?

    
pregunta ataftoti 08.05.2015 - 18:06
fuente

10 respuestas

65

Para sitios más pequeños, no desea permitir que los piratas informáticos enumeren sus listas de usuarios, pero para Google, el sitio es tan grande que se puede suponer que casi todos tienen una cuenta o varias cuentas. Por lo tanto, el riesgo se minimiza después de un umbral de ubicuidad.

Todavía es una buena idea que la mayoría de los sitios no revelen si existe un nombre de usuario, pero el riesgo debe compararse con el proceso de registro del nuevo usuario. Lo que quiere evitar es un proceso automatizado para enumerar sus listas. El proceso de registro de nuevo usuario debe incluir algún tipo de retraso o puerta para que un script no pueda probar rápidamente un diccionario de usuarios. Esto se logra a menudo enviando un correo electrónico con los resultados del proceso de registro no exitoso. Sí, uno todavía podría enumerar, pero hay un retraso y un paso adicional.

Otra cosa a considerar es la diferencia entre un sitio público y un sitio privado. Google es un servicio público y los nombres de usuario también son públicos (se divulgan con cada correo electrónico enviado por una cuenta). Por otro lado, un sitio corporativo interno, al que solo pueden acceder los empleados actuales, es privado y requiere controles más estrictos para evitar la enumeración.

    
respondido por el schroeder 08.05.2015 - 20:28
fuente
47

Jeff Atwood, al hacer el inicio de sesión para Discourse, tenía esto que decir sobre el tema:

  

Esta fue la fuente de una larga discusión en Discourse sobre si tenía sentido revelar al usuario, cuando ingresa una dirección de correo electrónico en el formulario de "contraseña olvidada", si tenemos esa dirección de correo electrónico archivada. En muchos sitios web, este es el tipo de mensaje que verá después de ingresar una dirección de correo electrónico en el formulario de contraseña olvidada:

     
    

Si una cuenta coincide con [email protected], debería recibir un correo electrónico con instrucciones sobre cómo restablecer su contraseña en breve.

  
     

Note el tímido "if", que es un cobertura contra todas las implicaciones de seguridad de revelar si existe una dirección de correo electrónico determinada en el sitio simplemente ingresándola en el formulario de contraseña olvidada.

     

Nos tomamos muy en serio la elección de valores predeterminados seguros para el Discurso, por lo que no será explotado o abusado de la caja ni atacado con los spammers. Pero después de experimentar el mundo real, "¿qué correo electrónico usamos aquí de nuevo?" Estado de inicio de sesión en docenas de instancias de Discourse, nos dimos cuenta de que, en este caso específico, ser fácil de usar es mucho más importante que estar seguro.

    
respondido por el Michael 08.05.2015 - 22:18
fuente
37

Para Gmail, puede determinar si existe una cuenta simplemente enviando un correo electrónico a una dirección @gmail.com . Si rebota, esa cuenta no existe.

Esto es cierto para muchos proveedores de correo electrónico. Aquí, los nombres de usuario no se consideran secretos. Si un usuario tiene la dirección de correo electrónico [email protected] , todos saben que foo tiene una cuenta en example.com con el nombre de usuario [email protected] .

Sin embargo, para la mayoría de los otros sistemas, es una violación de la privacidad revelar los nombres de usuario. Si alguien puede descubrir que [email protected] tiene una cuenta en nostringsattacheddating.example.org y la esposa de Bob, Alice, puede intentar registrarse con el nombre de usuario [email protected] en el sitio web y le dice que el nombre de usuario ya está en uso, entonces es una violación masiva de la privacidad.

Recuerde que la dirección de correo electrónico tiene sus raíces en el proveedor de correo electrónico. No se pierde privacidad si se sabe que [email protected] tiene una cuenta en example.com , ya que no hay un punto de referencia para quién es [email protected] . Lo mismo no ocurre con otro sistema que usa el correo electrónico como nombre de usuario: un usuario con el nombre de usuario [email protected] en un sitio web que no sea de correo electrónico será el mismo [email protected] que el registrado en otros sitios web. Hay privacidad que proteger sobre las cuentas que tiene Mallory.

Además, revelar nombres de usuario puede ser útil para un atacante. Esto se conoce como una vulnerabilidad de enumeración de nombre de usuario. Si un atacante sabe qué nombres de usuario existen, luego puede ejecutar un ataque de adivinación de contraseña .

  

Como atacante si puedo usar su página de inicio de sesión o contraseña olvidada para   Reducir mi lista de 10000 objetivos a 1000 objetivos, lo haré.

También permite a los atacantes atacar a los usuarios del sistema mediante phishing.

Es fácilmente posible diseñar un sistema donde no se puede ejecutar la enumeración de usuarios. Por ejemplo, los procesos de registro y contraseña olvidada son los mismos.

Los pasos son:

  1. El sistema solicita su nombre de usuario (correo electrónico) en una sola página, sin otros campos de entrada.
  2. Cuando se envía el formulario, el sistema le pide al usuario que verifique su cuenta de correo electrónico.
  3. Si la cuenta existe, el correo electrónico contiene un enlace para restablecer la contraseña.
  4. Si la cuenta no existe, el correo electrónico contiene un enlace de registro.

Como beneficio adicional, ha validado su dirección de correo electrónico al registrarse en caso de que necesiten restablecer su contraseña en una fecha posterior. Cualquier error tipográfico significará que el usuario no puede registrarse en absoluto, lo cual es bueno porque un usuario no está utilizando accidentalmente una cuenta registrada en una dirección de correo electrónico diferente.

Tanto la contraseña como los enlaces de registro contienen un ID aleatorio criptográficamente seguro, por lo que no se pueden seguir sin recibir el correo electrónico. Solo alguien con acceso a la cuenta puede averiguar si un nombre de usuario está registrado o no (es mejor que Bob guarde en secreto las contraseñas de su computadora portátil y su correo electrónico de Alice; sería prudente para él desactivar cualquier sonido de notificación en caso de que Alice intente este proceso cuando también estás en la misma habitación).

Vea algunas de mis otras respuestas para temas relacionados:

respondido por el SilverlightFox 09.05.2015 - 11:21
fuente
10

Estoy seguro de que la regla se desarrolló en los días de 'big iron', cuando todas las cuentas estaban en grandes sistemas corporativos o gubernamentales. Desde que el sistema repartió los nombres de cuenta, el uso de una página de registro para buscar nombres de cuenta no fue un problema. Por lo tanto, mantener la lista de nombres de cuenta era factible & útil.

Ahora que estamos tratando con sitios de auto-registro, es imposible mantener la lista de nombres de cuenta en secreto. Además, muchas personas en estos días hacen público su nombre de cuenta de todos modos. Bajo estas condiciones, no tiene sentido intentar ocultar el hecho de que fue el nombre que falló en lugar de la contraseña.

    
respondido por el Jerry B 09.05.2015 - 00:52
fuente
8

Saber qué nombre de usuario existe o no es importante, porque un atacante también puede verificarlo desde la página de registro. Google no permite que un atacante ejecute un ataque como el ataque de fuerza bruta para obtener una lista de nombres de usuario.

    
respondido por el Ali 08.05.2015 - 19:34
fuente
8

Hay una razón más importante para solicitar el nombre de usuario primero y luego la contraseña: le permite a Google ofrecer una IU diferente para las cuentas que usan autenticación sin contraseña u otros mecanismos de inicio de sesión experimentales sin revelar de antemano qué cuentas lo están utilizando.

Es similar a cómo no se muestra la interfaz de usuario de 2Factor auth de Google hasta después de ingresar la contraseña: un atacante ni siquiera sabrá que hay un segundo factor involucrado hasta después de descifrar el primer factor.

Combinado con lo que otras respuestas están diciendo aquí sobre el relativo no riesgo de filtrar nombres de usuarios, esto me parece en realidad una mejora de seguridad.

    
respondido por el user76196 10.05.2015 - 02:55
fuente
5

Las direcciones de correo electrónico no son lo mismo que los nombres de usuario. Un nombre de usuario es información semiprivada (potencialmente), pero una dirección de correo electrónico se puede divulgar públicamente y se puede enrutar públicamente. Piense en el correo postal, la dirección de correo es a menudo conocida, pero la lista actual de destinatarios válidos no está necesariamente diseñada para ser pública, aunque a menudo también hay formas de buscarla en línea. En el caso de algo como Google, tienen Google+, YouTube, Grupos de Google, etc. que hacen que muchas de las direcciones ya sean bien conocidas.

También es trivial consultar un servidor de correo electrónico y determinar si existe una dirección de correo electrónico determinada, usando telnet o muchos sitios web lo harán por usted . Hay poco que ganar al proteger la información que es fácilmente accesible de otras maneras. Por esta razón, algunos sitios separan la dirección de correo electrónico del nombre de usuario. En el caso de un proveedor de correo electrónico, realmente no tiene sentido tener un nombre de inicio de sesión y una dirección de correo electrónico diferentes para el usuario promedio (tal vez aquellos de nosotros que somos más paranoicos de seguridad nos gustaría esa característica).

Cambiar a un inicio de sesión de dos pasos reduce la probabilidad de que la contraseña de un usuario se ingrese en un campo de búsqueda o en el campo de nombre de usuario. Estos campos a menudo se registran y los registros se correlacionan en todo el lugar y es menos probable que estén protegidos. Entonces, si los registros son atacados por un hacker o un estado nacional, entonces el atacante puede correlacionar la dirección IP del usuario con su nombre de usuario y luego notar algo como "m7p @ 55w0rd !!!!" que sobresale y asume que es una contraseña.

En términos de gestión de riesgos, el riesgo de exposición de contraseña es mucho mayor que el riesgo de enumeración de nombre de usuario. Es probable que Google tenga un sistema antifraude y un seguimiento de anomalías más sólido para hacer frente a los riesgos asociados con los nombres de usuario conocidos.

Creo que una buena manera de entender esto es el ejemplo de Tire Swing en la Introducción de FAIR (pdf) . El cálculo de riesgo de un nombre de usuario conocido se ve afectado por los otros controles y factores. ¿Detiene los ataques de fuerza bruta, requiere autenticación multifactor? ¿De qué otra forma podría obtenerse esta información? En el escenario, efectivamente está cambiando entre un riesgo sobre el que tiene control (monitoreo de todos los inicios de sesión) versus algo en el formulario antiguo que es más difícil de controlar (la contraseña es ingresada por el usuario en el área incorrecta).

    
respondido por el Eric G 09.05.2015 - 18:21
fuente
4

Me arriesgaré y diré que es probable que tengan algunos mecanismos para garantizar que no sea un repositorio abierto de usuarios.

Implementamos un sistema similar en nuestro pequeño sitio utilizando una solución respaldada por redis.

Los usuarios se presentan inicialmente con un simple correo electrónico / pase con un botón para iniciar sesión y registrarse. Al ingresar su correo electrónico y continuar, se comprueba si hay una coincidencia y, si coincide, se elimina el botón de registro. Si no, se presentan con el formulario de registro completo.

Rastreamos el número de intentos por subred ip y lista negra después de un umbral determinado. La lista negra no afecta su capacidad para usar el sitio, simplemente vuelve al comportamiento estándar de las opciones de inicio de sesión / registro.

    
respondido por el andrew.carpenter 09.05.2015 - 02:32
fuente
4

Sí, tienen sistemas establecidos para prevenir el abuso. Google tiene amplios mecanismos de "detección de anomalías", que sirven errores o captchas cuando su actividad es sospechosa: los ejemplos más conocidos son los bloques de la búsqueda de Google y el NoCaptcha ReCaptcha.

El hecho de que a usted se le permitiera saber si esa cuenta existe no significa que todos lo hagan ni que usted pueda adivinar el nombre de usuario de otra persona. Prueba y haznos saber cuánto tiempo antes de que te bloqueen, es una prueba interesante.

    
respondido por el Nemo 09.05.2015 - 08:11
fuente
0

Casi todo el mundo ya está ya haciendo esto

  

Me di cuenta de que el nuevo inicio de sesión de gmail solicita primero un nombre de usuario y luego confirma si existe dicho nombre de usuario, antes de solicitar la entrada de la contraseña.

Google ya tiene esta característica. Cuando intenta registrarse para obtener una nueva cuenta de Google, debe verificar si el nombre de usuario ya existe o no.

  

¿Esto no va en contra de la sabiduría de seguridad convencional para no divulgar información acerca de si existe un nombre de usuario, para frustrar la clase de ataques que intentan muchos nombres de usuario posibles?

Si no lo verificaron, ¿cómo se autenticaría correctamente? Múltiples personas con el mismo nombre de usuario son malas noticias para la integridad del sitio web. Por supuesto, en muchos casos, podría usar direcciones de correo electrónico únicas y permitir que varias personas tengan los mismos nombres.

Como dije antes, casi todos ya lo están haciendo de alguna manera. No hay nada de qué preocuparse aquí. Si desea reducir la velocidad la enumeración masiva de nombres de usuario, simplemente incluya un captcha después de algunos intentos.

Los captchas no pueden realmente evitar trucos de correo masivo

Los spammers envían con frecuencia grandes cantidades de spam a direcciones de correo electrónico. Si bien Google puede colocar el correo electrónico en la carpeta de correo no deseado, eso no impide la enumeración a través de correos electrónicos que no rebotan.

Es trivial crear un correo masivo que usa miles de direcciones IP diferentes y luego tratar de enumerar al no recibir un correo electrónico devuelto. Incluso se podría enviar basura al azar. Recuerde, si su objetivo es verificar si existe una dirección de correo electrónico o no, será suficiente para no recibir un correo electrónico de error después de unos días.

    
respondido por el Mark Buffalo 08.02.2016 - 18:57
fuente

Lea otras preguntas en las etiquetas