Un investigador conocido como "vdohney" descubrió una vulnerabilidad crítica (CVE-2023-32784) en el gestor de contraseñas de código abierto KeePass.
Esta vulnerabilidad permite a actores hostiles obtener la contraseña maestra almacenada en la memoria del software. Aunque no se ha abordado la vulnerabilidad, se ha puesto a disposición una herramienta de explotación de prueba de concepto (PoC) llamada "KeePass 2.X Master Password Dumper".
El problema afecta principalmente a SecureTextBoxEx, el cuadro de texto personalizado de KeePass utilizado para introducir la contraseña maestra y contraseñas adicionales durante la edición. El atacante necesita acceder al volcado de procesos, al archivo de intercambio (pagefile.sys), al archivo de hibernación (hiberfil.sys) o a un volcado de RAM del sistema completo para explotar el fallo mediante la herramienta PoC.
No hay necesidad de ejecución de código, y el readme afirma que el ataque funciona independientemente de si la memoria proviene de un volcado de proceso, volcado de RAM, archivo de hibernación o archivo de intercambio. Vdohney también afirmó en el artículo de GitHub que no importa si la máquina o el espacio de trabajo del usuario objetivo está apagado, y que las contraseñas pueden seguir siendo volcadas desde la memoria incluso si KeePass ya no está en funcionamiento.
Además de esto, cabe destacar que vulnerabilidades similares, como la "vulnerabilidad ghostscript", también ponen de manifiesto la creciente preocupación por la gestión de la memoria en las aplicaciones de software. KeePass Master Password Dumper es un programa que puede recuperar la contraseña maestra de la memoria de KeePass. Excepto por el carácter inicial, puede recuperar la contraseña en texto plano. Funciona independientemente de la fuente de memoria, como un volcado de proceso, archivo swap, archivo de hibernación o volcado de RAM. La debilidad es causada por el uso de un cuadro de entrada de contraseña a medida llamado "SecureTextBoxEx", que mantiene un registro de los caracteres tecleados en memoria.
La debilidad explotable resulta de la construcción en memoria de cadenas residuales para cada carácter introducido. Debido al funcionamiento de .NET, estas cadenas son extremadamente difíciles de eliminar una vez formadas. Cuando se teclea la palabra "Password", por ejemplo, se crean cadenas residuales como -a, --s, --s, ---w, ----o, -----r, y -----d. Excepto para el primer carácter, el programa PoC busca estos patrones en el volcado y ofrece posibles caracteres de contraseña para cada lugar.
El fallo afecta a la rama de Windows de KeePass 2.X, con posibles consecuencias para Linux y macOS. Afortunadamente, el problema se ha solucionado en las versiones de prueba de KeePass v2.54, y la fecha de lanzamiento oficial está fijada para julio de 2023.
Al igual que otros problemas de seguridad de gran repercusión, como las vulnerabilidades de Tomcat que afectan a las aplicaciones web basadas en Java, este problema de KeePass pone de relieve la importancia de manejar los datos confidenciales en memoria de forma segura.
Aunque los dos sistemas difieren en arquitectura y caso de uso, ambos demuestran cómo una mala gestión de la memoria o unas configuraciones por defecto inseguras pueden dar lugar a graves infracciones si se aprovechan.
El peligro de un uso indebido generalizado de CVE-2023-32784 sigue siendo mínimo. Por lo tanto, KeepassXC, una bifurcación de KeePassX y una implementación multiplataforma de KeePass, no se ve afectada por este problema.
Las fuentes de este artículo incluyen un artículo de HelpnetSecurity.

