¿Hay alguna razón para mostrar el mismo mensaje para un nombre de usuario no válido como contraseña?

17

He visto una pregunta / requisito de seguridad de que el inicio de sesión en un sitio web devuelve el mismo mensaje de error para una contraseña no válida que para un usuario inexistente. La idea es que esto hace que sea imposible descubrir nombres de usuario válidos al escanear los mensajes de error.

En los casos en que el registro automático está disponible, ¿esto hace alguna diferencia? No puedes permitir el registro con el mismo nombre de usuario dos veces, por lo que un atacante solo podría intentar registrarse con nombres de usuario hasta que se encuentre un nombre de usuario válido.

Gracias

    
pregunta Paul 24.03.2012 - 19:18
fuente

5 respuestas

10

Si hay al menos una forma de descubrir qué nombres de usuario están disponibles en el sitio, entonces significa que puede intentar forzar la fuerza bruta / el diccionario-ingeniar esas cuentas específicas. En el caso que describió, entonces no hay una diferencia de seguridad tangible para tratar de ocultar la razón del error en la página de inicio de sesión, ya que es trivial descubrir la verdadera razón de lo contrario.

Dependiendo de lo que sea más importante para usted, puede hacer que su proceso de inicio de sesión sea más fácil para el usuario (y el atacante), o en su lugar, tratar de asegurar su proceso de registro (o cualquier otro) que pueda revelar qué cuentas existen en su sistema.

Al defenderse contra estos casos relacionados con el proceso de autenticación para una aplicación web típica, normalmente debería tener en cuenta las siguientes rutas:

  • Registro / Registro : esto puede revelar qué cuentas están disponibles, así como permitir la inundación de su sistema con cuentas falsas / obsoletas, enmascaramiento de nombres, etc. Por lo general, Captcha puede proporcionar una buena protección, así como tiempos de espera, pero ganó No dejes de ataques manuales, más lentos. También sugeriría no dar sugerencias sobre la disponibilidad del nombre de usuario o el éxito del proceso de registro. Solo puede decir "Gracias por registrarse. Se enviará un correo electrónico de confirmación en breve para confirmar la cuenta" (o algo así)
  • Página de inicio de sesión : este es el punto obvio, y donde la mayoría de las aplicaciones ya tienen una protección bastante estándar, incluida la buena práctica de errores no reveladores, etc. La desaceleración del proceso de inicio de sesión o la supervisión del abuso también pueden ayudar. El bloqueo para inicios de sesión fallidos también es una posibilidad, pero es más propenso a los ataques de denegación de servicio.
  • Contraseña olvidada : esto a menudo se descuida cuando se considera la fuga de información. Cuando alguien coloca su correo electrónico / nombre de usuario en el campo de contraseña olvidada, probablemente debería responder con el mismo mensaje, independientemente de si el correo electrónico / cuenta es conocido o no. Tenga en cuenta que esto podría generar problemas de asistencia ( "Lo puse en mi correo electrónico y su sistema dijo que me estaba enviando un correo electrónico de restablecimiento, pero no recibí nada ..." )
  • Detalles de la cuenta / cambios de correo electrónico : muchas aplicaciones le permiten, por ejemplo, Cambia tu dirección de correo electrónico o incluso tu nombre de cuenta. Esto también podría filtrarse independientemente de si una cuenta o dirección de correo electrónico ya existe o no. Las mismas reglas se aplican aquí.
respondido por el Yoav Aner 26.03.2012 - 22:28
fuente
6

No, no tienes otra opción para el proceso de registro porque el nombre de usuario debe ser único. Sin embargo, para mitigar el ataque que describe, su sistema debería forzar un retraso entre intentos. Por ejemplo, una demora de 15 segundos probablemente no será perceptible para los humanos (porque le tomará más tiempo elegir un nuevo nombre de usuario), pero el atacante está limitado a 4 intentos por minuto.

En una nota relacionada, hay una leyenda urbana sobre un sitio web que requiere que sus usos tengan contraseñas únicas, así como nombres de usuario únicos. No hace falta decir que esto no mejoró la seguridad. :-)

    
respondido por el Adam Liss 24.03.2012 - 19:21
fuente
4

Además de los buenos puntos ya mencionados por Yoav: OMI, la única forma de protegerse completamente contra la recopilación de información durante el registro es usar las direcciones de correo electrónico como nombres de usuario. De esta manera, puede enviar un correo electrónico a la dirección utilizada para el registro sin dar ningún comentario directamente en el sitio web. El contenido del correo electrónico podría verse así:

  • "Una cuenta para [email protected] [con nombre de usuario xy] se acaba de registrar en $ site. Haga clic aquí para confirmar".
  • "Alguien intentó registrar una cuenta para @ bc [con el nombre de usuario xy] en $ sitio, sin embargo, esta cuenta ya existe. Si olvidó su contraseña, haga clic aquí. Si no inició el registro, ignore este correo electrónico".

De esta manera, solo el propietario de la dirección de correo electrónico podrá verificar si ya se ha creado una cuenta para la dirección.

La funcionalidad de restablecimiento de la contraseña es, como mencionó Yoav, la mayoría de las veces no está reforzada en contra de la recopilación de información. Acabamos de analizar la seguridad de los proveedores de almacenamiento en la nube populares, que permitieron la recopilación de información al menos a través de la función de restablecimiento de contraseña.

    
respondido por el twobeers 27.03.2012 - 10:37
fuente
2

Sí, hace una diferencia. Podría escanear el sitio buscando nombres hasta encontrar un nombre válido, y luego martillarlo con un intento de contraseña de fuerza bruta. No saber un nombre de usuario válido significa que debo suponer que cualquier nombre de usuario podría ser válido, lo que aumenta mi incertidumbre y aumenta el número de casos de prueba.

Si sé qué cuenta quiero aplicar a la fuerza bruta, entonces no, no importa que no haya diferencia en los mensajes.

    
respondido por el schroeder 26.03.2012 - 21:16
fuente
0

@Yoav lo dijo muy bien.

Sí, es importante proteger la privacidad de sus clientes y (probablemente) su lista de clientes.

Creo que una buena mitigación es combinar las respuestas de @Adam y @twobeers.

  1. Requerir un paso de verificación de correo electrónico cada vez que se crea o cambia un nombre de usuario / correo electrónico. No revele si la cuenta existe o no.
  2. Limite de tasa cualquier formulario que pueda modificar nombres de usuario / correos electrónicos.

La combinación de estos dos protege la identidad de sus clientes y limita el correo electrónico.

    
respondido por el Joe Zack 03.09.2013 - 01:59
fuente

Lea otras preguntas en las etiquetas