Blog

PostgreSQL

Lanzamiento de PostgreSQL 13.3, 12.7, 11.12, 10.17 y 9.6.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 13.3, 12.7, 11.12, 10.17 y 9.6.22. Con este lanzamiento se solucionan tres vulnerabilidades de seguridad y se corrigen más de 45 errores reportados en los últimos tres meses.

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

Problemas de seguridad

CVE-2021-32027: Desbordamiento de búfer producido por un desbordamiento de enteros en los cálculos de subscripción del array.

Versiones afectadas: 9.6 – 13. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.

Al modificar ciertos valores de array SQL, la falta de comprobaciones de límites permite a los usuarios autenticados de la base de datos escribir bytes de forma arbitraria en una amplia zona de la memoria del servidor.

El proyecto PostgreSQL agradece a Tom Lane por reportar este problema.

CVE-2021-32028: Divulgación de memoria en INSERT ... ON CONFLICT ... DO UPDATE

Versiones afectadas: 9.6 – 13. El equipo de seguridad no suele realizar pruebas en versiones no soportadas. Esta funcionalidad apareció por primera vez en 9.5.

Utilizando un comando INSERT ... ON CONFLICT ... DO UPDATE en una tabla creada de cierta forma a propósito, un atacante puede leer de forma arbitraria bytes de memoria del servidor. La configuración por defecto permite a cualquier usuario autenticado de la base de datos crear objetos requeridos y completar sin problema un ataque. Un usuario que carezca de los privilegios CREATE y TEMPORARY en todas las bases de datos y del privilegio CREATE en todos los esquemas no puede realizar dicho ataque.

El proyecto PostgreSQL agradece a Andres Freund por reportar este problema.

CVE-2021-32029: Divulgación de memoria en tablas particionadas UPDATE ... RETURNING

Versiones afectadas: 11 – 13

Utilizando intencionalmente el comando UPDATE ... RETURNING en una tabla particionada creada a propósito, un atacante puede leer de forma arbitraria bytes de memoria del servidor. La configuración por defecto permite a cualquier usuario autenticado de la base de datos crear objetos requeridos y completar sin problema un ataque. Un usuario que carezca de los privilegios CREATE y TEMPORARY en todas las bases de datos y del privilegio CREATE en todos los esquemas no puede realizar dicho ataque.

El proyecto PostgreSQL agradece a Tom Lane por reportar este problema.

Corrección de errores y mejoras

Esta actualización corrige más de 45 errores reportados en los últimos meses. Aunque algunos de estos afectan únicamente a la versión 13, también podrían aplicarse a otras versiones compatibles.

A continuación se enumeran algunas de estas correcciones:

  • Corrige el cálculo potencialmente incorrecto en los resultados de UPDATE ... RETURNING para actualizaciones unidas entre particiones.
  • Corrige ALTER TABLE ... ALTER CONSTRAINT al usar restricciones de clave foránea en tablas particionadas. No pudiendo ajustar las propiedades DEFERRABLE y/o INITIALLY DEFERRED de las restricciones y triggers en las particiones de hoja, el comando ocasionaba un comportamiento inesperado. Tras actualizar a esta versión, es posible ejecutar el comando ALTER TABLE ... ALTER CONSTRAINT para solucionar cualquier error en tablas particionadas.
  • Asegura que, al adjuntar una tabla hija con ALTER TABLE ... INHERIT, las columnas generadas en la tabla padre sean generadas de forma idéntica en la tabla hija.
  • Prohíbe marcar una columna de identidad como NULL.
  • Permite ALTER ROLE ... SET/ALTER DATABASE ... SET para definir los parámetros role, session_authorization y temp_buffers.
  • Asegura que REINDEX CONCURRENTLY preserve cualquier objetivo estadístico establecido en el índice.
  • Corrige un problema por el que, en algunos casos, al guardar registros en los triggers AFTER, se producían caídas del sistema.
  • Corrige la forma en que to_char() maneja los códigos de formato de mes en números romanos con intervalos negativos.
  • Corrige el uso de un valor no inicializado al procesar un cuantificador \{m,n\} en una expresión regular en modo BRE.
  • Corrige los errores del planificador «could not find pathkey item to sort» que se producían en ciertas situaciones cuando la clave de ordenamiento suponía una función de agregado o de ventana deslizante.
  • Corrige un problema con los recorridos de índices BRIN por mapas de bits que podía producir el error «could not open file».
  • Corrige las respuestas potencialmente erróneas de las búsquedas en el índice GIN tsvector cuando existen múltiples registros coincidentes.
  • Corrige la funcionalidad de COMMIT AND CHAIN tanto en el servidor como en psql.
  • Evita el cambio incorrecto de timeline al recuperar transacciones de dos fases no comprometidas desde el WAL, el cual podría producir problemas de consistencia y la imposibilidad de reiniciar el servidor.
  • Asegura que wal_sync_method esté configurado como fdatasync por defecto en las nuevas versiones de FreeBSD.
  • Desactiva el parámetro vacuum_cleanup_index_scale_factor y la opción de almacenamiento.
  • Corrige varias fugas de memoria en el servidor, incluyendo una en el proceso de inicialización de los parámetros SSL/TLS.
  • Restablece el comportamiento anterior de \connect service=XYZ a psql, impidiendo que las variables de entorno (por ejemplo, PGPORT) sustituyan las entradas en el archivo de servicio.
  • Corrige la forma en que pg_dump maneja las columnas generadas en las tablas particionadas.
  • Añade comprobaciones adicionales a pg_upgrade para las tablas de usuario que contienen tipos de datos no actualizables.
  • En Windows, initdb imprime ahora las instrucciones sobre cómo iniciar el servidor con pg_ctl utilizando barras inversas de separación.
  • Corrige pg_waldump para que, al generar las estadísticas por registro, cuente correctamente los registros XACT.

Para una lista completa de los cambios disponibles, consulta las notas de la versión.

Notificación de EOL para PostgreSQL 9.6

PostgreSQL 9.6 dejará de recibir correcciones el 11 de noviembre de 2021. Si estás utilizando PostgreSQL 9.6 en un entorno de producción, te sugerimos hacer planes para actualizar a una versión más reciente y soportada de PostgreSQL. Para más información consulta nuestra política de versiones.

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 anteriormente se omitieron una o más actualizaciones, podría ser necesario seguir algunos pasos posteriores a la actualización.

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