Vulnerabilidad de inyección SQL en la herramienta interactiva de PostgreSQL psql – CVE-2025-1094

CVE-2025-1094 es una vulnerabilidad grave de tipo inyección SQL descubierta por Rapid7, que afecta a todas las versiones compatibles de PostgreSQL anteriores a las versiones 17.3, 16.7, 15.11, 14.16 y 13.19. La vulnerabilidad fue identificada durante el análisis de un ataque que aprovechaba CVE-2024-12356, una falla de ejecución remota de código (RCE) no autenticada en los productos BeyondTrust. En todos los casos probados, la explotación exitosa de CVE-2024-12356 requería primero la explotación de CVE-2025-1094 para lograr la ejecución de código.

Con una puntuación CVSS de 8.1 (Alta), esta vulnerabilidad deriva de defectos en la herramienta psql de PostgreSQL, que permiten a un atacante inyectar comandos SQL mediante entradas manipuladas específicamente. Este problema permaneció como un día cero (zero-day) hasta su divulgación por parte de Rapid7.

Fecha2025-02-20 16:22:45
Información
  • Tendencia
  • Corrección disponible

Resumen técnico

CVE-2025-1094 es causada por una suposición incorrecta respecto a la seguridad de la entrada procesada a través de las rutinas de escape de cadenas de PostgreSQL. Estas rutinas están diseñadas para gestionar entradas no confiables dentro de las consultas SQL, pero un atacante puede eludir estas protecciones en escenarios específicos donde caracteres UTF-8 no válidos son procesados incorrectamente por la herramienta psql.

La vulnerabilidad ocurre cuando la herramienta psql ejecuta una instrucción SQL que contiene entrada no confiable escapada que incluye secuencias de bytes no válidas, lo que conduce a una inyección SQL exitosa. Si un atacante logra inyectar comandos SQL, puede escalar el ataque ejecutando metacomandos a través de psql, los cuales permiten la ejecución de comandos de shell en el sistema operativo subyacente.

Alternativamente, los atacantes pueden ejecutar comandos SQL arbitrarios y controlados por el atacante directamente en la base de datos PostgreSQL, con el potencial de comprometer aún más el sistema, incluyendo la exfiltración de datos, la manipulación de datos o la compromisión del sistema.

Escenarios de explotación:

  1. Inyección SQL
    Los atacantes pueden inyectar código SQL arbitrario a través de psql, omitiendo las protecciones de escape. Esto puede permitir el acceso no autorizado a datos confidenciales o la manipulación de las operaciones de la base de datos.

  2. Ejecución arbitraria de código mediante metacomandos
    La explotación de la inyección SQL permite a los atacantes utilizar los metacomandos de psql, que ejecutan comandos de shell del sistema operativo. Esto puede llevar al control total del sistema afectado, incluida la posibilidad de ejecutar comandos arbitrarios con privilegios del sistema operativo.

Recomendaciones

  1. Actualizar PostgreSQL

Los usuarios deben actualizar inmediatamente a PostgreSQL 17.3, 16.7, 15.11, 14.16 o 13.19, las cuales corrigen la vulnerabilidad de inyección SQL y garantizan la protección del sistema frente a la explotación.

  1. Verificar y monitorear las consultas SQL
  • Implementar medidas de seguridad adicionales como la validación de entrada y las consultas parametrizadas para prevenir vulnerabilidades adicionales de inyección SQL.
  • Revisar el uso de metacomandos dentro de la herramienta interactiva de PostgreSQL (psql) para limitar la posibilidad de que usuarios no confiables puedan ejecutar comandos de shell arbitrarios.
  1. Limitar el acceso a psql

Limitar el acceso a psql solo a administradores de confianza y, si es posible, deshabilitar la ejecución interactiva de comandos de shell para los usuarios regulares.

[Callforaction-THREAT-Footer]