Blog

Noticias, PostgreSQL

Lanzamiento de PostgreSQL 16.3, 15.7, 14.12, 13.15, y 12.19

El Grupo Global de Desarrollo de PostgreSQL ha lanzado una actualización para todas las versiones soportadas de nuestro sistema de base de datos, incluyendo la 16.3, 15.7, 14.12, 13.15, y 12.19. Esta versión corrige una vulnerabilidad de seguridad y más de 55 errores notificados en los últimos meses.

Se ha encontrado una vulnerabilidad de seguridad en las vistas de sistema pg_stats_ext y pg_stats_ext_exprs, que podría permitir a los usuarios de bases de datos autenticados acceder a datos para los que no tienen privilegios suficientes de visualización. La corrección de esta vulnerabilidad sólo se aplica a nuevas instalaciones de PostgreSQL, es decir, aquellas que se crean con la utilidad initdb tras la aplicación de esta corrección. Si disponen de una instalación actual de PostgreSQL y les preocupa este problema, sigan las instrucciones de la sección «Actualización» para solucionarlo.

Para consultar la lista completa de los cambios realizados, revisen las notas de la versión.

Notificación de EOL para PostgreSQL 12

PostgreSQL 12 dejará de recibir correcciones el 14 de noviembre de 2024. Si están ejecutando PostgreSQL 12 en un entorno de producción, les sugerimos que hagan planes para actualizar a una versión más reciente y soportada de PostgreSQL. Para más información, consulten nuestra política de versiones.

Problemas de seguridad

CVE-2024-4317: Visibilidad restringida de las entradas en pg_stats_ext y pg_stats_ext_exprs al propietario de la tabla

Puntuación base CVSS v3.1: 3.1

Versiones soportadas vulnerables: 14 – 16.

La falta de autorización en las vistas integradas pg_stats_ext y pg_stats_ext_exprs de PostgreSQL permite a usuarios de base de datos sin privilegios leer los valores más comunes y estadísticas de los comandos CREATE STATISTICS de otros usuarios. Los valores más comunes pueden revelar valores de columna que el usuario sin privilegios no podría leer de otro modo o resultados de funciones que no podrían ejecutar.

Esta corrección sólo se aplica a instalaciones PostgreSQL nuevas, es decir, aquellas que se crean con la herramienta initdb tras la aplicación de esta corrección. Si disponen de una instalación actual de PostgreSQL y este problema les preocupa, sigan las instrucciones de la sección «Actualización» para solucionarlo.

El proyecto PostgreSQL agradece a Lukas Fittl por reportar este problema.

Corrección de errores y mejoras

Esta actualización corrige más de 55 errores reportados en los últimos meses. Aunque los problemas que se enumeran a continuación afectan a PostgreSQL 16, es posible que algunos de ellos afecten también a otras versiones de PostgreSQL.

  • Corrección de un problema de INSERT con cláusula VALUES multiregistro en el que una columna de destino es un dominio sobre una matriz o un tipo compuesto.
  • Se requiere el privilegio SELECT en la tabla de destino al utilizar MERGE  con la cláusula DO NOTHING.
  • En virtud del estándar SQL, se produce un error si durante una modificación un registro de destino en MERGE se une a más de un registro de origen.
  • Corrección de la eliminación incorrecta de la partición NULL en el caso de que una tabla esté particionada en una columna booleana y la consulta incluya una cláusula booleana IS NOT.
  • Hace que ALTER FOREIGN TABLE ... SET SCHEMA mueva al nuevo esquema cualquier secuencia de su propiedad.
  • CREATE DATABASE reconoce ahora las palabras clave STRATEGY sin distinción de mayúsculas y minúsculas.
  • Se corrige la forma en que EXPLAIN cuenta las páginas de un montón (heap) durante el escaneo de bitmaps. Ahora muestra todas las páginas contadas, no sólo las que tienen tuplas visibles.
  • Se evita el bloqueo mutuo durante la eliminación de tablas temporales huérfanas.
  • Varias correcciones para VACUUM, incluida una que puede reducir las operaciones de E/S innecesarias.
  • Varias correcciones en el planificador de consultas.
  • Optimización de determinadas operaciones cuando una instalación cuenta con miles de roles.
  • Corrección de la confusión en procedimientos del lenguaje SQL que devuelven una única columna de tipo compuesto.
  • Corrección de redondeo incorrecto y riesgos de desbordamiento en date_bin().
  • Detección de desbordamiento de enteros al sumar o restar un interval con un timestamp o viceversa.
  • Corrección de varias condiciones de carrera en la replicación lógica, incluyendo el determinar si es necesaria una operación de sincronización de tablas.
  • Desconexión si el socket cliente de una nueva sesión del servidor no puede ponerse en modo no-bloqueo.
  • initdb -c ahora ignora entre mayúsculas y minúsculas en los nombres de los parámetros.
  • Corrección de la forma en que PL/pgSQL analiza los comentarios de una sola línea (-- style comments) que siguen una expresión.

Actualización

Todas las actualizaciones de PostgreSQL son acumulativas. Al igual que en otras actualizaciones menores, para instalar esta actualización no es necesario realizar un volcado y volver a cargar la base de datos o usar pg_upgrade. Es suficiente con detener PostgreSQL y actualizar los binarios.

Para las instalaciones existentes afectadas por CVE-2024-4317 en las que se desee corregir el problema, deberán realizarse los siguientes pasos:

  1. Buscar la secuencia de comandos SQL fix-CVE-2024-4317.sql en el directorio share de la instalación de PostgreSQL (por ejemplo, en /usr/share/postgresql/), o descargarlo desde el repositorio git de PostgreSQL en una de las siguientes direcciones URL. Deberá utilizarse la secuencia de comandos que coincida con la versión principal:
  2. PostgreSQL 16: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_16_STABLE
  3. PostgreSQL 15: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_15_STABLE
  4. PostgreSQL 14: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_14_STABLE

Desde las URL que aparecen arriba, hagan clic en la URL que dice «raw» para descargar una versión que se pueda copiar y pegar.

Asegúrense de usar el script apropiado para su versión principal de PostgreSQL. Si no encuentran este archivo, o bien su versión no es vulnerable (sólo PostgreSQL 14, 15 y 16 están afectados) o su versión menor es demasiado antigua para contar con la corrección.

  1. En cada base de datos del clúster, ejecuten el script fix-CVE-2024-4317.sql como superusuario de la base de datos. Por ejemplo, en psql, con el archivo ubicado en /usr/share/postgresql/, este comando quedaría así:

\i /usr/share/postgresql/fix-CVE-2024-4317.sql

  1. También deberá ejecutarse este script en las bases de datos template0 y template1, o la vulnerabilidad seguirá existiendo en las bases de datos que se crearán posteriormente. Para arreglar template0, es necesario permitir temporalmente que acepte conexiones. Esto puede hacerse mediante el siguiente comando:

ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;

Tras ejecutar el script fix-CVE-2024-4317.sql en template0 y template1, deberá desactivarse la posibilidad de que template0 acepte conexiones. Es posible hacerlo con el siguiente comando:

ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;

Si anteriormente omitieron una o más actualizaciones, podría ser necesario seguir algunos pasos posteriores a la actualización. Para más detalles consulten las notas de las versiones anteriores.

Para más detalles, véanse las notas de la versión.

Enlaces

Si desean proponer alguna corrección o hacer sugerencias en relación con este anuncio de lanzamiento, envíenlas a la lista de correo pública pgsql-www@lists.postgresql.org.

Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.