Logo Zéphyrnet

Méfiez-vous des applications 2FA malveillantes dans l'App Store et Google Play - ne vous faites pas pirater !

Date :

Grâce au Tommy Mysk ainsi que Talal Haj Bakri of @mysk_co pour l'impulsion et les informations derrière cet article. Le duo se décrit comme "deux développeurs iOS et des chercheurs occasionnels en sécurité sur deux continents". En d'autres termes, bien que la cybersécurité ne soit pas leur cœur de métier, ils font ce que nous souhaitons que tous les programmeurs fassent : ne pas prendre pour acquis les fonctionnalités de sécurité des applications ou du système d'exploitation, mais garder un œil sur la façon dont ces fonctionnalités fonctionnent dans la vie réelle, afin d'éviter de trébucher sur les erreurs et les suppositions des autres.
L'image présentée ci-dessus est basée sur l'un de leurs tweets, que vous pouvez voir en entier ci-dessous.

Twitter récemment annoncé qu'il ne pense plus que l'authentification à deux facteurs (2FA) basée sur SMS soit suffisamment sécurisée.

Ironiquement, comme nous l'avons expliqué la semaine dernière, les utilisateurs mêmes pour lesquels vous penseriez que ce changement serait le plus important sont les utilisateurs Twitter de « niveau supérieur » - ceux qui paient pour un badge bleu Twitter pour leur donner plus de portée et leur permettre de envoyer des tweets plus longs…

… mais ces utilisateurs payants seront autorisés à continuer à utiliser des messages texte (SMS) pour recevoir leurs codes 2FA.

Le reste d'entre nous doit passer à un autre type de système 2FA dans les trois prochaines semaines (avant le vendredi 2023-03-17).

Cela signifie utiliser une application qui génère une séquence secrète «ensemencée» de codes à usage unique, ou utiliser un jeton matériel, tel qu'un Yubikey, qui effectue la partie cryptographique de la preuve de votre identité.

Clés matérielles ou codes basés sur des applications ?

Les clés de sécurité matérielles coûtent environ 100 $ chacune (nous nous basons sur le prix approximatif de Yubikey pour un appareil avec protection biométrique basée sur votre empreinte digitale), ou 50 $ si vous êtes prêt à opter pour le type moins sécurisé qui peut être activé par le toucher du doigt de quelqu'un.

Nous sommes donc prêts à supposer que toute personne ayant déjà investi dans un jeton de sécurité matériel l'aura fait exprès et n'en aura pas acheté un pour le laisser traîner à la maison.

Ces utilisateurs auront donc déjà abandonné la 2FA basée sur les SMS ou sur les applications.

Mais tout le monde, nous le devinons, tombe dans l'un des trois camps :

  • Ceux qui n'utilisent pas du tout 2FA, car ils considèrent cela comme un tracas supplémentaire inutile lors de la connexion.
  • Ceux qui ont activé l'A2F par SMS, parce qu'il est simple, facile à utiliser et fonctionne avec n'importe quel téléphone mobile.
  • Ceux qui ont opté pour la 2FA basée sur une application, parce qu'ils étaient réticents à donner leur numéro de téléphone ou avaient déjà décidé de passer du SMS 2FA.

Si vous êtes dans le deuxième camp, nous espérons que vous n'abandonnerez pas simplement 2FA et que vous le laisserez expirer sur votre compte Twitter, mais que vous passerez à une application pour générer ces codes à six chiffres à la place.

Et si vous êtes dans le premier camp, nous espérons que la publicité et le débat autour du changement de Twitter (a-t-il vraiment été fait pour des raisons de sécurité, ou simplement pour économiser de l'argent sur l'envoi d'autant de SMS ?) seront l'impulsion dont vous avez besoin pour adoptez 2FA vous-même.

Comment faire du 2FA basé sur une application ?

Si vous utilisez un iPhone, le gestionnaire de mots de passe intégré à iOS peut générer pour vous des codes 2FA, pour autant de sites Web que vous le souhaitez, vous n'avez donc pas besoin d'installer de logiciel supplémentaire.

Sur Android, Google propose sa propre application d'authentification, appelée sans surprise Authentificateur Google, que vous pouvez obtenir sur Google Play.

L'application complémentaire de Google fait le travail de générer les séquences de code de connexion uniques nécessaires, tout comme celle d'Apple Paramètres > mots de passe utilitaire sur iOS.

Mais nous allons supposer qu'au moins certaines personnes, et peut-être beaucoup, se seront très raisonnablement demandé, "Quelles sont les autres applications d'authentification disponibles pour que je n'aie pas à mettre tous mes œufs de cybersécurité dans le panier d'Apple (ou de Google) ?"

De nombreuses entreprises réputées (dont Sophos, soit dit en passant, pour les deux iOS ainsi que Android) fournissent des utilitaires d'authentification gratuits et fiables qui feront exactement ce dont vous avez besoin, sans fioritures, frais ou publicités, si vous avez naturellement envie d'utiliser une application 2FA qui ne provient pas du même fournisseur que votre système d'exploitation.

En effet, vous pouvez trouver une gamme étendue et tentante d'authentificateurs simplement en recherchant Application d'authentification dans Google Play ou l'App Store.

L'embarras du choix

Le problème est qu'il existe un nombre improbable, voire impondérable, d'applications de ce type, toutes apparemment approuvées pour leur qualité par leur acceptation dans les «jardins clos» officiels d'Apple et de Google.

En fait, les amis de Naked Security @mysk_co vient de nous envoyer un e-mail pour nous dire qu'ils étaient eux-mêmes partis à la recherche d'applications d'authentification et qu'ils étaient quelque part entre surpris et choqués par ce qu'ils ont trouvé.

Tommy Mysk, co-fondateur de @mysk_co, l'a dit clairement et simplement dans un e-mail :

Nous avons analysé plusieurs applications d'authentification après que Twitter ait arrêté la méthode SMS pour 2FA. Nous avons vu de nombreuses applications frauduleuses se ressembler presque. Ils incitent tous les utilisateurs à souscrire un abonnement annuel pour 40 $/an. Nous en avons attrapé quatre qui ont des binaires presque identiques. Nous avons également détecté une application qui envoie chaque code QR scanné au compte Google Analytics du développeur.

Comme Tommy vous invite à vous demander, dans une série de tweets qu'il a publiés, comment même un utilisateur bien informé est-il censé savoir que son résultat de recherche le plus élevé pour "Application d'authentification» peut-être en fait celui-là même à éviter à tout prix ?

Apparemment, les applications d'imposteur de cette catégorie essaient généralement de vous faire payer entre 20 et 40 $ par an, soit à peu près autant qu'il en coûterait pour acheter un jeton 2FA matériel réputé qui durerait des années et serait presque certainement plus sécurisé. :

Lorsque nous avons essayé de rechercher sur l'App Store, par exemple, notre principal succès était une application avec une description qui frisait l'analphabétisme (nous espérons que ce niveau de manque de professionnalisme découragerait au moins certaines personnes tout de suite), créée par un société utilisant le nom d'une marque de téléphone mobile chinoise bien connue.

Compte tenu de la mauvaise qualité apparente de l'application (bien qu'elle soit néanmoins entrée dans l'App Store, n'oubliez pas), notre première pensée a été que nous examinions une véritable violation du nom de l'entreprise.

Nous avons été surpris que les imposteurs présumés aient pu acquérir un certificat de signature de code Apple sous un nom que nous ne pensions pas qu'ils avaient le droit d'utiliser.

Nous avons dû lire le nom de l'entreprise deux fois avant de nous rendre compte qu'une lettre avait été remplacée par un caractère sosie, et nous avions affaire à un bon vieux "typosquatting", ou ce qu'un avocat pourrait appeler faire passer - choisir délibérément un nom qui ne correspond pas littéralement mais qui est visuellement suffisamment similaire pour vous induire en erreur en un coup d'œil.

Lorsque nous avons cherché sur Google Play, le top hit était une application sur laquelle @mysk_co avait déjà tweeté, avertissant qu'elle exige non seulement de l'argent que vous n'avez pas besoin de dépenser, mais vole également le graines or secrets de départ des comptes que vous avez configurés pour 2FA.

Rappelez-vous la chaîne secrète 6QYW4P6K­WALGCUWM dans le code QR, et les numéros TOTP 660680 que vous pouvez voir dans les images ci-dessous, car nous les retrouverons plus tard :

Pourquoi les graines sont secrètes

Expliquer.

La plupart des codes 2FA basés sur des applications reposent sur un protocole cryptographique appelé TOTP, abréviation de mot de passe à usage unique basé sur le temps, spécifié dans RFC 6238.

L'algorithme est étonnamment simple, comme vous pouvez le voir dans l'exemple de code Lua ci-dessous :

Le processus fonctionne comme ceci :

A. Convertissez la graine, ou "secret de départ", initialement fournie sous forme de chaîne encodée en base32 (sous forme de texte ou via un code QR), en une chaîne d'octets [ligne 4].

B. Divisez le « temps d'époque Unix » actuel en secondes par 30, en ignorant la partie fractionnaire. L'heure Unix est le nombre de secondes depuis 1970-01-01T00:00:00Z [5].

C. Enregistrez ce nombre, qui est en fait un compteur d'une demi-minute qui a commencé en 1970, dans une mémoire tampon sous la forme d'un entier non signé big-endian de 64 bits (8 octets) [6].

D. Hachez ce tampon de 8 octets en utilisant une itération de HMAC-SHA1 avec la graine de départ décodée en base32 comme clé [7].

E. Extrayez le dernier octet du résumé HMAC-SHA160 1 bits (octet 20 sur 20), puis prenez ses quatre bits inférieurs (le reste divisé par 16) pour obtenir un nombre X compris entre 0 et 15 inclus [8] .

F. Extraire les octets X + 1, X + 2, X + 3, X + 4 du hachage, c'est-à-dire 32 bits tirés n'importe où des quatre premiers octets (1..4) aux quatre avant-derniers octets ( 16..19) [13].

G. Convertissez en un entier non signé big-endian de 32 bits et mettez à zéro le bit le plus significatif, de sorte que cela fonctionne proprement, qu'il soit traité plus tard comme signé ou non signé [13].

H. Prenez les 6 derniers chiffres décimaux de cet entier (calculez le reste lorsqu'il est divisé par un million) et imprimez-le avec des zéros non significatifs pour obtenir le code TOTP [17].

En d'autres termes, la graine de départ pour n'importe quel compte, ou le secret comme vous pouvez le voir étiqueté dans le tweet de @ mysk_co ci-dessus, est littéralement la clé pour produire chaque code TOTP dont vous aurez besoin pour ce compte.

Les codes sont pour l'utilisation, les graines sont pour la sécurisation

Il y a trois raisons pour lesquelles vous ne saisissez jamais ces codes à six chiffres étrangement calculés lorsque vous vous connectez, et n'utilisez jamais (ou même n'avez même pas besoin de voir) la graine directement :

  • Vous ne pouvez pas revenir en arrière à partir de l'un des codes jusqu'à la clé utilisée pour les générer. Ainsi, l'interception des codes TOTP, même en grand nombre, ne vous aide pas à rétroconcevoir votre chemin vers des codes de connexion passés ou futurs.
  • Vous ne pouvez pas avancer du code actuel au suivant dans l'ordre. Chaque code est calculé indépendamment, en fonction de la graine, donc l'interception d'un code aujourd'hui ne vous aidera pas à vous connecter à l'avenir. Les codes agissent donc comme des mots de passe à usage unique.
  • Vous n'avez jamais besoin de saisir la graine elle-même dans une page Web ou un formulaire de mot de passe. Sur un téléphone mobile moderne, il peut donc être enregistré exactement une fois dans la puce de stockage sécurisée (parfois appelée puce enclave) sur l'appareil, où un attaquant qui vole votre téléphone lorsqu'il est verrouillé ou éteint ne peut pas l'extraire.

En termes simples, un code généré est sûr pour une utilisation unique, car la graine ne peut pas être inversée à partir du code.

Mais la graine doit être gardée secrète pour toujours, car tout code, depuis le début de 1970 jusqu'à bien après la mort probable de l'univers par la chaleur (263 secondes dans le futur, soit environ 0.3 billion d'années), peuvent être générés presque instantanément à partir de la graine.

Bien sûr, le service auquel vous vous connectez a besoin d'une copie de votre graine afin de vérifier que vous avez fourni un code qui correspond à l'heure à laquelle vous essayez de vous connecter.

Donc vous devez faire confiance aux serveurs à l'autre bout prendre des précautions supplémentaires pour garder vos graines en sécurité, même (ou peut-être surtout) si le service est violé.

Vous devez également faites confiance à l'application que vous utilisez de votre côté ne jamais révéler vos graines.

Cela signifie ne pas afficher ces graines à n'importe qui (une application correctement codée ne vous montrera même pas la graine après l'avoir saisie ou scannée, car vous n'avez tout simplement pas besoin de la revoir), ne libère pas de graines à d'autres applications, ne pas les écrire pour journaliser les fichiers, les ajouter aux sauvegardes ou les inclure dans la sortie de débogage…

…et très, très certainement ne jamais transmettre aucune de vos graines sur le réseau.

En fait, une application qui télécharge vos graines sur un serveur n'importe où dans le monde est soit si incompétente que vous devriez cesser de l'utiliser immédiatement, soit si indigne de confiance que vous devriez la traiter comme un malware cybercriminel.

Que faire?

Si vous avez récemment saisi une application d'authentification, surtout si vous l'avez fait à la hâte à la suite de l'annonce récente de Twitter, revoir votre choix à la lumière de ce que vous savez maintenant.

Si vous étiez obligé de payer un abonnement pour cela; si l'application est parsemée de publicités ; si l'application est livrée avec un marketing plus grand que nature et des critiques élogieuses, mais provient d'une entreprise dont vous n'avez jamais entendu parler ; ou si vous avez simplement des doutes et que quelque chose ne va pas…

… envisagez de passer à une application grand public que votre équipe informatique a déjà approuvée, ou dont un technicien, que vous connaissez et en qui vous avez confiance, peut se porter garant.

Comme mentionné ci-dessus, Apple dispose d'un générateur de code 2FA intégré dans Paramètres > mots de passe, et Google a le sien Authentificateur Google application dans le Play Store.

Votre fournisseur de sécurité préféré a probablement une application de génération de code gratuite, sans publicité et sans excitation que vous pouvez également utiliser. (Sophos a un authentificateur autonome pour iOS et un composant d'authentification dans l'app gratuite Sophos Intercept X pour Mobile sur les deux iOS ainsi que Android.)

Si vous décidez de changer d'application d'authentification parce que vous n'êtes pas sûr de celle que vous avez, assurez-vous de réinitialiser toutes les graines 2FA pour tous les comptes que vous lui avez confiés.

(En fait, si l'ancienne application a une option pour exporter vos graines afin que vous puissiez les lire dans une nouvelle application, vous savez maintenant non seulement que vous ne devriez pas utiliser cette fonctionnalité, mais aussi que votre décision de changer d'application était une bonne chose. un!)


QUANTIFIER LE RISQUE POUR VOUS-MÊME

Le risque de laisser votre compte protégé par une graine 2FA que vous pensez que quelqu'un d'autre pourrait déjà connaître (ou être capable de comprendre) est évident.

Vous pouvez vous le prouver en utilisant l'algorithme TOTP que nous avons présenté plus tôt, et en introduisant [A] la chaîne "secrète" de Tommy Mysk Tweet ci-dessus et [B] l'heure à laquelle il a pris la capture d'écran, qui était à 7h36, heure d'Europe centrale, le 2023-02-25, une heure avant UTC (temps zoulou, dénoté Z dans l'horodatage ci-dessous).

La graine volée est : 6QYW4P6KWALGCUWM L'heure zoulou était : 2023-02-25T18:36:00Z Soit : 1,677,350,160 XNUMX XNUMX XNUMX secondes dans l'époque Unix

Comme vous pouvez vous y attendre, et comme vous pouvez faire correspondre les images dans le tweet ci-dessus, le code produit la sortie suivante :

$ luax totp-mysk.lua Le code de Tommy Mysk était : 660680

Comme pourrait le dire le célèbre meme du jeu vidéo : Tous ses codes TOTP nous appartiennent.


spot_img

Dernières informations

spot_img