L’authentification multifacteur (abrégé MFA pour multifactor authentication) est un mécanisme central qui permet de renforcer la sécurité des comptes et des accès utilisateurs sur un système.
En effet, c’est une méthode d’authentification qui permet de prévenir de nombreuses attaques et exploitations malveillantes visant la compromission de données : brute force, détournement de session, élévation de privilèges, etc.
Cependant, des erreurs d’implémentation et de configuration facilitent très souvent le contournement de ce type de processus de sécurité. Aussi, les utilisateurs peuvent être piégés via diverses techniques d’ingénierie sociale et ainsi permettre à des attaquants de bypasser une authentification multifacteur.
En quoi consiste l‘authentification multifacteur ? Au-delà des principes et du fonctionnement de ce type de process, nous détaillerons dans cet article les attaques et exploitations courantes ainsi que les bonnes pratiques pour renforcer la sécurité d’une authentification multifacteur.
En quoi consiste l’authentification multifacteur ou MFA ?
La plupart du temps, une authentification sur un système (application web, réseau, etc.) est réalisée via un compte utilisateur (généralement composé d’un identifiant et d’un mot de passe). Ce process permet de prouver l’identité d’un utilisateur et de lui attribuer des droits sur ce système.
Pour renforcer la sécurité des accès, le processus peut demander d’autres éléments de preuves, appelés facteurs, afin de confirmer l’identité d’un utilisateur. On parle alors d’authentification multifacteur. De plus en plus utilisé sur de nombreux systèmes critiques (applications SaaS, systèmes de paiement, etc.), un MFA consiste en effet à exiger des utilisateurs deux facteurs ou plus lors de l’authentification. Ainsi, et comme son nom l’indique, un 2FA, pour Two Factor Authentication nécessitera exactement deux facteurs de types différents.
Par ailleurs, la notion « d’authentification forte » est souvent utilisée pour parler de l’authentification multifacteur, ce qui est un abus de langage. En effet, l’authentification forte repose sur un protocole cryptographique qui doit permettre de résister à certains types d’attaques, tandis que l’authentification multifacteur indique uniquement que plusieurs catégories de facteurs sont utilisées.
Quels sont les principaux types de facteurs d’authentification ?
Plusieurs types de facteurs peuvent être utilisés pour une authentification multifacteur :
- Des facteurs de connaissance : mot de passe, code confidentiel, etc.
- Des facteurs physiques : smartphone, badge, clé USB, etc.
- Des facteurs biologiques : empreinte digitale, reconnaissance faciale ou vocale, etc.
- Des facteurs de localisation : connexion réseau, position géographique, etc.
Plus concrètement, un MFA peut prendre la forme d’une notification push sur téléphone, un code à usage unique envoyé par SMS, un code temporaire généré par une application, une clé USB, etc.
Pourquoi implémenter une authentification multifacteur ?
Entre les bases de données d’identifiants/mots de passe en vente sur le dark web, le brute force, l’ingénierie sociale, etc., les attaques sur l’authentification prennent de multiples formes.
Pour prévenir ces risques, l’implémentation d’un mécanisme d’authentification multifacteur reste la solution idéale. En effet, c’est une mesure indispensable pour contrer de nombreuses attaques. Cependant, elle ne doit pas être perçue comme la garantie d’une protection absolue, car, comme pour tout mécanisme, en cas d’erreurs d’implémentation ou de configuration, une authentification multifacteur peut être contournée. De plus, les utilisateurs peuvent être piégés et permettre involontairement aux attaquants de contourner le processus MFA.
Quelles sont les attaques et exploitations courantes des processus d’authentification multifacteur ?
Plusieurs techniques peuvent être utilisées pour contourner une authentification multifacteur. Entrons dans le vif du sujet avec les attaques et les exploitations les plus courantes, ainsi que les bonnes pratiques pour réduire les risques.
Brute force de facteurs d’authentification
L’attaque la plus courante contre les processus d’authentification multifacteur reste le brute force. Prenons par exemple le cas d’un mécanisme d’authentification avec comme second facteur un code à 4 chiffres temporaire, généré aléatoirement puis envoyé par SMS.
Pour un attaquant, il s’agira de déterminer, en premier lieu, si le système intègre une limite d’essais ou un délai après chaque échec de connexion.
Dans ce cas, rencontré lors d’un pentest, un système de rate limiting était bien présent et bloquait notre IP suite à 3 échecs de connexion. Néanmoins, il nous a été possible d’utiliser différents outils pour changer notre IP et continuer notre brute force pour deviner le code temporaire d’un utilisateur, dans le temps imparti qui était ici de 30 minutes.
Ce bypass d’authentification a été possible pour deux raisons :
- Un code à 4 chiffres, même s’il est généré de façon aléatoire, peut être deviné facilement et rapidement. Il est donc nécessaire de générer un code suffisamment long et aléatoire pour réduire le risque.
- Une limite de tentatives de connexion est essentielle. Cependant, la mise en œuvre d’un délai après chaque échec de connexion aurait été le mécanisme bloquant pour craquer le code second facteur.
Détournements de sessions et vols de comptes
Pour limiter les frictions liées à une authentification multifacteur, de nombreuses applications web intègrent une fonction « Se souvenir ». La plupart du temps, cette fonctionnalité est implémentée via un cookie ou un token de session.
Lorsque nous rencontrons ce cas, nous observons si le cookie est incrémental ou s’il suit une construction logique qui nous permettrait de le deviner ou de le créer. Par ailleurs, le cookie doit avoir l’attribut httpOnly
pour complexifier l’exploitation de failles XSS.
De plus, la procédures de réinitialisation des mots de passe est un aspect critique qui doit être bien implémenté et testé. En effet, il peut arriver que certaines procédures reconnectent directement un utilisateur suite à la création d’un nouveau mot de passe, et ce sans demander le second facteur initialement activé pour confirmer son identité.
De la même manière, il est parfois possible de désactiver une authentification multifacteur sans connaitre le second facteur car le système ne le demande tout simplement pas.
Manipulation de requêtes et de réponses
En interceptant le trafic pour analyser le fonctionnement d’un système d’authentification, il est possible de réaliser différents tests.
Tout d’abord, il s’agit de tester la modification du code de statut d’une réponse. Par exemple, de success=false
à success=true
ou HTTP/1.1 422 Unprocessable Entity
à HTTP/1.1 200 OK
. Dans certains cas, il peut être possible de contourner l’authentification via cette méthode.
Parfois, le processus d’authentification peut vérifier uniquement la validité du second facteur, et renvoyer dans la requête le résultat de cette vérification. Dans ce cas de figure, il pourrait être possible de modifier le contenu de la réponse avec le bon paramètre pour accéder à un compte. En effet, lors de tests nous avons rencontré un cas où un paramètre 2FA pouvait être retiré de la requête, ce qui nous a permis de nous authentifier.
Attaques d’ingénierie sociale
Pour contourner les processus d’authentification multifacteur, les attaquants s’appuient sur de nombreuses techniques d’ingénierie sociale. En effet, même le système le plus sécurisé est obsolète si les utilisateurs ne sont pas sensibilités aux risques de phishing, vishing, etc.
Le phishing associé à l’AitM ou Adversary In the Middle
L’Adversary in the middle (abrégé AiTM) est une technique qui consiste à envoyer un email de phishing contenant un lien vers un clone d’interface.
L’objectif de l’attaquant est de se positionner entre un utilisateur et un site légitime pour intercepter le trafic avec l’aide d’un proxy. En cas de clic, l’utilisateur sera redirigé vers une page clone du site légitime, disons une page d’authentification avec plusieurs facteurs en place.
Le site cloné affichera les mêmes interfaces lors des différentes étapes de l’authentification MFA et l’utilisateur fournira ses informations correctes. L’objectif est de récupérer le cookie de session transmis suite à l’authentification réussie et de l’utiliser pour se connecter.
Cette technique d’attaque peut fonctionner pour tous les types d’authentification multifacteur. Elle est très facile à réaliser, car il existe des frameworks permettant facilement de mettre en place le proxy.
Pour s’en protéger, la sensibilisation des utilisateurs est cruciale. Un pentest d’ingénierie sociale peut servir ce propos. De plus, il peut être intéressant d’envisager des règles d’accès conditionnel (critère de localisation, appareil autorisé, etc.) ou de passer à une authentification avec un facteur physique (une clé USB par exemple), pour des systèmes très critiques par exemple, car un attaquant ne pourra pas le récupérer à distance.
Attaques par voice phishing (vishing)
Le voice phishing est une variante du phishing. Il s’agit pour un attaquant d’appeler une cible dans l’objectif de lui faire réaliser une action : divulger des informations sensibles, cliquer sur un lien, télécharger une pièce jointe, etc.
Pour parvenir à ses fins, l’attaquant créera une histoire « crédible », qui le sera encore plus s’il parvient à usurper un numéro de téléphone.
Prenons par exemple le cas d’un scénario de vishing que nous avons réalisé pour contourner une authentification multifacteur lors d’un pentest :
- Dans le cadre de tests en boite noire (sans informations préalables en amont), après une phase de reconnaissance et l’identification de profils cibles sur LinkedIn, nous avons appelé quelques contacts.
- Le prétexte : étant du service IT, nous devions mettre à jour « en urgence » le VPN utilisé dans l’entreprise, en raison d’une faille de sécurité qui « pourrait causer des dégâts » si cela n’était pas fait rapidement.
- La requête (quelques peu formalisé sous forme d’injonction) était la suivante : nous avions besoin « rapidement » du mot de passe et du second facteur de « chacun des membres de l’équipe » (ici un code envoyé par SMS) pour réaliser cette mise à jour et ainsi garantir la sécurité de chaque poste de travail.
- Même si la demande peut (et doit) apparaître comme « lunaire » à des profils techniques ou des personnes sensibilisées aux attaques d’ingénierie sociale, nous avons usé de malice pour parvenir à nos fins. En effet, nous avons réussi à obtenir ce que nous voulions en nous appuyant sur des ressorts psychologiques humains naturels (urgence, sentiment d’appartenance à un groupe, envie d’aider, crainte, etc.), en ciblant des profils moins techniques (à des postes clés) et moins sensibilisés aux risques en apparence (et en réalité).
Attaques MFA Push bombing ou Push spam
Pour contourner une authentification 2FA, un attaquant peut spammer sa cible de notifications push.
C’est notamment la méthode qui a permis à des attaquants de compromettre Cisco, Twilio, Uber entre mai et août 2022. Comme détaillé dans les rapports d’incidents de Cisco ou de Twilio, les attaquants ont tout d’abord obtenu les identifiants d’un compte email d’une cible. Ils ont ensuite réussi à contourner l’authentification multifacteur en la spammant avec de très nombreuses sollicitations via du phishing, jusqu’à ce qu’elle valide la notification.
Cette technique tire parti de la Push Fatigue ou Push spam. En effet, les notifications étant très fréquentes, elles créent une lassitude chez la personne ciblée et donc une baisse de l’attention.