
PoC de extracción de la contraseña maestra de KeePass para Linux
Gracias a vdohney por encontrar esta vulnerabilidad y reportarla de manera responsable, y a Dominik Reichl por el excelente software de código abierto y por el rápido reconocimiento/corrección del problema.
Probablemente no. Este exploit requiere acceso al sistema de archivos virtual /proc. Específicamente, a proc/[pid]/mem.
Según la página man de proc, el acceso a este archivo está regulado por un modo de acceso ptrace, PTRACE_MODE_ATTACH_FSCREDS, que está limitado al usuario root en la mayoría de los sistemas.
Si un actor malicioso ya tiene acceso a esos archivos, deberías tener preocupaciones mayores.
Por favor, actualiza a KeePass 2.54 en cuanto se publique (~julio de 2023), ya que mitigará en cierta medida este problema. (Foro)
Primero comienza volcando la memoria del proceso de KeePass.
El comportamiento predeterminado será escanear todos los archivos /proc/<pid>/cmdline y almacenar el pid de aquellos que tengan la palabra clave KeePass en su argumento de línea de comandos.
Luego obtendrá las direcciones de los mapas de memoria en /proc/<pid>/maps que no estén directamente asociados con una biblioteca, es decir, que tengan una ruta de archivo vacía.
Después almacenará la memoria de todos esos mapas en un búfer aprovechando /proc/<pid>/mem. Este sería un comportamiento primitivo para volcar la memoria de cualquier proceso en Linux.
Analizará la memoria para intentar encontrar cadenas residuales del momento en que el usuario escribió su contraseña maestra, cadenas que se ven así •a, ••s, •••s, en secuencia. La primera letra faltará. Puedes encontrar otras funcionalidades revisando el código.
gcc dump_pwd.c -o dump y listo.
