Vraiment ? L’actualité court sur tous les sites web (enfin, quelques uns) pour indiquer que les gestionnaires de mots de passe comme KeePass ou 1Password laisseraient des informations critiques en clair.
Des « chercheurs » ont ainsi trouvé que les gestionnaires de mots de passe gardaient des informations en clair dans la RAM ? Quelle découverte ! C’est le principe même de l’ordinateur ! Question : et où faudrait-il mettre ces informations sensibles, alors ? J’attends la réponse…
A un moment il faut bien chiffrer/déchiffrer l’information, non ? Les mots de passe sont protégés par un chiffrement en général : donc soit on dispose d’une enclave matérielle où peut s’opérer le déchiffrement et où on protège la clé de déchiffrement, soit c’est l’OS qui doit gérer ça… avec de la RAM. Dernière solution : le gestionnaire efface bien le mot de passe maître à chaque utilisation. Donc l’utilisateur doit le retaper à chaque fois. Pratique, non ?
Parades
Parade théorique
Le « problème » ne vient pas des gestionnaires de mot de passe mais de l’OS et de la conception habituelle des ordinateurs, qui n’ont pas été pensés pour gérer des secrets. La vraie solution serait d’ajouter un moyen de protéger ces secrets, comme par exemple avec une enclave. Intel a essayé, avec SGX, mais la réussite n’est pas au rendez-vous (c’est le moins que l’on puisse dire). Et même s’il y avait une solution (matérielle donc), il faudrait qu’elle soit implémentée partout ! D’ici que chaque PC soit équipé d’un HSM, on risque d’attendre un peu.
Parades pratiques
La parade la plus évidente est de laisser son gestionnaire de mémoire ouvert le moins longtemps possible. Inconvénient majeur : il faut retaper son super mot de passe à chaque fois. Le prix de la sécurité…
Autre parade : que l’OS clignote quand un dump mémoire est demandé. Car pour être efficace, dans le cas des gestionnaires de mots de passe, il faut que ce dernier soit en cours d’exécution, et donc que l’OS tourne. Donc informer l’utilisateur qu’une opération dangereuse est en cours est une option (pas parfaite, mais c’est une option quand même).
De plus, un dump mémoire est long à s’exécuter : il faut écrire sur un support tiers (clé USB, disque dur) qui est beaucoup moins rapide que la mémoire RAM, qui elle même ne peut pas être lue de façon instantanée. Seul un utilisateur informé saura s’en rendre compte, mais comme vu ci-dessus, l’OS en serait capable.
Réfléchissons
Imaginons que j’aie un moyen, quel qu’il soit, de faire un dump mémoire. Si je l’ai grâce à une élévation de privilège, alors je n’ai aucun besoin d’espionner le gestionnaire de mot de passe : un keylogger suffit pour me donner mes mots de passe, dont celui du gestionnaire de mot de passe. Idem si j’ai un accès physique : un bon vieux keylogger USB fera parfaitement l’affaire et sera beaucoup plus discret qu’un dump mémoire (cf remarque plus haut).
Donc oui, il vaut mieux utiliser un gestionnaire de mot de passe qu’un papillon adhésif (pour ne pas citer de marque :o)
Et ce genre d’annonce me fait penser aux zozos qui ont soi-disant trouvé des failles sur les processeurs AMD… exploitables uniquement avec les droits administrateurs sur la machine !
Quelques infos sur le dump mémoire
Sauf fonctionnalité non documentée, réaliser un dump mémoire sous Windows nécessite les droits administrateurs depuis la version 2003 SP1.
Voici comment procéder :
- https://nvidia.custhelp.com/app/answers/detail/a_id/4641/~/collecting-a-full-memory-dump-in-windows-10
- http://www.forensicswiki.org/wiki/Tools:Memory_Imaging
- https://support.microsoft.com/en-us/help/254649/overview-of-memory-dump-file-options-for-windows
Sources
- Etude originale : https://www.securityevaluators.com/casestudies/password-manager-hacking/
- https://www.theregister.co.uk/2019/02/20/password_managers_security_bugs/
- Quelques réponses d’éditeur ici (ThreatPost).