J’ai un problème (sécu­rité) avec Dash­lane – Vous m’ai­dez ?


Je vous ai déjà parlé de Dash­lane. Fran­che­ment c’est le bonheur.

Puis je suis tombé aujourd’­hui sur un échange à propos de faiblesses dans le code d’auto-comple­tion de Last­pass. Et là, même si le problème de Last­pass ne se retrouve pas sur Dash­lane j’ai eu un malai­se… « Merde, mes exten­sions Chrome et Fire­fox arrivent à tirer des mots de passe de Dash­lane un peu trop faci­le­ment »

* * *

Dash­lane a une app native très clas­sique. C’est elle qui a les mots de passe (chif­frés), que je déver­rouille avec mon mot de passe maître. À partir de la quelle je peux copier les iden­ti­fiants et mots de passe.

De cette app native, j’ai pu instal­ler les exten­sions Chrome et Fire­fox. Je suppose que ça construit une exten­sion qui m’est spéci­fique, avec des jetons d’ac­cès qui sont diffé­rents chez chacun.

Ces exten­sions peuvent libre­ment ajou­ter et récu­pé­rer les mots de passe depuis l’app native. Rien à faire, rien à déver­rouiller. Pour peu que l’app native soit ouverte, ça fonc­tionne.

* * *

Qu’est-ce qui m’em­pêche de créer un script ou une appli­ca­tion qui ouvre le profil Fire­fox sur le disque, y trouve les fichiers de l’ex­ten­sion Dash­lane, y lit les jetons d’ac­cès et s’adresse à l’app native Dash­lane en cours d’exé­cu­tion pour en extraire tous les mots de passe ?

Ok, il faudrait que mon script ait accès à mon disque dur, ce qui est en soi un problème, mais si j’uti­lise Dash­lane ce n’est pas pour que n’im­porte quelle appli­ca­tion qui a accès à mon disque puisse accé­der à mes mots de passe en clair aussi faci­le­ment.

En réalité c’est proba­ble­ment plus complexe. Un petit tour dans les fichiers javas­cript de Dash­lane me fait dire qu’il y a du chif­fre­ment en jeu et qu’il faudrait quelques jours de boulot pour réuti­li­ser le même canal de commu­ni­ca­tion. Rien d’im­pos­sible cepen­dant.

En fait je peux même proba­ble­ment récu­pé­rer tout le fichier Javas­cript et l’uti­li­ser en tapant direc­te­ment dans l’API interne plutôt que de mimer ce qu’elle sait faire.

Tout au plus il y a peut-être un système qui iden­ti­fie le nom de l’ap­pli­ca­tion source qui s’adresse à l’app native Dash­lane. Je doute que ça aussi soit incon­tour­nable.

* * *

Bref, c’est moi où j’ai un gros problème avec Dash­lane ? Si un techos de Dash­lane passe par là, sans forcé­ment révé­ler tous les méca­nismes dans le détail, j’ai­me­rais bien savoir pourquoi je peux faire confiance au système mis en place.


5 réponses à “J’ai un problème (sécu­rité) avec Dash­lane – Vous m’ai­dez ?”

  1. Bonjour,
    au vu des évènements récents et des vulnérabilités récemments divulguées par Tavis Ormandy autour de Lastpass, ce sont effectivement des interrogations légitimes.
    Nous essayons chez Dashlane de fournir autant de clarifications que possible au travers de notre Security White Paper : https://www.dashlane.com/download/Dashlane-Security-Whitepaper-V2.8.pdf
    Pour simplifier, les process autorisés (extension dans le navigateur) doivent être signés par un certificat valide et whitelistés par le process Dashlane pour être autorisés à communiquer.
    Nous utilisons de plus AES pour chiffrer cette communication.
    Malgré toutes les contre-mesures et protections mises en place par Dashlane, il est malheureusement une réalité qu’un poste compromis exposera l’utilisateur à tout type d’acte malveillant.
    Cette problématique relève plus de la protection du système au travers des différents moyens existants que de celle du password manager.
    N’hésitez pas à nous contacter sur security@dashlane.com pour plus d’informations.

    • Merci Cyril

      Cette problématique relève plus de la protection du système au travers des différents moyens existants que de celle du password manager.

      Je me permet d’être en désaccord sur cette dernière phrase. Je sais bien que vous ne pourrez jamais garantir la sécurité si le système local est sérieusement compromis.

      Maintenant si n’importe quel programme ayant accès au disque peut exfiltrer des mots de passe, c’est un problème sérieux pour moi. Ce serait vraiment simple à faire, invisible, et ça mettrait pas mal à danger mes attentes sur la sécurité apporté par une base de mots de passe chiffrés. De ce que j’en vois (mais peut-être me trompe-je), ça ne m’apporterait alors pas beaucoup plus de sécurité que des moyens beaucoup plus naïfs.

      *

      Bref, vu que l’autorisation d’accès de l’extension est permanente, j’attendais deux choses:

      1- Que l’extension ait une clef d’accès qui lui est propre pour s’adresser à l’application principale. L’idée c’est que n’importe quelle extension ne puisse pas trop facilement se faire passer pour l’extension Dashlane et exfiltrer les mots de passe. Ce n’est pas parfait (une extension qui aurait les droits d’accès pour ça pourrait aller lire les fichiers sur disque, récupérer la clef d’accès et usurper le canal de communication) mais si on ajoute la signature des extensions de Chrome et Firefox, ça me va comme équilibre.

      2- Que l’application native n’accepte pas un canal de communication avec un autre processus que celui attendu, et ce même s’il a la bonne clef. L’idée c’est que seul le processus Chrome/Firefox dont le binaire est à l’emplacement prévu sur le disque puisse utiliser un canal avec la clef de l’extension Chrome/Firefox. Ainsi n’importe quel programme sur le système ne pourra silencieusement pas lire les fichiers dans le profil Chrome/Firefox, récupérer la clef et exfiltrer les mots de passe de Dashlane.

      *

      Le 1 vous le faites, je suis allé fouiller dans l’extension avant d’écrire mon billet et c’est confirmé dans votre white paper.

      Le 2 je n’en sais rien. La réponse que vous m’avez apporté ne me parait pas si claire et rien n’est indiqué à ce sujet dans votre white papier.

      Il faudrait avoir un moyen au niveau de l’OS d’identifier le processus qui communique, et connaitre au minimum le chemin d’accès de l’application sur disque (et voir ensuite si ce dernier est dans la liste blanche). Je ne sais même pas si ça existe (désolé, ce n’est pas mon environnement habituel, je fais essentiellement du web et réseau).

      Même après votre réponse, je ne suis pas certain de savoir si vous le faites ou non. Est-ce possible d’avoir une confirmation explicite sur ce point et savoir si c’est quelque chose de fiable ou juste un best-effort ?

      Je suis conscient que ce n’est pas parfait non plus, mais remplacer le navigateur à son emplacement sur le disque demande déjà les droits d’administrateur sur Windows ou Linux. Sur Mac on peut aussi vérifier la signature du .app local. Disons que j’ai l’impression que ça limiterait beaucoup les risques (mais encore une fois, je suis peut-être naïf à ce niveau).

      *

      En l’état, sans confirmation pour le (2), Dashlane ne me semble pas apporter grand chose de plus que le dépôt de mon navigateur sans utiliser de mots de passe maître. C’est un peu mieux que si tout était en clair, mais pas énormément non plus.

      Du coup ça joue beaucoup dans ce que je vais accepter d’en faire.

  2. > seul le processus Chrome/Firefox dont le binaire est à l’emplacement prévu sur le disque

    Pas si simple.

    Exemple:
    /Applications/Firefox.app:
    /Applications/FirefoxAurora.app:
    /Applications/FirefoxNightly.app:

    Sans compter si tu places le programme ailleurs.

    En revanche les profils sont relativement stables.
    ls ~/Library/Application\ Support/Firefox/Profiles/

    3v3rp4wn3d.default/
    etc.

    ls ~/Library/Application\ Support/Firefox/Profiles/

  3. Je vous confirme que nous vérifions comme votre point « 2 » le décrit si le process est autorisé à communiquer (avec un mécanisme classique de vérification de la signature électronique du process appelant qui est considéré comme fiable).

    Le white paper actuel ne descend en effet pas dans ce niveau de détail, mais ce point mérite effectivement un paragraphe que nous ajouterons!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.