Por: Equipo de Arce Systems
Una vulnerabilidad de alta severidad en PostgreSQL, conocida como CVE-2024-0985 (CVSS 8.0), permite a un atacante autenticado ejecutar funciones SQL arbitrarias con los privilegios del usuario que emite el comando, potencialmente escalando privilegios hasta superusuario. La falla se encuentra en el comando REFRESH MATERIALIZED VIEW CONCURRENTLY y involucra técnicas como el uso de CREATE RULE en funciones maliciosas.
Divulgada en febrero de 2024 y parcheada posteriormente, esta vulnerabilidad sigue siendo relevante en 2025 para sistemas que no han aplicado las actualizaciones, especialmente en entornos con versiones legacy de PostgreSQL.
¿Qué es REFRESH MATERIALIZED VIEW CONCURRENTLY?
Las materialized views (vistas materializadas) en PostgreSQL son consultas guardadas como tablas para mejorar el rendimiento. El comando REFRESH MATERIALIZED VIEW CONCURRENTLY permite actualizarlas sin bloquear lecturas concurrentes, creando una tabla temporal interna.
El diseño original busca ejecutar funciones SQL como el propietario de la vista para seguridad, pero un retraso en la caída de privilegios (“late privilege drop”) permite que funciones definidas por el creador se ejecuten con los privilegios del emisor del comando.
Detalles de la Vulnerabilidad (CVE-2024-0985)
- Impacto: Un usuario con permisos para crear objetos (como vistas materializadas) puede inducir a un usuario privilegiado (superuser o miembro de roles del atacante) a ejecutar el comando REFRESH en su vista maliciosa, logrando ejecución arbitraria de SQL con privilegios elevados.
- Puntuación CVSS: 8.0 (Alta).
- Versiones Afectadas: PostgreSQL 12 (hasta 12.18), 13 (hasta 13.14), 14 (hasta 14.11), 15 (hasta 15.6) y 16 (hasta 16.2).
- Condiciones para Explotación:
- Requiere acceso autenticado y creación de una vista materializada maliciosa.
- El atacante crea funciones que usan CREATE RULE para manipular tablas temporales internas.
- Necesita “engañar” (luring) a un usuario privilegiado para ejecutar el REFRESH CONCURRENTLY.
- Existen pruebas de concepto (PoC) públicas, como en saites.dev.
La explotación no es remota directa, pero es efectiva en escenarios post-compromiso inicial.

Cómo Mitigar y Protegerse
- Actualizar PostgreSQL Inmediatamente:
- Migre a versiones parcheadas: 12.18+, 13.14+, 14.11+, 15.6+, 16.2+ o superior (recomendado 17+).
- En Ubuntu/Debian: sudo apt update && sudo apt upgrade postgresql
- En Red Hat/CentOS/Rocky: sudo dnf update postgresql
- Mejores Prácticas:
- Aplique principio de menor privilegio: Evite que usuarios no confiables creen vistas materializadas.
- No ejecute REFRESH CONCURRENTLY en objetos de usuarios desconocidos.
- Monitoree creación de vistas y funciones sospechosas.
- Use herramientas como pgAudit para logging.
- Detección:
- Escanee con vulnerabilidad scanners (Nessus, Qualys).
- Revise logs por ejecuciones de REFRESH en vistas no estándar.
Fuentes:
- Advisory Oficial PostgreSQL: https://www.postgresql.org/support/security/CVE-2024-0985/
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2024-0985
- Exploit PoC y Análisis: https://saites.dev/projects/personal/postgres-cve-2024-0985/
Proteja sus bases de datos aplicando parches y buenas prácticas. ¡Siga news.arcesystems.com.co para más alertas de ciberseguridad!