Blog

PostgreSQL

Lanzamiento de PostgreSQL 16.1, 15.5, 14.10, 13.13, 12.17, y 11.22

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.1, 15.5, 14.10, 13.13, 12.17, y 11.22. Con esta versión se corrigen de forma definitiva tres vulnerabilidades de seguridad y 55 errores notificados en los últimos meses.

Esta versión incluye correcciones para índices, por lo que, en algunos casos, aconsejamos reindexar. Para más información, consulten la sección «Actualización».

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

Notificación de EOL para PostgreSQL 11

Esta es la versión final de PostgreSQL 11. PostgreSQL 11 ha llegado al final de su vida útil y dejará de recibir correcciones de seguridad y errores. Si están utilizando PostgreSQL 11 en un entorno de producción, les sugerimos hacer 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-2023-5868: Divulgación de memoria en llamadas a funciones de agregado

Puntuación base CVSS v3: 4.3

Versiones soportadas vulnerables: 11 – 16. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.

Ciertas llamadas a funciones de agregado que recibían argumentos de tipo «unknown» podían revelar bytes de memoria del servidor desde el final del valor de tipo «unknown» hasta el siguiente byte cero. Normalmente se obtiene un valor de tipo «unknown» a través de una cadena de caracteres sin designación de tipo. No se ha confirmado ni descartado la viabilidad de ataques orientados a obtener información confidencial importante en los bytes revelados.

El proyecto PostgreSQL agradece a Jingzhou Fu por reportar este problema.

CVE-2023-5869: Desbordamiento de búfer por desbordamiento de enteros en modificaciones de matrices

Puntuación base CVSS v3: 8.8

Versiones soportadas vulnerables: 11 – 16. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.

Al modificar ciertos valores de matrices SQL, la omisión de comprobaciones de desbordamiento permitía a usuarios autenticados de una base de datos escribir bytes arbitrarios en cierta área de memoria, facilitando así la ejecución de código arbitrario. La omisión de las comprobaciones de desbordamiento también permitía a usuarios autenticados de la base de datos leer una amplia área de memoria del servidor. La corrección CVE-2021-32027 cubría algunos ataques de este tipo, pero omitía otros.

El proyecto PostgreSQL agradece a Pedro Gallegos por reportar este problema.

CVE-2023-5870: El rol pg_signal_backend puede señalar ciertos procesos de superusuario

Puntuación base CVSS v3: 2.2

Versiones soportadas vulnerables: 11 – 16. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.

La documentación indica que el rol pg_signal_backend no puede señalar «un backend propiedad de un superusuario». Por el contrario, sí puede señalar workers en segundo plano, incluido el lanzador de replicación lógica. También puede señalar workers de autovacuum y el lanzador de autovacuum. Sin embargo, señalar los workers de autovacuum y los dos lanzadores mencionados no favorece ningún exploit significativo. Para explotar esta vulnerabilidad es necesaria una extensión non-core con un worker en segundo plano menos resistente. Por ejemplo, un worker en segundo plano non-core que no se reinicie automáticamente experimentaría una denegación de servicio con respecto a ese determinado worker en segundo plano.

El proyecto PostgreSQL agradece a Hemanth Sandrana y Mahendrakar Srinivasarao 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 que provocaba un comportamiento incorrecto de los índices GiST durante una operación de «división de páginas», lo cual podía dar lugar a resultados erróneos en las búsquedas de índices posteriores. Se recomienda reindexar los índices GiST tras instalar esta actualización.
  • Corrección de un problema por el cual los índices B-tree de-duplicaban incorrectamente las columnas interval. Se recomienda reindexar cualquier índice B-tree que incluya columnas interval después de instalar esta actualización.
  • Indexación más eficaz de los valores de date, timestamptz, y timestamp en los índices BRIN al utilizar una clase de operador minmax_multi. Aunque no es indispensable, recomendamos reindexar los índices BRIN que incluyan estos tipos de datos tras instalar esta actualización.
  • Corrección para inserciones masivas de tablas en tablas particionadas.
  • Corrección para tablas con particiones hash y múltiples claves de partición durante la generación por pasos y la eliminación en tiempo de ejecución. En algunos casos, podía provocar caídas del sistema. 
  • Arroja el mensaje de error correcto si se aplica pgrowlocks() a una tabla particionada
  • Corrección de inconsistencias en la comprobación de registros actualizados simultáneamente al realizar un MERGE con el modo READ COMMITTED.
  • Identificación correcta de la tabla de destino en operaciones de UPDATE/DELETE/MERGE heredadas, incluso cuando se ha excluido la tabla padre mediante restricciones.
  • Corrección de la sobreasignación en un tsvector construido.
  • Corrección en ALTER SUBSCRIPTION para aplicar los cambios en la opción run_as_owner.
  • Varias correcciones para COPY FROM,
  • Varias correcciones para el manejo de lecturas rasgadas con pg_control.
  • Corrección del error «could not find pathkey item to sort» que se producía al planificar funciones de agregado con las opciones ORDER BY o DISTINCT.
  • Cuando track_io_timing está activado, se incluye el tiempo empleado por las operaciones de extensión de relación como tiempo de escritura.
  • Seguimiento de las dependencias de sentencias CALL almacenadas en caché y replanificación de las mismas cuando sea necesario.
  • Los fallos de falta de memoria se tratarán como FATAL durante la lectura de WAL.
  • Corrección de pg_dump para el volcado de la nueva opción run_as_owner en las suscripciones.
  • Corrección de pg_restore para que las recuperaciones selectivas incluyan ACL tanto a nivel de tabla como de columna en las tablas seleccionadas.
  • Adición de lógica a pg_upgrade para comprobar el uso de tipos de datos obsoletos abstime, reltime y tinterval.
  • Corrección de vacuumdb para que varios interruptores -N excluyan de forma efectiva tablas en varios esquemas.
  • amcheck ya no notificará como corrupción la eliminación interrumpida de una página..
  • Corrección de los índices  btree_gin en columnas interval para que devuelvan datos de forma correcta al utilizar los operadores < y <=.

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.

Se recomienda reindexar determinados tipos de índices tras aplicar esta actualización, entre ellos

  • Índices GiST
  • Índices B-tree que utilizan el tipo de datos interval
  • Índices BRIN que utilizan los tipos de datos date, timestamptz, y timestamp y una clase de operador minmax_multi

En PostgreSQL 12 y versiones posteriores, es posible utilizar REINDEX CONCURRENTLY para evitar, por ejemplo, el bloqueo de escrituras en el índice y en las tablas afectadas:

REINDEX INDEX CONCURRENTLY your_index_name;

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.