Blog: 3eme piratage de LastPass

image

Version anglaise : https://patrowl.io/third-lastpass-hack/

Mise à jour 06/01/2022 : SSO, comment cela fonctionne chez LastPass et comment vérifier sur Azure

LastPass a été pirate pour la 6eme fois (3eme fois cette année) et cette fois-ci, vos secrets sont sortis !

(Non, pas vraiment 😉)

LastPass est un coffre-fort de mots de passe en ligne, externalisé, hébergé par l’entreprise éponyme. L’idée est saine : vous disposez d’un seul endroit pour stocker vos mots de passe, accessible de partout et, en théorie, sécurisé. Cela vous permet d’avoir des mots de passe différents pour chaque site et surtout très solide (longs et aléatoires). Bon ça c’est si vous respectez vraiment toutes les bonnes pratiques 😉.

Normalement, un bon coffre-fort de mots de passe nécessite un secret (un mot de passe dit maitre) pour déverrouiller (déchiffrer) tous les autres mots de passe. De ce fait, l’éditeur de coffre-fort de mots de passe ne connait pas vos secrets. Notez que comme vous saisissez votre mot de passe (ou clef maitresse) sur le portail de LastPass, en réalité ils l’ont bien, c’est juste qu’en théorie, ils ne l’enregistrent pas 😉. Si un attaquant arrive à injecter du javascript dans la page web de LastPass (ou tout autre coffre-fort en ligne), il aura votre clef maitresse.

La sécurité et LastPass

Ces dernières années :

Aout 2022, piratage d’un développeur de LastPass et vol du code source et des informations du développeur mais pas des clients https://blog.lastpass.com/2022/12/notice-of-recent-security-incident/ . LastPass avait communiqué sur le fait qu’aucune donnée de client n’avait été volée et que tout allait bien <<Circulez, y’a rien à voir>>.

Novembre 2022, intrusion chez LastPass grâce aux informations récupérée en aout mais pas d’accès aux données des clients. D’ailleurs, la maison mère de LastPass, la société « Go to » avait publié un communiqué qu’elle avait rendu « non indéxable » pour empêcher que les moteurs de recherche ne l’indexent et donc éviter la mauvaise publicité. C’est ce que vous pouvez voir ici avec la métadonnée « noindex » :

image

view-source:https://web.archive.org/web/20221130211551/https://www.goto.com/blog/our-response-to-a-recent-security-incident

Dans ce communiqué il était indiqué que les données des clients n’avaient toujours pas été accédées <<Circulez, y’a toujours rien à voir>>.

Décembre 2022, vol des sauvegardes des coffres-forts de mots de passe des utilisateurs stockés sur un stockage en ligne (cloud). Ces sauvegardes contiennent :

  • Les noms des entreprises et/ou utilisateurs, non chiffrés ;
  • Les informations de facturations dont les adresses, non chiffrées ;
  • Les mails, numéros de téléphone, adresses IP de connexion… non chiffrés ;
  • Les coffres-forts avec :
    • Les informations générales (les noms des sites, adresses web/URL…), non chiffrées,
    • Les informations secrètes (mots de passe, notes…), chiffrées.

Le communiqué : https://blog.lastpass.com/2022/12/notice-of-recent-security-incident/

Risque ?

Si vous êtes client LastPass, les attaquants disposent de vos informations personnelles et des URL des sites dont vous stockez le mot de passe dans LastPass.  Mais pas de panique !

Vos mots de passe sont (en théorie 😉) chiffré avec une clef, dérivée de votre clef maitresse par PBKDF2. Cet algorithme va faire plusieurs rotations (itération) afin de rendre l’obtention de la clef utilisée très lente. Cela donnerait :

MonSecret –[rotation]-> *$D_è2 »à –[rotation]-> %M0»_*$ –…-> La vraie clef utilisée pour chiffrer/déchiffrer

De ce que j’ai lu, il y’aurait 100 100 rotations (itérations). Cela rend donc l’opération trèèèèèèèès lente, plusieurs centaines de millisecondes. Le but est de limiter les attaques par dictionnaire ou exhaustive (brute force).

A titre d’exemple, avec la grosse machine que nous utilisons pour casser des mots de passe, nous ne sommes pas capables de casser un mot de passe de plus de 8 caractères, protégé par PBKDF2 (avec AES256) si nous testons toutes les possibilités (https://patrowl.io/casser-des-condensats-de-mots-de-passe-sans-violence/). Par contre, à partir d’un dictionnaire, cela prend entre 1 et 5 jours.

Si un attaquant souhaite déchiffrer votre coffre-fort, il aura plutôt tendance à utiliser les mots de passe qu’il a déjà pour vous (trouvés dans d’autres fuites de données) puis potentiellement un dictionnaire.

Le risque est donc limité sauf si :

  • Votre clef maitresse est utilisée ailleurs ;
  • Vous avez une clef maitresse de moins de 8 caractère.

Par contre, les attaquant vont surement réaliser de premières attaques sur ces coffres-forts, en casser une partie puis revendre cette fuite de données à d’autres, qui feront de même puis revendront ou donnerons les données… et cela finira par arriver sur des forums comme breached.co ou d’autres et tout le monde y aura accès.

Je ne vais pas détailler ici mais avec votre nom, votre mail, votre numéro de téléphone, un attaquant peut réaliser plusieurs types d’attaques allant du phishing à la tentative de contournement de votre authentification forte en passant par le « SIM Swapping » (https://patrowl.io/lauthentification-forte-cest-bien-quand-elle-est-securisee-cest-mieux/).

Que faire ?

Pas de panique

Comme je le disais : pas de panique 😉

image

Déjà, changer de fournisseur de coffre-fort (passer de LastPass à un autre) n’a pas vraiment de sens sauf si vous souhaitez héberger vous-même car aujourd’hui, c’est LastPass qui est piraté mais demain ? D’ailleurs, savez-vous si les autres n’ont pas été déjà piraté ?

A votre place, je ferais une communication simple et rassurante pour expliquer la problématique.

Je proposerais le plan d’action suivant :

  • Je demanderais à ceux ayant une clef maitresse faible ou utilisée ailleurs de prévoir (en leur faisant confiance…) :
    • Rapidement (dans les 5 jours), un changement de tous les mots de passe associés à des comptes sans authentification forte,
    • Sur janvier, un changement de tous les mots de passe.
  • Je demanderais à ceux ayant une clef maitresse solide de prévoir un changement progressif de tous les mots de passe stockés dans LastPass, dans les 6 mois (cf. ci-après).

SSO

Le schéma ci-dessous décrit le fonctionnement du SSO avec LastPass :

image

Voici les détails concernant Microsoft Azure mais j’imagine que c’est assez similaire avec les autres fournisseurs d’identité.

Pour chaque compte utilisateur, un attribut étendu est ajouté contenant un secret K1 de 44 caractères aléatoires (j’espère 😉) mêlant minuscules, majuscules, chiffres et caractères spéciaux.

Cet attribut peu uniquement être consulté en tant qu’administrateur depuis Microsoft Graph avec une requête de ce type :

https://graph.microsoft.com/v1.0/users/prenom.nom@entreprise.com?$select=id,displayName,mail,mobilePhone&$expand=extensions

Le résultat ressemblera à cela, avec l’extension LastPass qu’il est possible de trouver avec son id « com.lastpass.keys »  et contenant la clef K1 dans « LastPassK1 » (avec des valeurs anonymisées 😉 ) :

{
    "@odate.context": "https://graph.microsoft.com/v1.0/users/$metadata#users(id,displayName, mail,mobilePhone,extensions())/$entity",
    "id": "9ac4e0f4-5477-4198-a1e8-81029e149be9",
    "displayName": "Bob Smith",
    "mail": "bob.smith@company.com",
    "mobilePhone": "+33123456789",
    "extensions@odate.context": "https://graph.microsoft.com/v1.0/$metadata#users('9ac4e0f4-5477-4198-a1e8-81029e149be9')/extensions",
    "extensions": [
        {
            "@odate.type": "#microsoft.graph.openTypeExtension",
            "extensionName": "com.lastpass.keys",
            "LastPassK1": "*** clef secrete k1 ***", <---- la clef K1
            "id": "com.lastpass.keys"
        }
    ]
}

Un second secret K2 est stocké chez LastPass, à priori, ailleurs que là où se trouvaient les coffres-forts volés… à priori 😉.

Les 2 secrets sont combinés, itérés (cf. ci-dessous avec PBKDF2) et le résultat est la clef permettant de déchiffrer le coffre-fort.

La combinaison est faite comme suit : Base64( SHA256( K1 xor K2 ))

Les explications sont ici (page 12 et 13 pour Azure): https://support.lastpass.com/download/lastpass-technical-whitepaper

Pourquoi 2 secrets ? Peut-être pour éviter une compromission du coffre-fort en cas de compromission d’un compte Azure, d’un compte admin Azure ou de LastPass,  car pour y arriver, il faudrait alors pirater Azure et LastPass.

Pourquoi changer dans les 6 mois ?

C’est défini au pifomètre mais il y’a des chances que d’ici là, des coffres-forts aient cédés et/ou aient atterri sur plusieurs places de marché. De plus, les bonnes pratiques concernant les mots de passe recommandent à présent des mots de passe très long avec un cycle de vie long aussi 😉. Ceci afin d’éviter les fameux changements tous les 30 jours avec des utilisateurs qui ne font qu’incrémenter un chiffre à la fin : Toto1, Toto2, Toto3…

Je vous recommande le guide de l’ANSSI : << Pour des comptes peu sensibles, imposer un délai d’expiration trop court (3 à 6 mois par exemple) peut se révéler contre-productif>>, page 30 https://www.ssi.gouv.fr/guide/recommandations-relatives-a-lauthentification-multifacteur-et-aux-mots-de-passe/

Les durées recommandées sont :

  • Comptes non sensibles, pas de limite mais je recommanderais tout de même un maximum de 2 ans (Guide de l’ANSSI page 30, R24).
  • Comptes à privilèges, durée entre 1 et 3 ans (Guide de l’ANSSI page 30, R25).

Et surtout, il faut utiliser un second facteur d’authentification comme un code à usage unique (OTP), une notification sur le smartphone… (https://patrowl.io/lauthentification-forte-cest-bien-quand-elle-est-securisee-cest-mieux/)

Disons que 6 mois, pour changer les mots de passe, cela peut tomber dans le cycle de vie définit ci-dessus 😉. Sachant que changer des mots de passe c’est contraignant car aucun site ne proposer la même interface, le même système ni d’API standardisée.

Bon courage à vous et Joyeux Noël 😉.

LastPosts

Click and Drag