感谢 vdohney 发现该漏洞并负责任地报告,以及 Dominik Reichl 开发了优秀的开源软件并迅速确认/修复了该问题。
可能不用。该漏洞利用需要访问 /proc 虚拟文件系统,具体来说是 proc/[pid]/mem。根据 proc 手册页,对此文件的访问受 ptrace 访问模式 PTRACE_MODE_ATTACH_FSCREDS 控制,在大多数系统中仅限于 root 用户。
如果恶意行为者已经能够访问这些文件,那么您应该有更大的担忧。
请尽快更新到 KeePass 2.54(大约 2023 年 7 月发布),因为它将在一定程度上缓解此问题。(论坛)
首先,它会转储 KeePass 的进程内存。
默认行为是扫描所有 /proc/<pid>/cmdline 文件,并存储命令行参数中包含关键字 KeePass 的进程的 pid。
然后,它会获取 /proc/<pid>/maps 中未直接关联库(即文件路径为空)的内存映射的地址。
接着,它利用 /proc/<pid>/mem 将所有映射的内存存储到缓冲区中。这是在 Linux 上转储任意进程内存的一种基本行为。
它会解析内存,尝试查找用户输入主密码时留下的残存字符串,这些字符串看起来像 •a, ••s, •••s 这样的序列。第一个字符会缺失。您可以通过查看代码找到其他功能。
gcc dump_pwd.c -o dump 然后就可以运行了。
