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.2 42.6.x antes de 42.6.1 42.5.x antes de 42.5.5 42.4.x antes de 42.4.4 42.3.x antes de 42.3.9 42.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.

Preguntas frecuentes sobre la vulnerabilidad CVE-2024-1597

CVE-2024-1597 es una vulnerabilidad de inyección SQL en el driver JDBC de PostgreSQL. Permite que un atacante inyecte código SQL malicioso cuando una aplicación Java se conecta a una base de datos usando un modo inseguro específico (preferQueryMode=simple), lo que puede llevar a una omisión de autenticación.

No "infecta" un sistema, sino que explota una falla en cómo la aplicación se comunica con la base de datos. Un atacante proporciona una entrada maliciosa (como un nombre de usuario) que contiene comandos SQL. El driver vulnerable luego ejecuta estos comandos en la base de datos, lo que le da el control al atacante.

Sí. Cualquier aplicación que use una versión antigua y vulnerable del driver JDBC con la configuración insegura específica está en riesgo. Los atacantes saben que los desarrolladores no siempre actualizan sus dependencias, así que seguirán buscando esta falla fácil de explotar.

¡Actualiza tus dependencias! Asegúrate de que todas tus aplicaciones Java usen una versión parcheada del driver JDBC de PostgreSQL. Como buena práctica, evita usar la configuración preferQueryMode=simple a menos que tengas una razón muy específica y comprendida para hacerlo. El escaneo regular de código y dependencias es esencial.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Probar Huntress gratis