Question:
Pourquoi demandons-nous le mot de passe existant d'un utilisateur lors du changement de son mot de passe?
Craig Curtis
2012-11-21 10:46:07 UTC
view on stackexchange narkive permalink

Dans un contexte d'applications Web, lorsqu'un utilisateur souhaite modifier son mot de passe actuel, il devra généralement d'abord saisir son mot de passe actuel. Cependant, à ce stade, l'utilisateur a déjà été authentifié en utilisant son mot de passe actuel pour se connecter.

Je comprends quelque peu que le mot de passe existant est nécessaire pour empêcher les utilisateurs malveillants (qui peuvent accéder à la session en cours sur la machine de l'utilisateur) de changer le mot de passe. Cependant, cet argument ne peut-il être utilisé dans aucune situation? Pourquoi ne pas demander le mot de passe chaque fois qu'une demande d'informations sensibles est faite? En quoi le fait de changer un mot de passe est-il différent?

En ce qui concerne la dernière partie de la question, mon université utilise une application Web pour que les profs attribuent les notes, et lorsque vous souhaitez entrer ou soumettre des notes, votre mot de passe est demandé. Alors oui, il arrive que le mot de passe soit demandé pour d'autres tâches sensibles.
Exiger une nouvelle authentification fournit une défense supplémentaire contre les falsifications de requêtes intersites (CSRF) qui, étant donné le contexte de changement de mot de passe, seraient particulièrement dévastatrices.
Autrefois (quand les gens partageaient beaucoup de comptes), ressaisir le mot de passe était également un moyen de [contrôle de concurrence optimiste] (https://en.wikipedia.org/wiki/Optimistic_concurrency_control);si quelqu'un d'autre avait déjà changé le mot de passe, vous ne pourrez plus le changer.
Sept réponses:
D.W.
2012-11-21 11:01:39 UTC
view on stackexchange narkive permalink

Si un utilisateur laisse son ordinateur sans surveillance pendant quelques minutes (lorsqu'il est connecté), nous ne voulons pas que quelqu'un d'autre puisse passer et changer rapidement son mot de passe. D'une part, cela permettrait à l'attaquant de modifier également l'adresse e-mail associée, et maintenant le propriétaire légitime ne récupère jamais son compte.

Pour une autre chose, pensez simplement au potentiel de fonction des farces!

Changer votre mot de passe est une opération suffisamment sensible pour qu'il soit logique de demander à l'utilisateur de s'authentifier de nouveau. Et comme changer votre mot de passe est une opération relativement rare, cela n'introduit pas beaucoup d'inconvénients pour les utilisateurs: cela ne change l'expérience utilisateur que dans les rares cas où vous changez votre mot de passe.

Oui, la commodité tue la sécurité, ce que nous n'arrivons pas à apprendre. D'où la saisie de l'ancien mot de passe pour authentifier que la personne connaît au moins l'ancien mot de passe. J'ai eu une période où les farceurs de bureau se heurtaient à divers démons, la goutte finale étant un lock-out causé sur le site Web d'un fournisseur où un seul compte était partagé à l'échelle de l'entreprise. Il est étonnant de voir à quel point il est facile de créer six comptes distincts et de conserver les mots de passe pour vous-même après que vos informations d'achat et de vente soient coupées pendant que vous jouez au téléphone avec le technicien du service d'assistance à l'autre bout. Ils n'avaient aimé aucune barrière ...
Thomas Pornin
2012-11-21 18:33:18 UTC
view on stackexchange narkive permalink

Outre la motivation de sécurité exprimée par d'autres réponses (car le mot de passe est très sensible et nous ne voulons pas que quelqu'un obtienne un accès transitoire, par exemple un raid à l'heure du déjeuner, pour le transformer en accès permanent), il peut y avoir des problèmes pratiques. Par exemple, dans les systèmes où il existe des secrets d'utilisateur cryptés par mot de passe , l'ancien mot de passe est nécessaire pour déchiffrer ces données et les rechiffrer avec le nouveau mot de passe. C'est exactement ce qui se passe sur les systèmes d'exploitation Windows (c'est l'une des grandes différences avec le modèle de sécurité Unix), et cela peut également s'appliquer à certains systèmes Web (en fonction de ce que fait le système Web).

J'allais inclure cela, car je viens de mettre en œuvre un cryptage basé sur un mot de passe pour certaines informations d'identification tierces dans nos comptes d'utilisateurs. Changer le mot de passe ou ces informations d'identification tierces nécessite de connaître l'ancien afin de décrypter les données afin qu'elles puissent être modifiées et / ou rechiffrées.
Pourquoi dites-vous que c'est différent d'Unix? C'est exactement ce que font Gnome (et probablement KDE et OS / X) avec leurs porte-clés et / ou répertoires chiffrés (en tant que modules PAM).
Henning Klevjer
2012-11-21 13:38:07 UTC
view on stackexchange narkive permalink

C'est ce qu'on appelle le principe TOCTOU (Time of Check / Time of Use), ce qui signifie que l ' assurance d'authentification de l'identité de l'utilisateur (c'est-à-dire que l'utilisateur est toujours le même utilisateur qui s'est authentifié sur le système) est trop faible pour lui permettre d'effectuer certaines actions, comme changer le mot de passe ou redéfinir l'identité.

Pour s'assurer que le niveau d'assurance d'authentification est aussi élevé que possible lorsque des actions critiques sont effectuées, le "delta TOCTOU", le temps entre la vérification des informations d'identification et l'utilisation de leur privilège, doit être aussi court que possible pour éviter les problèmes résolus par DW

Pour moi, c'est un exemple évident de compromis ajustable entre sécurité et convivialité.

Stéphane Chazelas
2012-11-22 03:04:45 UTC
view on stackexchange narkive permalink

Une autre raison secondaire pour laquelle l'ancien mot de passe peut être nécessaire est lorsque les mots de passe sont hachés, et vous voulez vérifier que le nouveau mot de passe n'est pas trop similaire à l'ancien, vous devez demander à l'utilisateur, car vous ne pouvez pas obtenir cette information autrement à partir du mot de passe haché.

Bristol
2012-11-21 16:55:48 UTC
view on stackexchange narkive permalink

Comme les réponses ci-dessus l'ont laissé entendre, il s'agit de limiter les dégâts.

Un autre exemple serait si vous aviez simplement implémenté la fonction de réinitialisation du mot de passe en appelant http: //www.example. com / changepassword.php? newpassword = monkey alors je pourrais créer un lien comme ça, le cacher comme un tinyurl ou quelque chose et envoyer quelqu'un que je voulais pirater un tel lien, et s'ils cliquent dessus en étant connecté, je je les ai exclus de leur compte et je l'ai repris.

Cela s'appelle un [Cross-Site Request Forgery (CSRF)] (http://en.wikipedia.org/wiki/Cross-site_request_forgery).
@Polynomial, Et il est terriblement exploitable pour à peu près tout, même dans les principales applications Web.
dany
2012-11-25 10:06:43 UTC
view on stackexchange narkive permalink

Si l'application n'utilise pas de jeton CSRF (cross site request forgery), alors le mot de passe peut facilement être mis à jour par un attaquant simplement en envoyant un lien. Et cela sera également très utile si un utilisateur accède à notre session, il ne pourra pas mettre à jour le mot de passe.

saaj
2019-08-23 18:04:38 UTC
view on stackexchange narkive permalink

Je cherchais une norme, une directive ou au moins un terme reconnu pour la "confirmation d'action sensible". Ce que j'ai trouvé est la section Aide-mémoire pour l'authentification OWASP et Exiger une ré-authentification pour les fonctionnalités sensibles. En résumé, la surface d'attaque ressemble à:

  • CSRF
  • XSS
  • Détournement de session incluant un accès physique temporaire au navigateur d'un utilisateur

Pour les fonctionnalités sensibles nécessitant les informations d'identification actuelles d'un compte (lire le mot de passe actuel dans la plupart des cas) atténue le risque des attaques ci-dessus.

Certains produits et services (voir ci-dessous) vous permettent de définir des ressources sensibles et nécessitent une ré-authentification ou une intensification (l'utilisateur doit fournir un facteur d'authentification supplémentaire).

Notez également que l'application au niveau de l'interface utilisateur n'est pas conseillé. Ici Auth0 a un exemple comment émettre un jeton dédié pour une ressource sensible particulière avec sa bibliothèque cliente.

Référence:



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...