¿Es una mala práctica informar al usuario sobre su contraseña con hash?

4

Recientemente descubrí que un sitio web que uso todos los días me permite saber mi contraseña de hash.

El proceso fue el siguiente:

  • Vaya a "Eliminar cuenta" e ingrese su contraseña. La contraseña está marcada.
  • Si la contraseña es correcta, aparecerá un formulario donde debe establecer por qué está eliminando su cuenta (en este momento, la cuenta aún no se ha eliminado). Hay una entrada oculta llamada hashedPassword que contiene lo que creo que es mi contraseña con hash.
  • Cuando valida el formulario, su cuenta se elimina.

Ya que primero debes ingresar tu contraseña para obtener la contraseña hash, no lo considero directamente una vulnerabilidad. Este proceso no me parece peligroso, incluso si me sorprendió un poco ver mi contraseña con hash.

Todo lo que puedo ver es que puede permitir al usuario descubrir el algoritmo de hash, o incluso permitirle encontrar la sal utilizada.

¿Es esta una mala práctica? ¿Es peligroso y cómo podría ser utilizado por un atacante de manera útil?

    
pregunta Xavier59 15.08.2017 - 02:14
fuente

2 respuestas

5

Me parece una exposición innecesaria. Esperemos que no sea simplemente hash, sino que con una sal aleatoria por usuario considerable y un KDF con muchas iteraciones. Aun así, la intención del diseño es mantenerlo protegido en el servidor, no enviarlo a los clientes.

Si, como usted dice, el campo oculto se envía fuera del servidor solo tras la autenticación adecuada, el riesgo es mucho menor (por lo que un pirata informático no sería capaz de recopilar hashes fácilmente al intentar restablecer un montón de contraseñas de usuarios), pero aún parece innecesario.

La razón por la que todavía estamos hablando de riesgo es que los sistemas y redes de usuarios finales son mucho más fáciles de espiar, que los servidores protegidos de forma consciente. Entonces, si en este caso un atacante tiene una posición privilegiada en una red que usa la eliminación de SSL en su perímetro, entonces (s) no necesitaría "piratear el servidor", por lo tanto, eludir las protecciones del lado del servidor.

Podríamos argumentar que "la cuenta de usuario se eliminará de todos modos", y hasta cierto punto sería cierto (menor riesgo). Aún así, es bueno tener un caché de contraseñas usadas (si se pueden derivar de los hashes), ya que la reutilización de la contraseña es rampante.

    
respondido por el Sas3 15.08.2017 - 06:29
fuente
0

La forma en que lo describió anteriormente, es probablemente una mala práctica. Su navegador web no debería tener que guardar su contraseña (o su contraseña hash) después de la primera autenticación. El enfoque estándar es utilizar autenticación basada en token , donde se autentica una vez y luego el servidor devuelve un token de autenticación a su máquina que no incluye su cuenta o su contraseña en de cualquier manera.

enlace

En este caso, el principal beneficio es que la contraseña o su hash no está flotando por más tiempo del necesario. El servidor debe devolver un token a su máquina que le dé permiso para eliminar su cuenta después de completar el segundo formulario.

    
respondido por el David 15.08.2017 - 23:16
fuente

Lea otras preguntas en las etiquetas