¿Por qué solicitamos la contraseña existente de un usuario cuando cambiamos su contraseña?

26

En un contexto de aplicaciones web, cuando un usuario desea cambiar su contraseña actual, generalmente tendría que ingresar primero su contraseña actual. Sin embargo, en este punto, el usuario ya se ha autenticado con su contraseña actual para iniciar sesión.

Entiendo que la contraseña existente es necesaria para evitar que los usuarios malintencionados (que pueden acceder a la sesión actual en la máquina del usuario) cambien la contraseña. Sin embargo, ¿no se puede utilizar este argumento en cualquier situación? ¿Por qué no pedir la contraseña cada vez que se realiza una solicitud de información confidencial? ¿En qué se diferencia el hecho de cambiar una contraseña?

    
pregunta Craig Curtis 21.11.2012 - 05:46
fuente

6 respuestas

50

Si un usuario deja su computadora desatendida durante unos minutos (mientras está conectado), no queremos que otra persona pueda pasar y cambiar rápidamente su contraseña. Por un lado, esto le permitiría al atacante cambiar la dirección de correo electrónico asociada, y ahora el propietario legítimo nunca volverá a recuperar su cuenta.

Por otra parte, ¡piense en el potencial de bromas de oficina!

Cambiar su contraseña es una operación lo suficientemente sensible que tiene sentido requerir que el usuario vuelva a autenticarse. Y, dado que cambiar su contraseña es una operación relativamente rara, esto no presenta muchos inconvenientes para los usuarios: solo cambia la experiencia del usuario en los casos raros en los que cambia su contraseña.

    
respondido por el D.W. 21.11.2012 - 06:01
fuente
27

Aparte de la motivación de seguridad expresada por otras respuestas (porque la contraseña es muy confidencial y no queremos que alguien obtenga acceso transitorio, por ejemplo, una redada a la hora del almuerzo, para transformarla en acceso permanente), puede haber problemas prácticos. Por ejemplo, en los sistemas donde hay secretos de usuario con contraseña cifrada , se necesita la contraseña antigua para descifrar dichos datos y volver a cifrarlos con la nueva contraseña. Esto es exactamente lo que sucede en los sistemas operativos de Windows (es una de las grandes diferencias con el modelo de seguridad de Unix), y puede aplicarse también a algunos sistemas basados en la Web (dependiendo de lo que haga el sistema basado en la Web).

    
respondido por el Thomas Pornin 21.11.2012 - 13:33
fuente
23

Esto se llama el principio TOCTOU (Tiempo de verificación / Tiempo de uso), lo que significa que el la garantía de autenticación de la identidad del usuario (es decir, el usuario es todavía el mismo usuario que el autenticado en el sistema) es demasiado bajo para permitirle realizar algunas acciones, como cambiar la contraseña o redefinir la identidad.

Para asegurarse de que el nivel de aseguramiento de autenticación sea lo más alto posible cuando se realizan acciones críticas, el "delta TOCTOU", el tiempo entre la verificación de credenciales y el uso de su privilegio, debe ser lo más corto posible para evitar los problemas abordados. por DW

Para mí, este es un ejemplo obvio de un compromiso ajustable entre seguridad y facilidad de uso.

    
respondido por el Henning Klevjer 21.11.2012 - 08:38
fuente
7

Otra razón adicional por la cual la contraseña antigua puede ser necesaria es cuando las contraseñas están encriptadas, y usted quiere verificar que la nueva contraseña no sea muy similar a la anterior, debe preguntarle al usuario, ya que no puede obtener esa información de lo contrario de la contraseña con hash.

    
respondido por el Stéphane Chazelas 21.11.2012 - 22:04
fuente
4

Como han sugerido las respuestas anteriores, se trata de limitar el daño.

Otro ejemplo sería si tuviera la función de restablecimiento de contraseña implementada como una llamada a enlace y luego Podría hacer un enlace como ese, ocultarlo como un tinyurl o algo así y enviar a alguien que quisiera hackear dicho enlace, y si hacen clic en él mientras está conectado, los he bloqueado de su cuenta y lo he tomado.

    
respondido por el Bristol 21.11.2012 - 11:55
fuente
2

Si la aplicación no usa el token CSRF (falsificación de solicitud entre sitios), el atacante puede actualizar fácilmente la contraseña simplemente enviando un enlace. Y también será muy útil si algún usuario obtiene acceso a nuestra sesión, entonces no podrá actualizar la contraseña.

    
respondido por el dany 25.11.2012 - 05:06
fuente

Lea otras preguntas en las etiquetas