Your KeePass Master Password may be at risk, but a fix is coming
A recently disclosed vulnerability in the KeePass password manager may be exploited to retrieve the master password. The vulnerability, CVE-2023-32784. indicates that the master password may be recovered from system memory dumps, even if the system is not running or locked.
Dominik Reichl, the developer of KeePass, will release a patch in the upcoming KeePass 2.54 release, which is scheduled for a release in the coming 2 months.
The security researcher who discovered the vulnerability has published a proof of concept on GitHub. The tool, KeePass 2.X Master Password Dumper, analyzes memory dumps, for instance pagefile.sys, hiberfil.sys, or the KeePass process dump to return the master password in clear text. To be precise, the vulnerability may return all characters of the master password except for the first one. It is trivial, however, to run tests to find the single missing character.
The researcher goes on to explain that the issue is caused by SecureTextBoxEx, which causes leftover strings.
While the vulnerability may allow threat actors to retrieve the master password of the password manager, but it seems unlikely that it will be exploited on scale.
A likely scenario is a forensic investigation of a computer, as this may return the master password of the password manager. One of the best protections against this is to use full disk encryption and a strong password. Windows users may use the open source encryption software Vera Crypt for that. A password is required during system start to decrypt the system drive and boot the operating system.
The researcher suggests that users of KeePass may also delete hibernation, pagefiles and swapfiles regularly, but it is only a temporary recourse. Changing the master password helps as well, but also only temporarily.
KeePass 2.54 will address the issue. While it may be a month or two away, it is possible that it will be released faster, if reporting about the vulnerability is picking up pace.
Dominik Reichl describes the fix on the project's Sourceforge discussion forum. The updated version " calls Windows API functions for getting/setting the text of the text box directly, in order to avoid the creation of managed strings". This takes care of most of the leaks. To address the remaining ones, KeePass 2.54 will create dummy fragments in process memory.
The researcher tested the fix and confirmed that it is no longer possible to reproduce the attack on the fixed version. While there is a development build available that includes the fix, it is not recommended to run it, as it is beta software.
Certain KeePass forks, like KeePassXC, are not affected by the issue.
KeePass has protection against remaining the master password in the process memory, which turned out to be vulnerable (but the developer’s working on a fix).
KeePassXC is “not affected by the issue” becuase it doesn’t have this protection at all.
You can easily see that if you lock your KeePassXC workspace, dump its process and find your password in it with a HEX editor.
I’m hoping the fix is less than “a couple of months” away.
For the uninitiated, KeePass’s .kdbx databases can be opened and saved by KeePassXC (and vice versa). So for those concerned about this, I would suggest switching to XC for now, and running Privazer or the like to clean out any traces of your master PW in hibfile etc.
It seems that KeepassXC is not affected: https://github.com/keepassxreboot/keepassxc/discussions/9433
@linuxfan
Thanks for the link!