Envoyer un code à usage unique par e-mail est pire qu’un mot de passe
(blog.danielh.cc)- De nombreux services ont récemment adopté la connexion par code à 6 chiffres basé sur l’e-mail ou le numéro de téléphone
- il suffit de saisir son e-mail ou son numéro de téléphone pour recevoir un code de vérification à 6 chiffres, puis de l’entrer pour se connecter
- Cette méthode introduit de graves vulnérabilités pour la sécurité des comptes
- un attaquant peut simplement saisir l’adresse e-mail d’une autre personne dans un service légitime pour demander l’envoi d’un code de vérification
- l’utilisateur a alors du mal à savoir si le code reçu correspond réellement à une action légitime ou à une tentative de phishing
- les outils classiques de protection contre le phishing, comme les password managers (gestionnaires de mots de passe), deviennent inefficaces
- Cette méthode par code de vérification fait effectivement l’objet d’abus répétés
- une approche similaire est utilisée pour la connexion aux comptes Minecraft opérée par Microsoft
- de nombreux cas de vol de comptes ont été signalés sur Reddit, YouTube et dans diverses communautés et médias en ligne
Conclusion
L’authentification par e-mail avec un code à 6 chiffres est, du point de vue de la sécurité, plus fragile qu’on ne le pense
- par rapport au mot de passe classique, elle augmente fortement le risque de phishing
- présentée comme une amélioration de l’expérience utilisateur ou de la sécurité, elle peut en réalité produire un résultat pire
3 commentaires
Je n’adhère pas vraiment à ça ; j’ai l’impression que c’est une astuce qui ne fonctionne que dans des situations très spécifiques.
Si on utilise des passkeys puis qu’on perd son appareil, ça doit vraiment être galère...
Commentaire Hacker News
Le schéma d’attaque fonctionne ainsi
1) l’utilisateur s’inscrit sur un site frauduleux
2) le site lui indique : « un code de connexion a été envoyé par e-mail depuis le site GOOD, veuillez le saisir »
3) le site frauduleux déclenche, avec l’adresse e-mail de l’utilisateur, le flux « se connecter avec un code à usage unique par e-mail » du site GOOD
4) le site GOOD envoie le code de connexion à l’utilisateur par e-mail
5) l’utilisateur voit que l’e-mail vient de GOOD, lui fait confiance et saisit le code
6) l’utilisateur entre le code sur le site frauduleux
7) le site frauduleux utilise alors ce code pour se connecter au site GOOD en se faisant passer pour l’utilisateur
Pour cette raison, l’authentification par « envoi d’un code à usage unique par e-mail » est très vulnérable au phishing
La méthode « cliquer sur un lien dans l’e-mail » est légèrement meilleure, car il est plus pénible et plus suspect pour l’utilisateur de copier-coller ce lien sur le site frauduleux alors qu’il l’emmène directement vers le site GOOD
Cela dit, si un service de messagerie populaire se met soudainement à bloquer les e-mails de connexion ou les liens eux-mêmes, un grand nombre d’utilisateurs risquent de ne plus pouvoir se connecter du tout
Les passkeys sont la meilleure solution
La prise en charge des passkeys par les gestionnaires de mots de passe s’améliore constamment
Même si l’on perd l’appareil où sont stockées ses passkeys et qu’on les perd toutes, je suis convaincu que cela reste bien plus sûr que le système classique des mots de passe
Je préfère encore que ma grand-mère doive aller à la banque pour récupérer l’accès à son compte plutôt que de voir quelqu’un lui voler tout son argent via du phishing
Le problème des passkeys est plus complexe que « perdre l’accès si l’on perd son appareil » (selon la configuration, il existe des solutions même en cas de perte de l’appareil)
Le plus gros problème, c’est l’attestation
Cela permet aux services de bloquer les personnes qui utilisent des outils augmentant la liberté des utilisateurs (par exemple des solutions d’authentification open source)
Les passkeys et les protocoles de type challenge-response auraient pu être une amélioration énorme pour remplacer les mots de passe
Mais dans la réalité, tout est conçu de façon à renforcer davantage encore la domination des Big Tech tout en réduisant la liberté des utilisateurs
À propos de l’idée selon laquelle « mieux vaut que ma grand-mère aille à la banque pour récupérer son compte »
il faut aussi se demander ce qu’il se passerait si quelqu’un la menaçait avec une arme pour forcer le déverrouillage du compte et vider tout l’argent
Dans le pays du tiers-monde où je vis, les vols de smartphones sont si fréquents que même la 2FA est irréaliste en pratique
J’ai déjà dû récupérer une 2FA une fois, et c’était l’enfer
Avec un mot de passe, il suffisait d’avoir accès à Bitwarden depuis n’importe où
J’ai configuré une passkey sur github et j’ai confirmé qu’elle était stockée dans Chrome
Quand j’essaie de me connecter à github avec cette passkey, Chrome affiche une fenêtre contextuelle me demandant le code PIN du gestionnaire de mots de passe Google
Je n’ai aucune idée de ce qu’est ce code PIN, et je ne trouve aucun moyen de le réinitialiser
Il n’y a aucune information à ce sujet ni dans le profil Google, ni dans le gestionnaire de mots de passe, ni dans les paramètres de sécurité
À ceux qui disent que ce n’est pas grave si ma grand-mère doit aller à la banque pour récupérer son compte
moi, je peux aller physiquement à ma banque ou au helpdesk IT de mon entreprise pour récupérer un accès,
mais je ne peux pas aller au siège de Google, Facebook ou Xitter pour faire la même chose
Les passkeys liées à un appareil ont une très forte probabilité de poser problème dans ce genre de cas
La plupart des utilisateurs ne prennent pas ce type de situation en compte
Les passkeys à elles seules ne suffisent pas
L’idée, c’est d’éviter de répéter les erreurs du passé
Le gestionnaire de mots de passe devrait être la base, et une MFA dédiée ne devrait être utilisée que dans des cas vraiment exceptionnels (par ex. compte e-mail, compte financier, etc.)
Je pense aussi qu’il faudrait imposer au moins 3 méthodes MFA configurées et en exiger au moins 2
Si une MFA ne prend pas en charge à peu près toutes les options — codes imprimés, application d’authentification indépendante du système d’exploitation, clé matérielle type yubikey, etc. — alors elle ne vaut pas la peine d’être utilisée
Je reçois quatre fois par jour des e-mails de notification de demande de réinitialisation du mot de passe de mon compte Microsoft
Ce sont des e-mails avec un code à 6 chiffres, qui permettent de récupérer le compte
Cela veut dire qu’un attaquant peut tenter 4 fois par jour de compromettre mon compte avec une probabilité de 1 sur 1 000 000 à chaque tentative
S’il fait cela sur des milliers de comptes, il peut gratuitement en compromettre quelques-uns chaque jour
J’ai même déposé un rapport de sécurité à ce sujet, mais on m’a opposé que la preuve mathématique de la vulnérabilité n’était pas suffisante et on a refusé d’agir
Il ne me reste donc qu’à encaisser le spam en espérant que mon compte ne soit pas piraté
J’ai réglé le problème en ajoutant un alias de connexion
Lors de la connexion, l’ancienne adresse e-mail du compte (celle qui est publique) est bloquée, et seule la connexion via l’alias, une chaîne aléatoire privée, est autorisée
Depuis, je n’ai plus vu une seule tentative de connexion externe
[Méthode : account.microsoft.com > Vos informations > Préférences de connexion > Ajouter une adresse e-mail > Ajouter un alias puis le définir par défaut > dans Préférences de connexion, choisir n’autoriser que l’alias]
J’ai eu la même expérience
Je pense que c’est peut-être une conséquence du fait d’avoir dû utiliser Microsoft Teams
Si un attaquant applique cette méthode sur 125 000 comptes, il peut espérer tomber sur un compte par jour
S’il ne vise pas un compte précis mais tente sa chance à grande échelle, l’efficacité en temps passé est plutôt bonne
Pour corriger cela, il faudrait appliquer un exponential backoff augmentant le délai d’attente à chaque échec plutôt qu’une limite fixe de 4 tentatives
Je reçois aussi sans arrêt un message similaire sur un ancien compte Instagram
« Vous avez des difficultés à vous connecter ? Cliquez ici pour changer votre mot de passe ! »
Il m’est arrivé exactement la même chose sur un vieux compte inutile
En regardant les adresses IP des tentatives de connexion, j’ai vu qu’elles venaient de divers FAI du monde entier, la plupart situés sur des réseaux /16 différents
Quand je vois qu’ils mobilisent même des botnets contre ce genre de comptes « inutiles », je m’inquiète encore plus pour les personnes réellement exposées
L’ajout de la 2FA a complètement résolu le problème
Je ne sais toujours pas comment ils ont trouvé à l’origine ce flux de connexion à code à 6 chiffres (chez moi, une fois le mot de passe saisi, la connexion se faisait directement à chaque fois)
En tout cas, depuis l’ajout de la 2FA, je n’ai plus vu la moindre tentative
Je stocke aussi mes codes 2FA dans mon gestionnaire de mots de passe
Je suis ravi qu’ils ne puissent plus attaquer la « loterie de mot de passe » automatique à 6 chiffres de Microsoft (et en plus composée uniquement de chiffres, pas même de lettres)
Le pire, c’est que ce type d’authentification dégrade encore davantage les habitudes et les attentes des utilisateurs
Avec un gestionnaire de mots de passe moderne comme 1password, c’est bien plus simple, plus sûr et plus rapide que les jetons reçus par e-mail
Il suffit juste de faire un peu attention lors de la configuration initiale et de la vérification sur quelques appareils
Comme quand on emménage quelque part et qu’on fait refaire des clés, je pense qu’on n’est tranquille qu’après avoir enregistré le mot de passe dans son gestionnaire puis vérifié que la synchronisation fonctionne sur les autres appareils
Les gens en sont parfaitement capables
Pas besoin de comprendre le chiffrement ni la 2FA : il suffit de cliquer sur « créer un nouveau mot de passe » et d’utiliser le mot de passe aléatoire que l’application enregistre
C’est pareil pour les passkeys, à condition de ne pas les stocker uniquement dans le stockage intégré de l’appareil mais de penser aussi à la sauvegarde et à la récupération
Ironiquement, l’ancienne méthode (saisir son e-mail et son mot de passe) fonctionne même mieux
Le gestionnaire de mots de passe remplit automatiquement les champs tout de suite, donc c’est en pratique bien plus rapide
Les passkeys peuvent être encore plus rapides
Ça me frustre aussi, mais autour de moi, 80 % des personnes qui ne travaillent pas dans l’IT n’y connaissent rien en sécurité et semblent avoir renoncé
Le cas de réussite le plus fréquent que j’ai vu, c’est de noter carrément les informations du compte dans un petit carnet et d’imposer au moins lettres et chiffres dans le mot de passe
Je comprends le problème de ce flux
D’après mon expérience, cette méthode de mot de passe à usage unique est, pour les non-techniciens autour de moi, la forme d’authentification la plus familière après le mot de passe
Dans la petite ville où je vis, les gestionnaires de mots de passe et les passkeys sont au contraire encore plus déroutants, et même si on leur explique en face, ils n’arrivent absolument pas à comprendre
Le modèle mental est trop étranger, et l’UX est trop complexe pour être comprise
Tant qu’on n’aura pas quelque chose que le grand public comprenne intuitivement, les mots de passe et les codes à usage unique « pleins de problèmes » continueront probablement à dominer simplement parce qu’ils sont plus simples
Même avec un vrai bon mot de passe, la récupération de compte « quand on l’a oublié » repose sur le même schéma de code à usage unique
En pratique, un attaquant n’a qu’à faire comme s’il avait « oublié » le mot de passe pour se connecter via ce flux de récupération
Moi aussi, j’utilise une connexion à code à usage unique pour un service que j’ai créé
Mais ce n’est pas un service sensible, donc le but n’est pas de durcir l’authentification
J’appelle d’ailleurs ça un système d’authentification ICGAFAS (« I Couldn't Give A Factor »), assumant d’emblée que je me soucie très peu de la sécurité
L’authentification par e-mail ajoute aussi des contraintes côté administrateur, notamment tout ce qui touche à l’envoi SMTP et à la délivrabilité
Au final, pour éviter la mise sur liste noire ou les filtres antispam, on se retrouve en pratique à devoir utiliser un service relais tiers
Je trouve extrêmement pénible que la plupart des services imposent cette méthode à code à usage unique au lieu de l’habituel e-mail + mot de passe, ou d’une connexion sociale
J’ai juste envie qu’on me laisse utiliser mon mot de passe de 100 caractères
Vous n’êtes pas l’utilisateur cible
Vous faites même partie d’une toute petite minorité très atypique
À long terme, il faut réfléchir à des solutions capables de se connecter à la « majorité »
Je pense qu’un mot de passe très long, comme 100 caractères, n’a pas vraiment d’intérêt
Sa longueur est tronquée en fonction de la longueur de clé réellement utilisée dans le chiffrement sous-jacent
J’ai vérifié dans la documentation NIST si ce type d’authentification est officiellement autorisé (NIST 800-63b section 5.1.2.1)
Si on le considère comme un « Look-up Secret Authenticator », il n’y a pas de problème particulier
À l’origine, cela désignait des codes d’authentification pré-distribués (codes de récupération, etc.), et ici on détourne l’idée pour un envoi en temps réel avec choix unique
Je pense que cette méthode est vulnérable au phishing, mais il est en fait difficile d’affirmer avec certitude qu’elle est plus dangereuse que le schéma classique identifiant/mot de passe
Par exemple, si on demande un code à 6 chiffres envoyé à l’e-mail de l’utilisateur, celui-ci ne peut pas savoir si ce code sert à une vraie connexion ou à une fausse
En revanche, un attaquant peut aussi tromper l’utilisateur avec une page ressemblant à s’y méprendre à celle d’un compte Google pour lui voler ses informations
Au final, je pense que seules les méthodes d’authentification résistantes au phishing représentent vraiment l’avenir
J’ai dû supprimer mon compte gofundme parce qu’aujourd’hui je suis soudain tombé dans ce cycle d’authentification
J’utilisais ce compte depuis des années et j’y avais fait des dons, mais désormais ils exigent obligatoirement un numéro de téléphone et un code MFA sans offrir d’option pour refuser
J’ai donc suivi toute la procédure, puis désactivé le compte
Je considère que ce type d’authentification est inutile dans ma vie, je peux très bien vivre sans gofundme
En ce moment je cherche un logement, et l’application Zillow fait pareil : elle exige une connexion, et il faut une MFA à chaque fois pour lire les messages reçus
La session expire au bout d’une heure
J’en ai ras le bol de ce genre d’authentification
C’est un monde complètement fou
Ticketmaster fait quelque chose de similaire
Ils n’acceptent pas les numéros Google Voice, uniquement les numéros liés à une SIM
Mon numéro SIM n’est pourtant qu’un « détail d’implémentation » qui change souvent, mais aujourd’hui il est impossible de se connecter au compte sans ce numéro
En conséquence, il faut soit renoncer à ce type de billetterie, soit accepter le risque de se retrouver verrouillé hors de son compte à chaque changement de SIM
Google a activé la 2FA sur mon compte de son propre chef, et comme le numéro de téléphone enregistré est un ancien, je suis complètement verrouillé hors du compte
Quand un service change sans prévenir le mot de passe et le second facteur, on peut perdre définitivement l’accès si l’on voyage sans le téléphone lié au compte
La plupart des services considèrent le second facteur comme plus sûr que mon mot de passe aléatoire de 20 caractères (stocké dans un gestionnaire local)
Pourtant, ce second facteur revient souvent à de simples moyens assez médiocres, comme un SMS en clair ou un e-mail en clair
J’ai lu cette phrase quatre fois sans la comprendre
Une explication du type : « si un attaquant envoie l’adresse e-mail de l’utilisateur à un service légitime et demande un code à 6 chiffres, l’utilisateur ne peut pas savoir si ce code correspond à une vraie tentative de connexion »