Mise à jour de sécurité de l’extension LastPass

Rapport d’incident : 31 mars 2017 à (20 h 10)

Le samedi 25 mars, le chercheur en sécurité Tavis Ormandy du Project Zero de Google a signalé une faille de sécurité associée aux extensions de navigateur LastPass. Au cours des dernières 24 heures, nous avons publié une mise à jour qui doit corriger la vulnérabilité dans tous les navigateurs, ce que nous avons vérifié auprès de Tavis.

La mise à jour sera automatique pour la majorité des utilisateurs. Veuillez vérifier que vous utilisez la dernière version (4.1.44 ou ultérieure), que vous pouvez toujours télécharger sur https://www.lastpass.com/.

Maintenant que le problème est résolu, nous souhaitons fournir un bilan post-mortem à notre communauté, afin d’aborder le contenu du rapport et la manière dont nous allons améliorer et renforcer LastPass. Veuillez noter qu’en raison de la nature de la vulnérabilité, ce bilan est particulièrement technique.

Synthèse

  • Il s’agissait d’une vulnérabilité côté client au sein des extensions LastPass pour navigateurs qui pouvait être exploitée pour voler des données et manipuler l’extension LastPass
  • Pour l’exploiter, l’utilisateur devait être attiré sur un site web malveillant (par hameçonnage, harponnage ou un autre type d’attaque), ou sur un site de confiance infecté par un logiciel publicitaire malveillant
    • L’attaque devait donc être individuelle et exécutée en local dans le navigateur de l’utilisateur
  • Toutes les extensions ont désormais été mises à jour et envoyées aux stores en ligne
    • Nos apps mobiles pour Android et iOS n’ont pas été affectées
  • Toutes vos extensions de navigateur LastPass doivent être mises à jour vers la version 4.1.44 ou ultérieure
    • Vérifiez votre version dans Icône de l’extension LastPass > Plus d’options > À propos
    • La mise à jour sera automatique pour la plupart des utilisateurs, mais vous pouvez toujours télécharger les dernières versions sur https://www.lastpass.com/
    • La désinstallation n’est pas nécessaire pour télécharger la version mise à jour

Bilan post-mortem

Le rapport

Cette vulnérabilité côté client dans les extensions de navigateur LastPass découlait de la manière dont LastPass se comporte dans des « mondes isolés ». Comme indiqué dans le rapport, « un monde isolé est un environnement d’exécution JavaScript qui exploite le même DOM (Document Object Model) que les autres mondes, mais dans lequel les variables et les fonctions ne sont pas partagées. Sans mondes isolés, les pages sans privilège pourraient interférer avec les scripts dotés d’un privilège plus élevé, et leur faire faire ce qu’elles veulent. » Dans le cas de ceux qui étaient exécutés dans la version binaire de l’extension, ce qui concerne moins de 10 % des utilisateurs de LastPass, il pouvait être manipulé pour permettre l’exécution de code à distance sur l’extension.

 « Mondes isolés » et pages de confiance

Pour son fonctionnement, LastPass exploite des scripts de contenu. Il s’agit d’extraits de JavaScript que nous injectons dans les sites tiers afin de capturer les informations de connexion et effectuer le remplissage automatique. Et c’est précisément ce qui rend LastPass si utile. Le script de contenu communique ensuite avec le reste de l’extension pour qu’elle s’occupe du gros du travail : déchiffrer les sites enregistrés, actualiser le coffre-fort, etc. Le reste de l’extension est totalement inaccessible aux sites tiers et ne doit pas être capable d’influencer les scripts de contenu.

Les scripts de contenu sont généralement séparés du reste du site en exploitant la notion de « mondes isolés ». Les mondes isolés font en sorte que nos scripts de contenu peuvent lire le contenu du DOM d’un site tiers, mais pas ses fonctions et variables JavaScript. Cela fonctionne dans les deux sens : le site tiers ne peut pas appeler de fonctions ou accéder aux variables de nos scripts de contenu. Cette séparation est censée protéger les deux côtés des manipulations provenant de l’extérieur.

Dans certains cas, ces variables peuvent influencer la logique des scripts de contenu. Il est difficile d’injecter des valeurs arbitraires dans du JavaScript à l’aide de cette technique. Mais le rapport a démontré qu’en exploitant une méthode particulièrement ingénieuse, des chaînes arbitraires pouvaient être injectées, et que l’une d’elles pouvait faire croire à l’extension qu’elle était exécutée sur lastpass.com. Ce faisant, le pirate pouvait manipuler l’extension LastPass afin qu’elle révèle les données stockées de l’utilisateur, et dans le cas de la version binaire, qu’elle lance des exécutables.

Nous partions du principe que nous pouvions faire confiance à l’environnement global dans lequel nos scripts de contenu sont exécutés, ce qui s’est révélé faux. Par conséquent, il existait de nombreux endroits dans notre JavaScript dans lesquels des variables globales provenant de l’extérieur pouvaient remplacer des valeurs par défaut.

Résolution du problème

Dès que nous avons reçu le rapport complet, une équipe pluridisciplinaire a analysé et confirmé ses conclusions. Il était évident que le traitement des problèmes nécessiterait une modification importante de nos extensions pour navigateurs. Un simple correctif ne suffirait pas. Une modification de fond était nécessaire. Cette modification devrait ensuite être appliquée et testée pour toutes les extensions affectées.

En résumé : la prise en compte des conclusions du rapport nécessitait un effort significatif, et nos équipes ont travaillé 24 heures sur 24 afin mettre en œuvre les corrections dans les plus brefs délais.

Pour corriger le problème, nous avons modifié la gestion des variables et ajouté l’objet Proxy au champ externe du script de contenu pour qu’il serve de « bac à sable », empêchant la lecture des propriétés de fenêtres provenant de l’extérieur au sein du script de contenu. Pour limiter davantage l’exécution de code arbitraire, nous avons restreint les types de pièces jointes que l’extension peut lancer, ainsi que le nombre d’API de l’extension.

Nous avons collaboré en direct avec l’équipe Project Zero de Google pour vérifier que nos correctifs étaient exhaustifs. Une fois que le correctif était prêt pour toutes les extensions affectées, nous avons pu les faire valider rapidement par tous les stores, afin qu’elles parviennent rapidement aux utilisateurs. Nous souhaitons remercier nos partenaires chez Apple, Google, Microsoft, Mozilla, Opera, Yandex et d’autres qui ont accéléré la validation et la sortie de notre extension.

Suite des événements

Nous encourageons vivement les autres développeurs d’extensions de rechercher ce motif dans leur code afin de vérifier qu’il n’est pas vulnérable.

La gestion de mots de passe est notre raison d’être ; la sécurité est et restera toujours notre priorité absolue. Comme toujours, nous apprécions le travail de la communauté de la sécurité qui met à l’épreuve notre produit et collabore avec nos équipes pour s’assurer que nous offrons un service sûr à nos utilisateurs. En tant que leader du marché, ce sont les meilleurs qui mettent LastPass à l’épreuve, et notre logiciel et nos utilisateurs en bénéficient.

Afin de conserver un niveau de sécurité maximal, nous continuerons à collaborer avec les chercheurs en sécurité et à encourager la participation à notre programme de récompense bug bounty (https://bugcrowd.com/lastpass). Nous vous communiquerons bientôt plus de détails à ce propos.

Merci,

L’équipe LastPass

____________________________________________________________________________________________________________________________

27 mars 2017 à (19 h 10)

Ce week-end, le chercheur en sécurité Tavis Ormandy a signalé une nouvelle vulnérabilité côté client affectant l’extension de navigateur LastPass. Nous sommes en train de la traiter activement.  Cette attaque est unique et hautement sophistiquée. Nous ne souhaitons pas divulguer de détails sur la vulnérabilité ou sur notre parade qui pourraient être exploités par des tiers moins sophistiqués et mal intentionnés. Vous pouvez donc vous attendre à un bilan post-mortem plus détaillé lorsque nous aurons accompli notre tâche.

En attendant, nous souhaitons remercier les personnes comme Tavis qui nous aident à renforcer la sécurité en ligne avec LastPass, et qui travaillent avec nos équipes pour faire de LastPass le gestionnaire de mots de passe le plus sûr du marché. En outre, nous voulons indiquer quelques manipulations à nos utilisateurs qui leur permettront de se protéger de ces types de problèmes côté client.

  1. Utilisez le coffre-fort LastPass en tant que lanceur – Lancez les sites directement depuis le coffre-fort LastPass. C’est le moyen le plus sûr d’accéder à vos identifiants et vos sites en attendant que cette faille soit corrigée.
  2. Utilisez l’authentification à deux facteurs sur tout service qui le propose – Quand c’est possible, activez l’authentification à deux facteurs pour vos comptes. De nombreux sites web proposent cette option pour renforcer la sécurité.
  3. Méfiez-vous du hameçonnage – Soyez vigilants afin de ne pas succomber aux attaques d’hameçonnage. Ne cliquez pas sur les liens provenant de personnes que vous ne connaissez pas ou qui semblent hors sujet provenant de contacts et sociétés de confiance. Consultez notre présentation du hameçonnage.

Nous vous tiendrons informés sur le correctif lorsqu’il sera mis en œuvre.