La sécurité des processus de réinitialisation d’un mot de passe

Chaque e-service ayant un espace privé dispose généralement d’une section permettant aux utilisateurs ayant oublié leur mot de passe de le récupérer ou le changer, l’approche diffère d’un fournisseur de service à un autre, chaque approche se base sur un processus de récupération qui se déroule généralement sur plusieurs étapes, à travers chaque étape l’utilisateur doit fournir des informations permettant de confirmer son identité, ainsi la validation de toutes les étapes garantie à l’utilisateur un accès à son compte.

Par-contre que se passerai-t’il si l’une des étapes est contournée? les informations sur-lesquelles s’appuient les processus de récupération sont-elles fiables? Quelles sont les bonnes pratiques? C’est les questions auxquelles je vais essayer de répondre dans cet article.

“J’ai oublié mon mot de passe” est une nécessité

Combien de fois avez-vous réinitialisé votre mot de passe sur un service? avouez-le c’est embêtant d’oublier les informations de récupération (question secrète/email secondaire etc..), par-contre c’est rassurant le fait de regagner accès à son compte après avoir oublié ses identifiants n’est ce pas?

Évidement la fonction de récupération de son compte est une fonctionnalité vitale, le nombre des e-services se multiplie et aujourd’hui chaque internaute dispose d’une multitude de comptes sur plusieurs e-services. Il devient de plus en plus difficile de se rappeler de tous ses mots de passe sur chaque service, l’Auth2.0 a vu le jour pour résoudre cette problématique mais la tendance sur les nouveaux e-services est de demander à l’utilisateur de créer un mot de passe même s’il s’inscrit par le billet d’une Auth2.0 tel que Twitter et Facebook.

Récupérer ou réinitialiser?

La récupération consiste à envoyer par e-mail à l’utilisateur son ancien mot de passe ou de générer un nouveau mot de passe temporaire, cette approche fait partie des mauvaises pratiques. Si la logique de régénération est faillible, un attaquant peut mener une attaque de bruteforce pour gagner l’accès au compte utilisateur.

Aujourd’hui l’approche la plus adoptée par les géants d’internet c’est la génération d’un jeton, qui à travers un lien hypertexte unique permet de réinitialiser le mot de passe de l’utilisateur, le lien hypertexte est envoyé à l’adresse e-mail de secours de ce dernier, ainsi le service demande à l’utilisateur en échange de saisir les informations précédemment remplies le jour de l’inscription et principalement la question secrète ou l’adresse e-mail alternative, dans le cas contraire sur certains services de messagerie, l’utilisateur peut fournir des informations relatives à son compte comme les derniers échanges (sujets/emails/dossiers etc..), si les informations correspondent l’utilisateur reçoit un mail avec un lien de réinitialisation de son mot de passe, ces informations pouvant être facilement récupérées grâce au social engineering, c’est pourquoi des géants comme Google et Facebook ont rajouté la double vérification ou la vérification téléphonique, qui à ce jour, si on ne considère pas le grand budget dépensé pour les notifications et la vie privée des utilisateurs, reste la solution la plus efficace.

Les erreurs fatales:

  • Vérification insuffisante des paramètres de requêtes HTTP :
    Ces derniers mois des géants comme Google et Microsoft ont connu une vague de piratage des comptes utilisateurs dû au contournement des étapes de réinitialisation de mot de passe, la technique utilisée par les pirates consiste à bidouiller, avec des outils comme l’extension Firefox TamperData, les paramètres HTTP POST, ne vérifiant pas la validité des données postées le processus de réinitialisation renvoie l’attaquant sur la page de modification.
  • Référence à un objet non-sécurisé dans l’algorithme de génération du jeton (token) : cette faille et exploitable quand l’algorithme de régénération du jeton (token) de réinitialisation fait référence à un objet non sécurisé comme la date (timestamp) ou encore le nom d’utilisateur, par exemple avec le timestamp un attaquant peut en exerçant du reverse engineering régénérer un token et le reproduire pour avoir un lien de réinitialisation valide (Randomness Attack)
  • Attaque CSRF sur la page de modification des informations de récupération:
    Pour comprendre ce genre d’attaque, on considère un REGISTRAR qui dispose d’un processus de réinitialisation de mot de passe fiable, l’utilisateur renseigne son adresse email de secours et il reçoit un lien de réinitialisation, dans son espace membre il y a un lien qui lui permet de modifier les informations de récupération de mot de passe tel que la question secrète ou l’adresse e-mail alternative. Si le formulaire en question est vulnérable aux attaques CSRF un attaquant peut facilement modifier les informations de récupération rien qu’en lui amenant à cliquer sur un lien pendant qu’il est connecté à son compte, pour mieux comprendre la faille Cross Site Request Forgery rendez-vous sur cet article.
  • profils publics et confidentialité
    Contrairement à ce que vous pensez, vos profils publics en disent beaucoup sur vous, vos likes par exemple peuvent aider un attaquant à deviner la réponse à votre question secrète, il faut donc être vigilant dans le choix de ses réponses secrètes.

Les bonnes pratiques:

  • Pour les développeurs:
    • Sécuriser l’espace membre contre les attaques CSRF
    • Ne pas baser l’algorithme de réinitialisation de jeton sur une référence à un objet non sécurisé
    • Ne pas mettre des questions secrètes débiles comme: “Nom de votre jeune sœur” ou encore “le nom de votre chien”, avec les réseaux sociaux ce genre d’informations est facilement trouvable.
  • Pour l’utilisateur:
    • Jamais le même mot de passe! : certains services stockent les mots de passes en texte brute sur leur bases de données, ces mots de passes n’étant pas cryptés.. avoir le même mot de passe sur plusieurs services n’est pas avantageux, pensez à mettre un mot de passe différent pour chaque service!
    • Ne communiquez jamais vos informations personnelles à un inconnu, n’acceptez pas sur Facebook ceux que vous connaissez pas, collecter des informations sur vous peut aider un attaquant à deviner la réponse à votre question secrète
    • Vous avez changé votre mot de passe et aussi les informations de récupération, c’est bien! par-contre si le e-service est basé sur l’Auth2.0 il faut penser à jeter un œil sur les applications ayant toujours accès à vos données, le changement de mot de passe n’impacte pas l’accès aux données personnelles à partir des applications tierces autorisées

Leave a Reply

Your email address will not be published. Required fields are marked *