web-dev-qa-db-fra.com

Les sites 2FA divulguent-ils des informations en confirmant une supposition de mot de passe correcte?

Voici le point de vue de mon relativement profane sur la question.

De nombreux sites Web présentent l'authentification multifacteur (MFA) comme un énorme coup de pouce à la sécurité des comptes des utilisateurs, et elle peut être si elle est correctement mise en œuvre .

Cependant, il semble que certains sites ne demandent à l'utilisateur que leur MFA [~ # ~] après que [~ # ~] ils ont correctement entré leur mot de passe. Je n'ai testé cela qu'avec gmail.com et Outlook.com , mais étant donné qu'il s'agit de deux énormes fournisseurs de messagerie, j'imagine qu'ils ne sont que deux des nombreux auteurs.

La raison pour laquelle c'est (au moins à première vue) une énorme faille de sécurité est qu'elle peut permettre aux crackers de deviner le mot de passe d'un utilisateur jusqu'à ce qu'ils reçoivent l'invite pour MFA, auquel cas ils savent qu'ils ont le mot de passe de l'utilisateur. Il semble que les sites Web balayeront cela en disant: "Mais puisque l'utilisateur a MFA, le pirate ne peut pas accéder à son compte."

Ce qu'ils semblent oublier, c'est que l'utilisateur a probablement des comptes sur d'autres sites Web et utilise très probablement le même mot de passe pour ce site. Alors maintenant, le pirate peut avoir accès à tous les comptes de l'utilisateur sur le Web, dont beaucoup n'ont probablement pas MFA implémenté, laissant l'utilisateur complètement vulnérable aux attaques.

Y a-t-il des failles dans mon argument ou mes hypothèses qui feraient de cela un non-problème? Sinon, pourquoi de grandes entreprises comme Google et Microsoft ne résolvent-elles pas ce problème?

63
Ben Sandeen

Si je comprends bien votre question, l'attaque que vous proposez est de forcer les mots de passe contre un serveur comme celui-ci, puis une fois qu'il vous montre l'écran MFA, essayez ce mot de passe sur d'autres sites Web sur lesquels cet utilisateur a des comptes.

C'est une excellente question! Bonne trouvaille! Mais vous semblez ignorer deux points:

  1. Ce n'est pas plus faible que de ne pas avoir MFA, ce qui confirme également le mot de passe correct ... en vous laissant entrer.

  2. Aucun hacker sensé ne tentera de forcer un mot de passe par brute contre un serveur en direct, ce qui vous limite généralement à aimer 5 suppositions par seconde. Ou dans le cas des grands fournisseurs comme GMail ou Outlook, ont des systèmes de détection de fraude complexes qui bloquent automatiquement IP des activités suspectes. 99,999 ...% du temps, le forçage brut des mots de passe est effectué contre les hachages de mots de passe volés directement dans la base de données sur laquelle vous pouvez deviner (m | b) des illions de mots de passe par seconde.

Donc, même si je suis d'accord avec vous qu'il y a un risque de fuite de données ici, je pense que le risque est minime, et largement compensé par l'inconvénient de l'utilisateur d'avoir à tâtonner avec son porte-parole OTP juste pour découvrir qu'il a typé son mot de passe .


Mettre à jour les commentaires d'adressage car cela est devenu une question d'actualité sur le réseau:

Il existe deux types d'authentification multifacteur (alias "2FA" ou "MFA") qui doivent vraiment être considérés séparément:

  1. SMS ou Push Notification 2FA: lorsque vous arrivez à l'écran 2FA, il envoie à votre appareil un code que vous devez taper. Pour de nombreux utilisateurs, c'est probablement le seul type de 2FA que vous avez été exposé à. L'attaque décrite dans la question ne fonctionnera pas dans ce cas car l'utilisateur recevra un code 2FA qu'il n'a pas demandé et il saura que quelque chose ne va pas. De plus, faire l'étape 2FA même si le mot de passe est correct est en fait nuisible dans ce cas car:

    • Un attaquant pourrait potentiellement faire en sorte que l'utilisateur obtienne une énorme facture mensuelle/SMS facture, ou planter son appareil en remplissant sa mémoire de notifications.
    • Il révèle également quels utilisateurs ont activé 2FA et qui sont des cibles faciles.
  2. 2FA "hors ligne" utilisant des jetons, des applications ou des cartes à puce/clés USB activées par clé publique (voir l'image ci-dessous). C'est le type de 2FA que le gouvernement, l'armée et les entreprises utilisent. Ainsi, bien qu'il soit moins visible pour les utilisateurs finaux, c'est de loin le type le plus important de 2FA en raison de la valeur des données qu'il protège. Dans ce cas, il n'y a pas de notification "intégrée" à l'utilisateur lorsqu'un attaquant atteint son écran 2FA. Et généralement, tous les utilisateurs sont tenus d'utiliser 2FA, il n'y a donc aucun mal à divulguer quel utilisateur a activé 2FA, car ce sont tous.

Imaginez ce scénario pour le cas 2: un VPN d'entreprise qui se trouve au-dessus de Windows Active Directory. Les VPN publics sont martelés toute la journée par les devineurs de mots de passe, il n'y a donc rien d'inhabituel dans ces journaux. Mais si je peux faire confirmer le mot de passe de l'utilisateur par l'écran 2FA du VPN, alors je peux marcher jusqu'à leur ordinateur portable et me connecter en toute confiance qu'il ne verrouillera pas le compte Windows - ce qui serait certainement remarqué par l'utilisateur/l'informatique. La question signale correctement une faille de sécurité selon laquelle le modèle "arrivé à l'écran 2FA et n'a rien entré/entré quelque chose de incorrect" devrait certainement être signalé comme plus sévère que votre "nom d'utilisateur/mot de passe incorrect" standard et devrait informer l'utilisateur final de retirer son mot de passe.

118
Mike Ounsworth

Je pense que ce n'est pas un problème. L'authentification multifacteur ne consiste pas à empêcher quelqu'un de deviner votre mot de passe, mais à empêcher quiconque de se connecter à vos comptes.

12
Benoit Esnard

Alors maintenant, le pirate peut avoir accès à tous les comptes de l'utilisateur sur le Web, dont beaucoup n'ont probablement pas MFA implémenté, laissant l'utilisateur complètement vulnérable aux attaques.

Un attaquant n'essaiera pas de deviner un mot de passe sur Google qu'il n'essaiera pas non plus pour la banque, Facebook ou autres. Ce n'est pas parce qu'il a été divulgué qu'il s'agit d'un mot de passe valide que l'attaquant n'est pas plus près de compromettre d'autres comptes. Le mot de passe deviné devait provenir d'un berceau de suppositions à haute probabilité, car une véritable force brute ne fonctionnera jamais sur un système en direct.

Si vous pouviez démontrer que les sites utilisant 2FA ont de meilleurs algorithmes anti-devinettes (je parierais qu'ils sont au moins aussi bons sinon meilleurs) par rapport aux sites qui n'offrent pas 2FA, votre argument serait valable car un attaquant pourrait en abuser un et pivoter vers l'autre. En réalité, l'inverse est probablement vrai, les sites qui investissent dans 2FA investissent également dans des systèmes anti-devinettes en même temps.

9
Jeff Meden

En théorie, oui, c'est une possibilité (à condition que le site implémentant 2FA ne dispose d'aucune limitation de taux ou détection de fraude d'aucune sorte, comme indiqué par les autres réponses).

En pratique, il y a aussi le facteur de convivialité à considérer. Imaginez que vous avez créé un formulaire de connexion qui invite un utilisateur pour 2FA à chaque tentative de connexion, indiquant uniquement à l'utilisateur que la tentative a échoué après l'étape 2FA, et ne jamais leur dire si c'était le mot de passe ou le jeton 2FA qui n'était pas valide.

2FA est déjà une énorme douleur dans le cou pour commencer - chaque fois que je me connecte, je dois non seulement taper mon nom d'utilisateur et mon mot de passe, mais trouver mon téléphone (qui pourrait être dans une autre pièce), le déverrouiller, aller sur mon l'écran d'accueil, trouver mon application 2FA et trouver le bon site dans la liste. Ensuite, le code est inévitablement à cinq secondes de l'expiration, donc je dois soit attendre qu'un nouveau apparaisse, soit essayer de le taper très rapidement avant son expiration.

(Les systèmes 2FA qui utilisent des SMS ou des notifications Push sont meilleurs à cet égard, car ils apparaissent sur ma smartwatch - ou, dans le cas d'un utilisateur qui ne possède pas de smartwatch, leur écran de verrouillage. Dans le schéma, nous envisagez, cependant, cela permettrait à un utilisateur de m'ennuyer avec des notifications/SMS sans fin tant qu'il connaît mon nom d'utilisateur, car il n'a pas à obtenir mon mot de passe pour déclencher une tentative 2FA. J'ai également entendu dire que dans certains pays, les opérateurs de téléphonie vous facturent pour la réception de SMS messages, donc dans ces endroits, ce genre de choses serait encore pire pour les utilisateurs.)

Si vous incitez vos utilisateurs à traverser tout cela deux fois lorsqu'ils se trompent de mot de passe, l'ensemble du processus deviendra beaucoup plus pénible, et vous pourriez même vous retrouver avec moins de personnes utilisant 2FA, ce qui rendra vos utilisateurs moins sécurisé en moyenne.

6
Leigh Brenecki

Pour les systèmes où 2FA/MFA est "facultatif" tels que Gmail ou Outlook.com, le service doit équilibrer le facteur de tracas de l'utilisation de la méthode à 2 facteurs et la sécurité qu'il apporte sur leur site. Dans un monde parfait, les utilisateurs auraient des mots de passe complexes et uniques pour chaque site, et utiliseraient toujours 2FA lorsqu'ils sont disponibles, mais dans le monde réel, vous avez raison - les utilisateurs auront le même mot de passe sur une douzaine de sites et un facteur 2 un mécanisme qui ne verrouille pas automatiquement le compte et n'informe pas l'utilisateur après quelques tentatives de connexion non valides dans une fenêtre relativement petite pourrait conduire à une situation où l'attaquant essaie patiemment quelques suppositions probables jusqu'à ce qu'il arrive à l'invite 2FA, auquel cas il sachez qu'ils ont une combinaison nom d'utilisateur + mot de passe valide. Avec toutes les compromis de la base de données de mots de passe hautement publics sur les grands sites (tels que LinkedIn, entre autres) qui utilisent votre adresse e-mail comme connexion, un attaquant peut logiquement deviner le mot de passe d'un utilisateur relativement facilement si l'utilisateur n'a jamais pris la peine de mettre à jour d'autres sites , mais juste celui qui a été "craqué".

Pour les applications critiques pour la sécurité (comme l'une des nombreuses sur lesquelles je travaille), l'invite de connexion nécessite un nom d'utilisateur, un mot de passe et une valeur à 2 facteurs à la fois, et c'est une authentification "tout ou rien", et nous ne vous le disons pas POURQUOI votre connexion a échoué, à moins que ce ne soit parce que votre mot de passe a expiré (ce qui suppose que vous avez entré le mot de passe correct, mais il vous faudra simplement le changer et le saisir à nouveau avec une autre valeur 2FA pour accéder réellement à l'application). Cette application a une base d'utilisateurs "captive" et la 2FA est requise par la politique, elle n'est donc pas directement comparable aux sites "2FA facultatifs" que vous avez mentionnés dans le PO.

Fondamentalement, cependant, je suis d'accord avec les commentaires ci-dessus qu'un "jeton à la demande" est plus sûr qu'un jeton "hors ligne" (comme RSA ou Google Authenticator) si vous allez faire l'authentification en 2 étapes parce que l'utilisateur sachez immédiatement que quelqu'un essaie d'accéder à son compte en raison des messages inattendus SMS, soit "mot de passe erroné", soit une chaîne valide à 2 facteurs au cas où l'attaquant obtiendrait le bon résultat. Si le site envoie UNIQUEMENT la valeur SMS à 2 facteurs lors de la connexion réussie, alors c'est inutile pour le point que vous mentionnez, pour informer l'utilisateur AVANT que l'attaquant n'obtienne réellement le mot de passe correct. L'utilisateur ne obtenir la chaîne valide à 2 facteurs lorsque l'attaquant avait le bon mot de passe. À ce moment-là, il est probablement trop tard, et l'attaquant est déjà en train d'essayer la même combinaison nom d'utilisateur + mot de passe sur d'autres sites qui n'ont pas 2FA et l'utilisateur le ferait doivent être à un ordinateur et se démener pour changer chaque mot de passe sur chaque site sur lequel ils l'utilisent, qui s'ils réutiliser le même mot de passe partout, est quasiment impossible car ils ne s'en souviendront pas tous.

En fin de compte, c'est à l'implémentation individuelle de déterminer à quel point un 2FA peut être dommageable pour autres sites utilisés par le même utilisateur. Dans le meilleur des cas, c'est une connexion tout-en-un comme je l'ai décrit, où l'attaquant devrait également avoir en quelque sorte son appareil 2FA ou sa "chaîne magique" (jeton d'initialisation pour quelque chose comme Google Authenticator), et s'ils l'ont aussi , l'utilisateur a déjà été bien compromis.

2
Benjamin_FTW