Lanzamiento de PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19 y 9.6.24
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 14.1, 13.5, 12.9, 11.14, 10.19 y 9.6.24. Con esta versión se solucionan de forma definitiva dos vulnerabilidades de seguridad y se corrigen más de 40 errores reportados en los últimos tres meses.
Además, esta es la versión final de PostgreSQL 9.6. Si están ejecutando PostgreSQL 9.6 en un entorno de producción, les sugerimos que hagan planes para actualizar a una versión más reciente.
Para consultar la lista completa de los cambios, revisen las notas de la versión.
Problemas de seguridad
CVE-2021-23214: El servidor procesa bytes no cifrados de un ataque de tipo man-in-the-middle
Versiones afectadas: 9.6 – 14. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.
Si el servidor está configurado para utilizar la autenticación trust
con requisito clientcert
o la autenticación cert
, un ataque de tipo man-in-the-middle podría inyectar consultas SQL arbitrarias, en el momento de establecer inicialmente una conexión, a pesar del uso de la verificación del certificado SSL y del cifrado.
El proyecto PostgreSQL agradece a Jacob Champion por reportar este problema.
CVE-2021-23222: libpq procesa bytes no cifrados de un ataque de tipo man-in-the-middle
Versiones afectadas: 9.6 – 14. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.
Un ataque de tipo man-in-the-middle puede inyectar respuestas falsas a las consultas iniciales del cliente, a pesar del uso de la verificación del certificado SSL y del cifrado.
En caso de producirse una serie de condiciones previas, el atacante podría incluso exfiltrar la contraseña del cliente u otros datos confidenciales que pudieran haberse introducido al principio de la sesión. Para acceder a esa información, el atacante tendrá que recurrir a algún método para engañar al servidor del cliente. Una implementación conocida que presenta esa propiedad es una configuración de PostgreSQL vulnerable a CVE-2021-23214.
Al igual que con cualquier explotación de CVE-2021-23214, el servidor debe estar utilizando la autenticación trust
con requisito clientcert
o la autenticación cert
. Para que una contraseña sea descifrada, el cliente debe disponer de ella, lo cual es atípico cuando se utiliza una configuración de autenticación vulnerable a CVE-2021-23214. El atacante debe contar con alguna otra forma de acceso al servidor para extraer los datos exfiltrados (una cuenta de acceso válida y sin privilegios sería suficiente).
El proyecto PostgreSQL agradece a Jacob Champion por reportar este problema.
Corrección de errores y mejoras
Esta actualización corrige más de 40 errores que fueron reportados en los últimos meses. Aunque los problemas que se enumeran a continuación afectan a PostgreSQL 14, es posible que algunos de ellos afecten también a otras versiones de PostgreSQL.
Entre las correcciones figuran las siguientes:
- Corrección de la replicación física para los casos en los que se produzca una caída del primario tras el envío de un segmento de WAL que termine con un registro parcial de WAL. Al aplicar esta actualización, es necesario actualizar los servidores standby antes que el primario, para que estén listos para manejar la corrección en caso de caída del primario.
- Corrección para que
VACUUM
en paralelo procese los índices con un tamaño inferior al umbralmin_parallel_index_scan_size
, en caso de que la tabla cuente con al menos dos índices por encima de ese tamaño. Este problema no afecta a autovacuum. Si están siendo afectados por este problema, deberán reindexar cualquier tabla a la que se le haya hecho vacuum manualmente. - Corrección de las causas por las que
CREATE INDEX CONCURRENTLY
yREINDEX CONCURRENTLY
escribían índices corruptos. Deberán reindexarse los índices creados de forma concurrente. - Corrección del problema relacionado con la vinculación/desvinculación de una partición, el cual podía provocar que ciertas consultas
INSERT
/UPDATE
actuaran de forma incorrecta en sesiones activas. - Corrección para la creación de un nuevo tipo de rango con
CREATE TYPE
, la cual podía ocasionar problemas en los triggers de eventos posteriores o en las ejecuciones subsiguientes del comandoCREATE TYPE
. - Corrección para las actualizaciones de campos de elementos en arrays pertenecientes a un dominio que es parte de un compuesto.
- Impide la combinación de
FETCH FIRST WITH TIES
yFOR UPDATE SKIP LOCKED
. - Corrección de la pérdida de precisión en la función numérica
power()
que se producía en casos límite. - Corrección de la recuperación de la instantánea de un Portal dentro de una subtransacción, la cual podía provocar una caída. Por ejemplo, esto podía ocurrir en PL/pgSQL cuando a un
COMMIT
sucedía inmediatamente un bloqueBEGIN ... EXCEPTION
que realizaba una consulta. - Limpieza correcta en el caso de que una transacción falle tras exportar su instantánea. Este problema podía producirse si después de crear un slot de replicación y luego eliminarlo, se volvía a crear un nuevo slot de replicación en la misma sesión.
- Corrección para el monitoreo del wraparound de «subtransacciones desbordantes» en los servidores standby, lo cual podía provocar una degradación del rendimiento.
- Asegura que las transacciones preparadas se contabilicen correctamente durante la promoción de un servidor standby.
- Asegura que se utilice el nivel de bloqueo correcto al renombrar una tabla.
- Evita que se produzca una caída al eliminar un rol que posee objetos que están siendo eliminados simultáneamente.
- Impide establecer
huge_pages
como “on” cuandoshared_memory_type
essysv
- Corrección de la comprobación del tipo de consulta en el
RETURN QUERY
de PL/pgSQL. - Varias correcciones para
pg_dump
, incluida la capacidad de volcar correctamente los privilegios predeterminados no globales. - Uso de los datos del proyecto CLDR para asignar los nombres de las zonas horarias de Windows a las zonas horarias de IANA.
Esta actualización también contiene la versión tzdata 2021e para los cambios de la ley DST en Fiji, Jordania, Palestina y Samoa, además de correcciones históricas para Barbados, Islas Cook, Guyana, Niue, Portugal y Tonga.
Además, la zona Pacific/Enderbury ha pasado a llamarse Pacific/Kanton. Asimismo, las siguientes zonas se han fusionado con zonas cercanas más pobladas cuyos horarios coinciden con ellas desde 1970: África/Accra, América/Atikokan, América/Blanc-Sablon, América/Creston, América/Curacao, América/Nassau, América/Port_of_Spain, Antártida/DumontDUrville y Antártida/Syowa. En todos estos casos, el nombre de la zona anterior se mantiene como alias.
Para la lista completa de los cambios disponibles, consulten las notas de la versión.
PostgreSQL 9.6 llegó a su EOL
Esta es la versión final de PostgreSQL 9.6. Si están utilizando PostgreSQL 9.6 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.
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 dump y volver a cargar la base de datos o usar pg_upgrade. Es suficiente con detener PostgreSQL y actualizar los binarios.
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.