KeePass 是一个免费开源的密码管理器,它帮助你以安全的方式管理密码,用户理论上只需要记住一个主密码或选择密钥文件就可以解锁整个数据库,但近日有研究人员发现,KeePass 的主密码有被泄漏的风险。
这个漏洞的 CVE ID 为 CVE-2023-32784,影响了 KeePass 2.x 版本,不法分子可以利用这个漏洞来检索 KeePass 的明文主密码,即使系统没有运行或锁定。
发现该漏洞的安全研究员已在 GitHub 上发布了一个概念验证(PoC)工具 —— KeePass 2.X Master Password Dumper,这个工具可以分析内存转储,例如 pagefile.sys,hiberfil.sys,或 KeePass 进程转储,以返回清晰文本的主密码。
利用这个漏洞和 PoC 工具,可以返回 KeePass 主密码的所有字符,除了第一个字符。然而,这仅剩的一个字符也可以通过运行测试很快找到。
研究人员发现,这个问题是由 SecureTextBoxEx 引起的,这是一个 KeePass 用于输入密码而定制开发的文本框,它会在内存中为输入的每个字符创建了一个残留的字符串。
目前 KeePass 的开发者 Dominik Reichl 已经发布了 KeePass 2.54 的测试版本,该测试版本中已经包含了对该漏洞的修复。按照原本的开发进度,正式版本是要等到 7 月才会推出,但由于该漏洞的严重性,开发者将于 6 月初发出新的版本。
测试版中的补丁增加了一个 Windows API 函数调用,直接调用以获取/设置文本框的文本,从而避免创建托管字符串。此外,KeePass 现在还会在内存中创建假的片段,并与正确的片段混合。
KeePass 1.x 版本,以及 KeePass 的分支项目(如 KeePassXC),不受该问题影响。