Le malware Cerberus est désormais capable de récupérer les codes de vérification 2FA générés par Google Authenticator. Mais ce n’est pas le seul problème de fiabilité concernant la double authentification sur smartphone. Le 2FA est-il vraiment sécurisé ?
La vérification en deux étapes, également connue sous les termes de double authentification (2FA), consiste à renforcer l’authentification d’un utilisateur lorsqu’il accède à un service. Pour cela, on ne demande pas une, mais deux preuves distinctes d’authentification. L’exemple le plus commun de double authentification est le retrait d’argent à un distributeur automatique bancaire : l’utilisateur doit à la fois présenter sa carte bancaire et le code PIN, que lui seul connaît (normalement). On utilise également massivement cette méthode 2FA avec nos smartphones, grâce à des applications dédiées.
Deux chercheurs en sécurité, Aaron Turner et Georgia Weidman, ont profité de la conférence RSA de San Francisco pour démontrer que la double authentification n’était pas si fiable que ça, en particulier lorsqu’on utilise Google Authenticator sur un vieux smartphone dont le système d’exploitation (iOS ou Android) n’est pas à jour. Cerise sur le gâteau, la dernière version d’un malware baptisé Cerberus s’attaque justement à ce même Google Authenticator pour en dérober les clés de sécurité, voire pour prendre le contrôle du smartphone.
En bref, le seul système d’authentification recommandé par les deux chercheurs en sécurité reste les appareils d’authentification matérielle tels que la Yubikey ou la clé Google Titan. Bonne nouvelle, celle-ci est disponible en France depuis quelques mois.
La double authentification, une fonctionnalité largement répandue
De nombreux sites et services en ligne utilisent ce système de vérification en deux étapes, souvent en faisant appel à une application dédiée sur smartphone qui se charge de générer des codes éphémères de validation 2FA, calculés à partir d’une clé numérique propre à l’utilisateur. Parmi les logiciels de ce type les plus connus, on peut citer Google Authenticator, Microsoft Authenticator , 1Password, andOTP, Authy ou encore LastPass Authenticator. Pour s’authentifier, l’utilisateur va donc rentrer son identifiant/mot de passe, et ce code éphémère.
Microsoft Authenticator ajoute le support pour smartphones Android et iOS
Dans le cas de Google Authenticator, l’un des logiciels d’authentification en deux étapes les plus utilisés, la clé numérique secrète mesure par exemple 80 bits. Une signature numérique de type HMAC-SHA1 est ensuite calculée par l’application à partir de cette clé secrète et de l’epoch Unix (TOTP, RFC 6238) ou d’un compteur incrémenté à chaque nouveau code généré (HOTP, RFC 4226), puis une partie de cette signature numérique est convertie en chiffres. En pratique, ces chiffres changent toutes les 30 secondes.
Certaines applications implémentent mal les normes derrière le 2FA
Les problèmes de fiabilité qui concernent la double authentification ne sont pas réellement à chercher du côté de la méthode elle-même, plutôt robuste, mais de l’implémentation qu’il en est faite par les différents logiciels, ainsi que des faiblesses des plateformes sur lesquelles tournent ces applications. L’utilisateur lui-même peut également être considéré comme un “maillon faible” de la chaine de sécurité.
En reprenant l’exemple de Google Authenticator, on se rend compte que l’implémentation de la norme RFC 4226 exige par exemple une clé secrète d’une longueur de 128 bits, et recommande une longueur de 160 bits. Or, on a vu plus haut que cette application utilise une clé secrète de “seulement” 80 bits. De plus, Google Authenticator utilise par défaut les paramètres de base suggérés par la RFC 6238 (pas de 30 secondes, hash HMAC-SHA1, …). Il devient dès lors théoriquement possible de mener une attaque par force brute, ce que des logiciels de récupération de mots de passe comme Hashcat proposent justement.
Les applications de double authentification, aussi (peu) fiables que l’appareil sur lequel elles tournent
Les deux chercheurs en sécurité mettent en garde contre les risques d’utiliser des applications de double authentification sur des smartphones âgés fonctionnant sur de vieilles versions d’Android ou d’iOS. Un avertissement inquiétant quand on sait qu’en 2019, 60% des appareils fonctionnant sous Android ne bénéficiaient pas de la dernière version du système d’exploitation de Google. Autrement dit, une application 2FA affichera au mieux le même niveau de fiabilité que celui du système d’exploitation (et de sa version) tournant sur le smartphone.
En pratique, un malware pourrait utiliser une ou plusieurs failles de sécurité présentes dans le kernel d’une ancienne version d’Android ou d’iOS pour se faire passer pour une application de vérification à deux étapes, voire pour directement intercepter le code affiché par une véritable application. Pour illustrer leurs propos, les deux chercheurs ont démontré la faisabilité d’une telle attaque lors de leur présentation, en récupérant les clés d’encodage d’un ancien iPhone.
Détail amusant, les appareils sous iOS ne seraient pas plus sécurisés que ceux sous Android. Secure Enclave offre bien une sécurité plus élevée, mais les applications 2FA n’en tirent pas parti. Le kernel SELinux d’Android en ferait un meilleur choix. Au passage, cela confirme le fait qu’un smartphone Android rooté devient de facto moins sécurisé…
Le malware Cerberus à l’attaque de la double authentification
C’est d’ailleurs globalement ce que réalise la dernière version du malware Cerberus apparue en janvier. Initialement conçu pour récupérer le code déverrouillage du smartphone, prendre son contrôle ou même télécharger des contenus de manière invisible, il lui est désormais possible de détecter et voler les codes générés par l’application 2FA Google Authenticator en utilisant les fonctionnalités d’accessibilité d’Android.
Selon l’équipe de chercheurs en sécurité de chez Threatfabric, cette nouvelle version de Cerberus est encore en phase de test, et donc pas encore largement diffusée. Mais sauf si Google corrige son application 2FA, le nombre de victimes ne devrait que croitre. Reste également le risque que Cerberus soit de nouveau modifié et amélioré dans les semaines à venir pour s’attaquer à d’autres applications de double authentification.
Des alternatives au 2FA pas forcément meilleures
Bien sûr, utiliser une application de double authentification est toujours mieux que de ne rien utiliser du tout. Aaron Turner et Georgia Weidman recommandent tout de même d’utiliser exclusivement un smartphone sous Android 9 ou 10 (Pixel 3 ou plus récent de préférence) ou Android One. Ils déconseillent en revanche d’utiliser un smartphone Samsung. Côté iPhone, ils recommandent d’utiliser un appareil acceptant iOS 13, et un iPhone 8 ou plus récent. Seuls les iPhone 11 et XS restent toutefois invulnérables à la faille checkm8.
Une faille impatchable permet le jailbreak de quasiment tous les iPhone
L’authentification biométrique pourrait être une solution alternative, mais les deux chercheurs restent pessimistes à ce sujet, d’autant que ce type d’authentification n’est pas révocable : difficile en effet de changer de visage ou d’empreintes digitales si ceux-ci sont compromis. Et gardez en mémoire qu’il est “facile” de se faire couper un doigt…
Source : RSA Conference 2020 (Aaron Turner & Georgia Weidman)