Vulnerabilidad CVE-2024-1597
Vulnerabilidad CVE-2024-1597
Publicado: 16/12/2025
Escrito por: Nadine Rozell
¿Qué es la vulnerabilidad CVE-2024-1597?
CVE-2024-1597 es una vulnerabilidad crítica de inyección SQL encontrada en el controlador PostgreSQL JDBC (Java Database Connectivity). Este controlador es el preferido para las aplicaciones Java que necesitan comunicarse con una base de datos PostgreSQL. La vulnerabilidad permite que un atacante inyecte código SQL malicioso al usar un modo de conexión específico que no es el predeterminado. Una explotación exitosa puede provocar una omisión de autenticación y la ejecución arbitraria de código en el servidor de la base de datos.
¿Cuándo se descubrió?
La vulnerabilidad se reveló el 20 de febrero de 2024. El equipo de desarrollo del controlador PostgreSQL JDBC lanzó versiones parcheadas para corregir la falla. El error afecta un modo de conexión menos común, pero su gravedad implica que cualquiera que lo use corre un alto riesgo. Es un ejemplo clásico de cómo incluso configuraciones poco comunes pueden tener implicaciones de seguridad enormes.
Productos y versiones afectados
Producto | Versiones afectadas | Versiones corregidas / enlaces de parches |
pgjdbc - PostgreSQL JDBC Driver | 42.7.x antes de 42.7.242.6.x antes de 42.6.142.5.x antes de 42.5.542.4.x antes de 42.4.442.3.x antes de 42.3.942.2.x antes de 42.2.28 | 42.7.2, 42.6.1, 42.5.5, 42.4.4, 42.3.9, 42.2.28 y versiones posteriores |
Descripción técnica de CVE-2024-1597
La vulnerabilidad existe específicamente cuando se usa el parámetro preferQueryMode=simple en la cadena de conexión JDBC. En este modo, el controlador no depura correctamente la entrada del usuario, lo que crea una brecha para la inyección SQL. Un atacante puede diseñar un nombre de usuario u otro parámetro de conexión que contenga sintaxis SQL maliciosa. Cuando la aplicación intenta conectarse a la base de datos, esta sintaxis maliciosa se ejecuta directamente, lo que permite al atacante omitir la autenticación, ejecutar consultas arbitrarias y, potencialmente, ejecutar comandos en el sistema operativo subyacente a través de funciones de la base de datos.
Tácticas, técnicas y procedimientos (TTPs)
Un atacante primero tendría que encontrar una aplicación Java que se conecte a una base de datos PostgreSQL usando una versión vulnerable del controlador JDBC y la configuración preferQueryMode=simple. Luego inyectaría un payload SQL malicioso en un campo controlable por el usuario, como el campo de nombre de usuario en una página de inicio de sesión. Este payload podría estar diseñado para iniciar sesión sin contraseña, exfiltrar datos de tablas o abrir una shell para tomar control del servidor.
Indicadores de compromiso
La detección implica buscar consultas SQL inusuales o malformadas en tus registros de PostgreSQL. Específicamente, busca consultas provenientes de intentos de conexión de aplicaciones que contengan comandos o lógica SQL inesperados (por ejemplo, OR 1=1). También es clave monitorear los registros de la aplicación en busca de cadenas de conexión sospechosas que contengan payloads de inyección SQL. Un aumento anormal en errores de base de datos relacionados con la sintaxis también podría ser un indicador de intentos de inyección fallidos.
Pruebas de concepto y exploits conocidos
Existen exploits de prueba de concepto disponibles públicamente que muestran cómo omitir la autenticación con un nombre de usuario diseñado especialmente. Por ejemplo, un nombre de usuario como ' a=1; seguido de una consulta SQL maliciosa puede engañar al sistema. Aunque no se explota tan ampliamente en el mundo real como otras vulnerabilidades, su documentación pública la convierte en una herramienta fácil para cualquier atacante que apunte a una aplicación Java mal configurada.
¿Cómo detectar la vulnerabilidad CVE-2024-1597?
La mejor forma de detectarla es auditar tus aplicaciones. Revisa todos tus proyectos Java para ver qué versión del controlador PostgreSQL JDBC usan. Si encuentras una versión vulnerable, debes verificar si alguna de tus cadenas de conexión de base de datos usa el parámetro preferQueryMode=simple. Las herramientas de análisis de composición de software (SCA) son excelentes para identificar dependencias desactualizadas como esta en todo tu código.
Impacto y riesgo de la vulnerabilidad CVE-2024-1597
El impacto es crítico para cualquier aplicación que use la configuración vulnerable. Una explotación exitosa le da a un atacante acceso directo a tu base de datos. Esto puede provocar una filtración de datos catastrófica, corrupción de datos o el compromiso total del servidor. Dado que las bases de datos suelen ser las joyas de la corona de una organización, pues contienen datos de clientes, registros financieros y propiedad intelectual, el riesgo es tan alto como puede ser.
Estrategias de mitigación y remediación
La solución principal es actualizar tu driver JDBC de PostgreSQL a una versión parcheada. Esto no es negociable. Si por alguna razón no puedes actualizar el driver, la solución temporal inmediata es dejar de usar preferQueryMode=simple. El modo predeterminado (extended) no es vulnerable a este ataque específico. Sin embargo, confiar en esta solución temporal es, en el mejor de los casos, una medida provisional. Parchar la biblioteca es la única forma de estar realmente seguro.