Vulnerabilidad Crítica de Inyección SQL en PostgreSQL: Falla en Funciones de Escapado (CVE-2025-1094)

Por: Equipo Arce Systems

What is SQL Injection (SQLi)? Types & Examples. Part 1❗️

Una vulnerabilidad de inyección SQL de alta severidad, identificada como CVE-2025-1094, afecta las funciones de escapado de la biblioteca libpq en PostgreSQL. Descubierta por investigadores de Rapid7, esta falla permite inyección SQL en patrones de uso específicos, particularmente cuando se utiliza la herramienta interactiva psql.

Aunque fue divulgada y parcheada en febrero de 2025, sigue siendo un riesgo significativo en diciembre de 2025 para instalaciones no actualizadas, especialmente en entornos empresariales que utilizan versiones antiguas de PostgreSQL.

¿Qué es PostgreSQL y las Funciones Afectadas?

PostgreSQL es el sistema de gestión de bases de datos de código abierto más avanzado y ampliamente utilizado en el mundo.

La vulnerabilidad impacta funciones clave de libpq como PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() y PQescapeStringConn(), responsables de escapar cadenas para prevenir inyecciones SQL. El problema surge al manejar caracteres multibyte inválidos (como secuencias UTF-8 no válidas), lo que permite bypass de los mecanismos de escapado.

Detalles de la Vulnerabilidad (CVE-2025-1094)

Reportada por Stephen Fewer de Rapid7 en febrero de 2025:

  • Impacto: Permite inyección SQL cuando el input escapado se usa en comandos ejecutados por psql. Puede llevar a ejecución arbitraria de SQL y, en algunos casos, ejecución de comandos del sistema operativo mediante meta-comandos de psql (como ! para shell).
  • Puntuación CVSS: 8.1 (Alta/Crítica, dependiendo de la fuente).
  • Versiones Afectadas: PostgreSQL anteriores a 17.3, 16.7, 15.11, 14.16 y 13.19. Parches posteriores corrigieron regresiones.
  • Condiciones para Explotación: Requiere que una aplicación use estas funciones para construir consultas ejecutadas en psql con input no confiable. No es remota por defecto, pero se explotó en cadena con otras vulnerabilidades (ej. en productos BeyondTrust).
  • Explotaciones Conocidas: Usada en ataques reales, incluyendo brechas en BeyondTrust y reportes de explotación en el Tesoro de EE.UU. Existen PoC públicos en GitHub.

La falla radica en una suposición incorrecta: que el escapado siempre previene inyecciones, incluso con encoding inválido.

Cómo Mitigar y Protegerse

  1. Actualizar PostgreSQL Urgentemente:
    • Migre a versiones parcheadas: 17.3+, 16.7+, 15.11+, 14.16+ o 13.19+ (y posteriores para fixes de regresión).
    • En Ubuntu/Debian: sudo apt update && sudo apt upgrade postgresql
    • En Red Hat/CentOS/Rocky: sudo dnf update postgresql
  2. Mejores Prácticas:
    • Prefiera consultas parametrizadas o prepared statements en lugar de escapado manual.
    • Aplique principio de menor privilegio en usuarios de BD.
    • Evite ejecutar psql con input no confiable.
    • Monitoree logs por comandos sospechosos.
  3. Detección:
    • Use escáneres de vulnerabilidades (ej. Nessus, Qualys) y herramientas como pgAudit.
    • Revise dependencias en aplicaciones que usan libpq.

Fuentes:

Proteja sus bases de datos aplicando parches inmediatamente. ¡Siga news.arcesystems.com.co para más alertas de ciberseguridad!

Deja un comentario