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
, ytimestamp
en los índices BRIN al utilizar una clase de operadorminmax_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 modoREAD 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
oDISTINCT
. - 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ónrun_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 obsoletosabstime
,reltime
ytinterval
. - 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
, ytimestamp
y una clase de operadorminmax_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
- Descargas
- Notas de la versión
- Seguridad
- Política de versiones
- Anuncio del lanzamiento de PostgreSQL 16
- Sigan @postgresql en Twitter
- Donaciones
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.