Blog

PostgreSQL

Lanzamiento de PostgreSQL 15.4, 14.9, 13.12, 12.16, 11.21, y PostgreSQL 16 Beta 3

El Grupo Global de Desarrollo de PostgreSQL ha lanzado una actualización para todas las versiones soportadas de PostgreSQL, entre ellas la 15.4, 14.9, 13.12, 12.16 y 11.21, así como la tercera versión beta de PostgreSQL 16. Esta versión corrige dos vulnerabilidades de seguridad y más de 40 errores reportados en los últimos meses.

Si utilizan índices BRIN para la búsqueda de valores NULL, tendrán que reindexarlos tras la actualización a esta versión. En PostgreSQL 12 y posteriores, pueden utilizar REINDEX CONCURRENTLY para evitar el bloqueo de escrituras en índices y tablas afectadas, por ejemplo:

REINDEX INDEX CONCURRENTLY nombre_de_su_índice; 

Para ver la lista completa de cambios, revisen las notas de la versión.

Aviso de EOL para PostgreSQL 11

PostgreSQL 11 dejará de recibir correcciones el 9 de noviembre de 2023. Si están ejecutando PostgreSQL 11 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-2023-39417: Un script de extensión @substitutions@ entre comillas permite inyecciones SQL.

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

Un script de extensión es vulnerable si utiliza @extowner@, @extschema@, o @extschema:...@ en una construcción entre comillas (comillas de dólar, '', o ""). Ninguna extensión integrada es vulnerable. Los usos vulnerables aparecen en un ejemplo de la documentación y en extensiones no integradas. Por lo tanto, el prerrequisito para un ataque implica que un administrador haya instalado archivos de una extensión vulnerable, de confianza pero no integrada. Si se cumple este prerrequisito, un atacante con privilegios CREATE a nivel de base de datos podrá ejecutar código arbitrario como superusuario de inicialización. Puesto que PostgreSQL bloqueará este ataque en el servidor central, no es necesario modificar extensiones individuales.

El proyecto PostgreSQL agradece a Micah Gate, Valerie Woolard, Tim Carey-Smith y Christoph Berg por reportar este problema.

CVE-2023-39418: MERGE no logra aplicar las políticas de seguridad a nivel de registros para UPDATE o SELECT.

Versiones soportadas vulnerables: 15.

PostgreSQL 15 introdujo el comando MERGE, el cual no logra probar los nuevos registros según las políticas de seguridad de registros definidas para UPDATE y SELECT. Si las políticas para UPDATE y SELECT rechazan algún registro que las políticas para INSERT no prohíben, un usuario podría almacenar dichos registros. Las consecuencias resultantes dependerán de la aplicación. Este problema afecta únicamente a bases de datos que hayan utilizado CREATE POLICY para definir una política de seguridad a nivel de registros.

El proyecto PostgreSQL agradece a Dean Rasheed por reportar este problema.

Nota sobre PostgreSQL 16 Beta

Con este lanzamiento se publica la tercera versión beta de PostgreSQL 16, lo cual acerca aún más a la comunidad a la disponibilidad general prevista aproximadamente para el final del tercer trimestre.

De acuerdo con el espíritu de la comunidad de código abierto de PostgreSQL, recomendamos encarecidamente que prueben las nuevas características de PostgreSQL 16 en sus sistemas. Esto nos ayudará a eliminar errores u otros posibles problemas. Aunque no recomendamos ejecutar PostgreSQL 16 Beta 3 en un entorno de producción, les invitamos a encontrar formas de ejecutar esta versión beta con cargas de trabajo típicas de sus aplicaciones.

Sus pruebas y comentarios ayudarán a la comunidad a asegurar que PostgreSQL 16 cumpla con nuestros estándares de entrega de una versión estable y confiable de la base de datos relacional de código abierto más avanzada del mundo. Por favor, lean más sobre nuestro proceso de pruebas beta y cómo pueden contribuir en:

https://www.postgresql.org/developer/beta/

Para más información sobre todas las características y cambios en PostgreSQL 16, consulten las notas de la versión en:

https://www.postgresql.org/docs/16/release-16.html

Corrección de errores y mejoras

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

  • Corrección del manejo de valores NULL en índices BRIN. Esta corrección no se aplica a los índices BRIN existentes: deberá ejecutarse REINDEX para corregir los índices BRIN utilizados en la búsqueda de valores NULL.
  • Evita que quede una base de datos corrupta cuando se interrumpe DROP DATABASE.
  • Varias correcciones para índices particionados.
  • Corrección de ALTER EXTENSION ... SET SCHEMA. En caso de que la extensión contenga objetos fuera del esquema de la extensión, se producirá un error.
  • Corrección del control de dependencias en los métodos de acceso a las tablas.
  • No se utilizan índices únicos parciales para pruebas de unicidad en el planificador.
  • Manejo correcto de sub-SELECTs en expresiones de políticas RLS y vistas con restricciones de seguridad al expandir las acciones de reglas.
  • Corrección de condiciones de carrera en la detección de conflictos para el modo de aislamiento de transacciones SERIALIZABLE.
  • Corrección de fallos intermitentes al intentar actualizar campos de columnas compuestas que requieren TOAST fuera de línea.
  • Corrección de varias fugas de memoria que se producían durante la vida útil de una consulta.
  • Se aceptan fracciones de segundo en la entrada del método datetime() de jsonpath.
  • Se incrementa a 10.240 bytes el límite de tokens en pg_hba.conf y pg_ident.conf.
  • Un error de falta de memoria de JIT ahora provocará un error FATAL de PostgreSQL en lugar de una excepción de C++.
  • Se permite que el proceso de VACUUM continúe tras detectar ciertos tipos de corrupción en índices B-tree. Aunque esta corrección mantiene activo el proceso de VACUUM, sigue siendo necesario realizar un REINDEX para reparar el índice corrupto.
  • Se evita la aplicación doble de transacciones preparadas durante la recuperación tras una caída del sistema.
  • Asegura que el checkpoint invoque fsync en una tabla recién creada aunque esté vacía.
  • Se silencia los errores «missing contrecord» para evitar el registro de mensajes inexactos de pg_waldump y walsender.
  • Corrección de la función [fuzzystrmatch](https://www.postgresql.org/docs/current/fuzzystrmatch.html Soundex difference() para que gestione correctamente las entradas vacías
  • Varias correcciones para intarray, incluida la prohibición de matrices de entrada de gran tamaño en un índice GiST.
  • Corrección de pg_dump para que maneje correctamente los cuerpos de función SQL estándar (BEGIN ATOMIC) que requieren dependencias de tiempo de análisis sintáctico en índices únicos.

Para la lista completa de cambios realizados, consulten las notas de la versión.

Correcciones en PostgreSQL 16 Beta 3

  • Se añade el comando \drg a psql para mostrar información sobre la asignación de roles.
  • Se añade el ID de la línea de tiempo a los nombres de archivo generados con  pg_waldump --save-fullpage.
  • Corrección de la caída que se produce tras un bloqueo mutuo en un worker en paralelo de VACUUM.

Consulten las notas de la versión para consultar la lista completa de nuevas características y cambios:

https://www.postgresql.org/docs/16/release-16.html

Actualización

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

Si utilizan índices BRIN para la búsqueda de valores NULL, tendrán que reindexarlos tras la actualización a esta versión. En PostgreSQL 12 y posteriores, pueden utilizar REINDEX CONCURRENTLY para evitar el bloqueo de escrituras en índices y tablas afectadas, por ejemplo:

REINDEX INDEX CONCURRENTLY nombre_de_su_índice;

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

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

Actualizar a PostgreSQL 16 Beta 3

Para actualizar a PostgreSQL 16 Beta 3 desde una versión previa de PostgreSQL 16 Beta, deberán utilizar una estrategia similar a la empleada para la actualización entre versiones principales de PostgreSQL (por ejemplo, pg_upgrade o pg_dump / pg_restore). Para más información, vean la documentación, en la sección sobre actualizaciones.

Pruebas de errores y compatibilidad

La estabilidad de cada versión de PostgreSQL depende en gran medida de que ustedes, la comunidad, prueben la próxima versión con sus cargas de trabajo y herramientas de prueba para detectar errores y regresiones antes del lanzamiento oficial de PostgreSQL 16. Dado que se trata de una versión beta, es posible que se produzcan cambios en los comportamientos de la base de datos, los detalles de las funciones y las API. Sus impresiones y pruebas ayudarán a determinar los ajustes finales de las nuevas funciones, así que les rogamos que la prueben lo antes posible. La calidad de las pruebas de los usuarios contribuirá a definir el momento en el que podamos lanzar la versión final.

Una lista de problemas abiertos está disponible al público en el wiki de PostgreSQL. Pueden reportar errores usando el siguiente formulario en el sitio web de PostgreSQL:

https://www.postgresql.org/account/submitbug/

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 public

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