Après avoir lu
cet article, je voulais rechercher un autre gestionnaire de mots de passe pour des vulnérabilités similaires.
Dans les commentaires de l'article,
Dark_Angel a posé une question:
Et SafeInCloud?
L'étude a été réalisée sur la version Windows gratuite de SafeInCloud v.19.0.2
Lorsque j'ai rencontré le produit pour la première fois, il m'a fait une très bonne impression.
Cependant, d'autres recherches ont révélé exactement la même vulnérabilité.
Contrairement à 1Password, SafeInCloud stocke
tous vos mots de passe en texte clair même dans un état verrouillé (après le premier déverrouillage).
Pour obtenir le mot de passe de la base de données, lisez simplement la mémoire de l'application. L'
obfuscation des données est complètement absente! Le mot de passe principal (et tous les autres mots de passe et entrées) n'est jamais remplacé après le premier déverrouillage réussi de la base de données, même si l'utilisateur le verrouille.
Vos mots de passe peuvent fuir dans les cas suivants:
+ Envoi d'un rapport de bug dans n'importe quel logiciel. Très souvent, les développeurs vident la mémoire de toutes les applications à des fins de débogage.
+ Si vous utilisez un ordinateur, pas seulement vous.
+ Lors de l'accès physique à l'ordinateur d'un attaquant.
+ Lors du démarrage d'un malware.
+ Il est possible que le contenu de la mémoire entre en permutation.
+ Tout le reste ...
L'application Windows est écrite en .net, ce qui simplifie considérablement l'analyse du code source.

L'application est écrite en .net
Une fois le déchiffrement de la base de données (XDatabase) réussi, la base de données déchiffrée et le mot de passe principal sont enregistrés en tant que champs de classe dans l'instanc Singleton de la classe DatabaseModel.

Définition de champs avec une base de données et un mot de passe principal à partir de celle-ci
Toutes les entrées et tous les mots de passe sont stockés en mémoire sous forme claire même après que l'utilisateur a verrouillé l'application. Le mot de passe principal se trouve en clair à côté.

Le mot de passe est stocké dans la propriété Password, _database est un champ de la classe XDatabase qui contient la base de données déchiffrée.
Base de données au format XML.Lors du déverrouillage de l'application, une vérification élémentaire est effectuée:

Si le mot de passe entré par l'utilisateur correspond à celui enregistré dans la mémoire, le déverrouillage est terminé.
Un simple utilitaire
SafeInCloudExtractor a été écrit pour automatiser l'extraction du mot de passe principal.
L'utilitaire extrait le mot de passe principal et le chemin d'accès local au fichier de base de données.
Quel gestionnaire de mots de passe utilisez-vous? Écrivez dans les commentaires!
MISE À JOUR Après avoir signalé un problème, l'auteur du SiC a pris les critiques très négativement (jusqu'aux insultes). Sous la pression des utilisateurs, une version bêta a été publiée avec une "protection contre les pirates". Autrement dit, avec la protection de l'utilitaire SafeInCloudExtractor. Il semblerait que le problème soit résolu! Les mots de passe sont effacés de la mémoire. Cependant, ce n'est pas le cas et voici pourquoi:
Une version mise à jour de SiC stocke également tous les mots de passe en mémoire. Pour compliquer l'analyse du code, un obfuscateur a été appliqué + une vérification IsDebuggerPresent a été ajoutée. Les mots de passe sont stockés en texte clair dans la mémoire et sont stockés. Il semble que l'auteur ne comprenne pas contre quoi se défendre. Au lieu de résoudre le problème, PoC a été désactivé. Très probablement, l'auteur n'a pas les qualifications et les connaissances nécessaires pour développer des logiciels liés à la sécurité. Soyez vigilant!