
PoC zur Extraktion des KeePass-Master-Passworts für Linux
Dank an vdohney für das Finden dieser Sicherheitslücke und die verantwortungsvolle Meldung, sowie an Dominik Reichl für die großartige Open-Source-Software und die schnelle Bestätigung/Behebung des Problems.
Wahrscheinlich nicht. Dieser Exploit erfordert Zugriff auf das virtuelle Dateisystem /proc. Genauer gesagt, auf proc/[pid]/mem. Laut der proc-Manpage wird der Zugriff auf diese Datei durch einen ptrace-Zugriffsmodus, PTRACE_MODE_ATTACH_FSCREDS, geregelt, der auf den meisten Systemen auf den Root-Benutzer beschränkt ist.
Wenn ein Angreifer bereits Zugriff auf diese Dateien hat, sollten Sie sich um größere Probleme sorgen.
Bitte aktualisieren Sie auf KeePass 2.54, sobald es veröffentlicht wird (~Juli 2023), da es das Problem etwas entschärfen wird. (Forum)
Zuerst beginnt es mit dem Dumpen des Keepass-Prozessspeichers.
Das Standardverhalten besteht darin, alle /proc/<pid>/cmdline-Dateien zu durchsuchen und die pid derjenigen zu speichern, die das Schlüsselwort KeePass in ihrem Befehlszeilenargument enthalten.
Anschließend erfasst es die Adressen von Speichermaps in /proc/<pid>/maps, die nicht direkt mit einer Bibliothek verbunden sind, d. h. sie haben einen leeren Dateipfad.
Dann speichert es den gesamten Speicher dieser Maps in einem Puffer, indem es /proc/<pid>/mem ausnutzt. Dies wäre ein primitives Verhalten, um den Speicher eines beliebigen Prozesses unter Linux zu dumpen.
Es analysiert den Speicher, um übrig gebliebene Zeichenfolgen zu finden, die vom Eingeben des Master-Passworts durch den Benutzer stammen, Zeichenfolgen, die wie folgt aussehen •a, ••s, •••s, in Folge. Der erste Buchstabe fehlt. Weitere Funktionen finden Sie im Code.
gcc dump_pwd.c -o dump und schon kann es losgehen.
