Blog: KeePass, vulnérabililité ultra-méga-giga critique 🤦♂️
Version anglaise: https://patrowl.io/blog-keepass-critical-ultra-mega-giga-vulnerability/
Au début je comptais me limiter à un simple tweet (https://twitter.com/mynameisv_/status/1618237806442336256) et un mail sur une mailling list privée (ceux qui savent, savent 😉) mais devant l’ampleur que prend le sujet… voici un article de blog 😒. Afin de terminer dans la joie et la bonne humeur, vous aurez les nouvelles fonctionnalités de KeePass 2.53 à la fin 😉.
KeePass ? C’est quoi ?
KeepPass est un outil merveilleux assurant la fonction de coffre-fort local de mots de passe.
Je vais faire bref : c’est un outil qui vous permet de stocker, localement, vos mots de passe, de façon sécurisée et nécessitant de saisir un mot de passe « maître » pour les déverrouiller. C’est pratique pour avoir des mots de passe complexes et aléatoires pour chacun de vos sites, outils, accès… 👍.
Pour le dire autrement, il protège vos mots de passe, il protège vos fesses, il « keep your ass »… ça c’est pour ceux qui n’avaient pas compris le nom de cet outil 😉.
La vulnérabilité ultra méga giga critique CVE-2023-24055
Les faiblesses de KeePass
Keepass est super pour la sécurité de vos secrets mais pour un attaquant, cela peut être intéressant pour deux principales raisons 😉 :
- Si je compromets le poste d’un utilisateur et que j’ai suffisamment de privilèges pour accéder à la base Keepass, j’aurais alors TOUS ses secrets (que je la récupère en mémoire avec des outils comme KeeFarce ou KeeThief ou SharpClipHistory beaucoup plus récent, ou sur le disque en attendant que l’utilisateur saisisse son mot de passe et en le capturant avec un keylogger…)
- Si je compromets le poste d’un utilisateur et que j’ai les droits en écriture sur le fichier de configuration de KeePass, je peux lui demander de déclencher une action, comme une exécution de commande, suite à un évènement comme lors de son ouverture, de l’ouverture d’une base de mots de passe, de la fermeture… (ce qui peut se faire manuellement ou avec des outils comme le récent KeePwn)
Le second cas est connu depuis 2015, à minima (pour ceux de la mailling list, je vous renvoie vers les mails de 2015 « KeeFarce : soft qui extrait les données de Keepass » et « [Sécurité] KeeThief, pour voler le contenu d’un KeePass »).
C’est une vieille technique, connue et que j’ai d’ailleurs utilisé plusieurs fois lors de tests d’intrusion pour assurer une persistance discrète sur la cible💪 mais également pour récupérer la base des mots de passe.
CVE-2023-24055
Pour son auto-promotion, quelqu’un a tenté de déclarer une vulnérabilité à partir de la fonctionnalité et comme ce n’est pas une vulnérabilité, elle est en « DISPUTED » chez le MITRE, c’est-à-dire qu’il y’a débat sur le fait que ce soit ou pas une vraie vulnérabilité.

https://nvd.nist.gov/vuln/detail/CVE-2023-24055
Alors attention, je vais sortir ma meilleure mauvaise foi car cette histoire est totalement ridicule :
- Word, Excel, PowerPoint… disposent du même genre de fonctionnalité (exécution de code) avec les Macros
- Outlook, que vous avez quasiment tout le temps ouvert, dispose du même genre de fonctionnalité avec les Addins
- Photoshop, Illustrator… disposent du même genre de fonctionnalité avec les plugins
- Firefox, Chrome… disposent du même genre de fonctionnalité avec les plugins
Donc oui, KeePass peut-être détourné de son usage et tous vos mots de passe peuvent être récupérés mais c’est connus et documenté depuis des années : https://keepass.info/help/kb/sec_issues.html#cfgw
Et KeePass propose des moyens de sécuriser un peu sa configuration : https://keepass.info/help/kb/config_enf.html
Cela remet-il en cause KeePass et avoir un coffre-fort local ?
La réponse est bien entendu : non 🤣, merci cap’tain Obvious !
Pour compromettre KeePass, un attaquant doit avoir accès au poste (ou, dans certains cas, à un partage distant). Si un attaquant dispose d’un accès à votre ordinateur, même avec des privilèges limités, ce n’est qu’une question de temps avant qu’il ait accès à tout (sauf éventuellement sur un Chrome Book concernant la persistance).
Avoir un coffre-fort de mots de passe c’est bien, c’est même très bien, c’est mieux que d’avoir un seul mot de passe pour tous ses comptes (Password Reuse mon ami ennemi), c’est mieux que d’avoir un fichier texte ou excel avec ses mots de passe…
Si le conteneur de mots de passe est utilisé judicieusement, alors vous aurez des mots de passe uniques, longs et complexes pour chaque site/application, puis vous le sauvegarderez régulièrement.
Vous pouvez également utiliser un coffre-fort sous forme d’application web comme Bitwarden hébergé par vous ou en pure service (SaaS) comme « chez Bitwarden », LastPass, Dashlane, 1Password… (et cher lecteur, avant que tu commences à râler sur LastPass, oui, un coffre-fort en ligne est intéréssant mais nécéssite une analyse préalable de la menace car, indirectement, ils auront tes mots de passe cf. https://patrowl.io/third-lastpass-hack/)
Mise à jour 2.53
Très récemment, la mise à jour 2.53 apportait le support complet de l’authentification forte basée sur des « One Time Password / OTP » en l’ajoutant à la saisie automatique :

L’identifiant et le mot de passe se configurent de façon classique ici :

Pour la saisie automatique, c’est ici :

Et pour configurer l’OTP, c’est un poil moins évident 😉 (avec l’OTP généré encadré de rouge):

Vous pouvez à présent ajouter {HMACOTP} et {TIMEOTP} (cf. capture ci-dessus) dans la configuration de la saisie automatique (auto type) et vous n’avez vraiment plus d’excuse à utiliser l’authentification forte😄.
D’ailleurs, si vous l’utilisez l’OTP depuis l’appareil à partir duquel vous avez saisi votre mot de passe … ce n’est pas vraiment de l’authentification forte à double facteur (2FA) mais plutôt du « 1.5 facteur » ou « 1,5 FA » 😅. (L’un des intérêts de l’authentification forte à double facteur est d’avoir un équipement séparé générant l’OTP car si votre équipement se fait compromettre, l’attaquant aura votre mot de passe ainsi que votre second facteur… 😢).
Donc…
Utilisez un coffre-fort de mots de passe (local, SaaS, hébergé par vous…), utilisez des mots de passe forts (longs et aléatoires), utilisez un mot de passe unique par site/application, utilisez le MFA, ne croyez pas ce que vous lisez sur Internet 😄.
Et si vous voulez en savoir plus sur l’authentification forte:
- Blog: Contourner l’authentification forte d’Office 365 (MFA) en 3 lignes (et la corriger 😉) https://patrowl.io/contourner-lauthentification-forte-doffice-365-mfa-en-3-lignes-et-la-corriger-%f0%9f%98%89/
- Blog: L’authentification forte c’est bien, quand elle est sécurisée c’est mieux https://patrowl.io/lauthentification-forte-cest-bien-quand-elle-est-securisee-cest-mieux/
Et sur la sécurité des mots de passe:
- Blog: Le tableau de la résistance des mots de passe https://patrowl.io/le-tableau-de-la-resistance-des-mots-de-passe/
- Blog: Casser des condensats de mots de passe… sans violence https://patrowl.io/casser-des-condensats-de-mots-de-passe-sans-violence/