Mimet, le 10 novembre 2023
PostgreSQL 16.1, 15.5, 14.10, 13.13, 12.17, et 11.22 sont publiées !
Le PostgreSQL Global Development Group a publié une mise à jour pour toutes les versions supportées de PostgreSQL, c’est à dire les versions 16.1, 15.5, 14.10, 13.13, 12.17, and 11.22. Cette version corrige trois failles de sécurité et plus de 55 bugs signalés au cours des derniers mois. Voici notre traduction.
Cette version inclut des correctifs pour les index pour lesquels, dans certains cas, nous conseillons de les réindexer. Veuillez consulter la section “Mise à jour” pour plus de détails.
Pour la liste complète des changements, veuillez consulter les notes de version.
Avertissement sur la fin de vie de PostgreSQL 11
PostgreSQL 11 ne recevra désormais plus de correctifs de sécurité ou de bugs. Si vous utilisez PostgreSQL 11 en production, nous vous suggérons de planifier une mise à jour vers une version plus récente et supportée de PostgreSQL. Voir la politique de vie des versions pour plus d’informations.
Problèmes de sécurité
CVE-2023-5868 : Divulgation mémoire lors d’appels à des fonctions agrégées
Score CVSS v3 : 4.3
Versions affectées : 11 à 16. L’équipe de sécurité ne teste généralement pas les versions non prises en charge, mais ce problème est assez ancien.
Certains appels de fonctions agrégées recevant des arguments de type “inconnu” peuvent divulguer des octets de mémoire du serveur entre la fin de la valeur de type “inconnu” et l’octet zéro suivant. On obtient généralement une valeur de type “inconnu” par l’intermédiaire d’une chaîne littérale sans désignation de type. Nous n’avons pas confirmé ou exclu la viabilité des attaques qui prévoient la présence d’informations confidentielles importantes dans les octets divulgués.
Le projet PostgreSQL remercie Jingzhou Fu pour avoir rapporté ce problème.
CVE-2023-5869 : Dépassement de tampon dû à un débordement d’entier lors de la modification d’un tableau
Score CVSS v3 : 8.8
Versions affectées : 11 à 16. L’équipe de sécurité ne teste généralement pas les versions non prises en charge, mais ce problème est assez ancien.
Lors de la modification de certaines valeurs de tableaux SQL, des contrôles de débordement manquants permettent à des utilisateurs de bases de données authentifiés d’écrire des octets arbitraires dans une zone de mémoire, ce qui facilite l’exécution de codes arbitraires. Les contrôles de débordement manquants permettent également aux utilisateurs de bases de données authentifiés de lire une large zone de la mémoire du serveur. Le correctif CVE-2021-32027 a couvert certaines attaques de cette description, mais d’autres manquaient.
Le projet PostgreSQL remercie Pedro Gallegos pour avoir rapporté ce problème.
CVE-2023-5870 : Le rôle pg_cancel_backend
peut signaler certains processus du superutilisateur
Score CVSS v3 : 2.2
Versions affectées : 11 à 16. L’équipe de sécurité ne teste généralement pas les versions non supportées, mais ce problème est assez ancien.
La documentation indique que le rôle pg_cancel_backend
ne peut pas envoyer de signal à « un backend appartenant à un superutilisateur ». Au contraire, il peut envoyer un signal à un processus en arrière-plan, y compris le lanceur de réplication logique. Il peut envoyer un signal aux processus d’autovacuum
et ai lanceur d’autovacuum
. L’envoi d’un signal aux processus autovacuum
et aux deux lanceurs ne fournit pas d’exploit significatif, donc l’exploitation de cette vulnérabilité nécessite une extension non-core avec un processus d’arrière-plan moins résistant. Par exemple, un processus d’arrière-plan non-core qui ne redémarre pas automatiquement subirait un déni de service en ce qui concerne ce processus d’arrière-plan particulier.
Le projet PostgreSQL remercie Hemanth Sandrana et Mahendrakar Srinivasarao pour avoir rapporté ce problème.
Correction de bugs et améliorations
Cette mise à jour corrige plus de 55 bugs qui ont été signalés au cours des derniers mois. Les problèmes listés ci-dessous affectent PostgreSQL 16. Certains de ces problèmes peuvent également affecter d’autres versions supportées de PostgreSQL.
- Correction d’un problème où les index GiST avaient un comportement incorrect pendant une opération de “page split” (division de page), pouvant conduire à des résultats incorrects dans les recherches d’index ultérieures. Veuillez réindexer les index GiST après avoir installé cette mise à jour.
- Correction d’un problème où les index B-tree dédupliquaient incorrectement les colonnes de type
interval
. Veuillez réindexer tous index B-tree incluant une colonne de typeinterval
après avoir installé cette mise à jour. - Indexation plus efficace des valeurs de
date
,timestamptz
ettimestamp
dans les index BRIN en utilisant une opsclassminmax_multi
. Bien que cela ne soit pas obligatoire, nous recommandons de réindexer les index BRIN qui incluent ces types de données après avoir installé cette mise à jour. - Correction pour l’insertion en masse dans des tables partitionnées.
- Correction de plantages à l’exécution dans certains cas pour les tables partitionnées par hachage avec plusieurs clés de partition.
- Lancement de l’erreur adéquate si
pgrowlocks()
est appliqué à une table partitionnée. - Correction de la re-vérification incohérente des lignes mises à jour simultanément pendant un
MERGE
en modeREAD COMMITTED
. - Identification correcte de la table cible dans un
UPDATE
/DELETE
/MERGE
même lorsque la table parente est exclue par des contraintes. - Correction de la sur-allocation d’un
tsvector
construit. - Correction de
ALTER SUBSCRIPTION
pour appliquer les changements dans l’optionrun_as_owner
. - Plusieurs corrections pour
COPY FROM
. - Corrections pour le cas de lectures partielles du fichier
pg_control
. - Correction des erreurs “could not find pathkey item to sort” se produisant lors de la planification de fonctions d’agrégation avec les options
ORDER BY
ouDISTINCT
. - Lorsque
track_io_timing
est activé, inclure le temps pris par les opérations d’extension de relation comme temps d’écriture. - Suivi des dépendances des instructions
CALL
mises en cache, et replanification si nécessaire. - Considère comme
FATAL
des erreurs out of memory lors de la lecture des journaux. - Correction de
pg_dump
pour sauvegarderrun_as_owner
, une nouvelle option des souscriptions. - Correction de
pg_restore
pour que des restaurations partielles incluent à la fois les ACLs des tables sélectionnées et les ACLs des colonnes. - Ajout de règles à
pg_upgrade
pour contrôler l’usage des types de données obsolètesabstime
,reltime
ettinterval
. - Correction de
vacuumdb
pour que de multiples paramètres-N
excluent bien les tables de plusieurs schémas. amcheck
ne rapportera plus des suppressions de pages interrompues comme une corruption.- Correction des index
btree_gin
sur les champsinterval
afin qu’ils renvoient des données avec les opérateurs<
et<=
.
Mise à jour
Toutes les mises à jour de PostgreSQL sont cumulatives. Comme pour les autres versions mineures, les utilisateurs n’ont pas à décharger et de recharger leur base de données ni à utiliser pg_upgrade
pour appliquer cette mise à jour. Vous pouvez simplement arrêter PostgreSQL et mettre à jour ses binaires.
Nous recommandons de réindexer certains types d’index après avoir appliqué cette mise à jour, y compris :
- les index GiST ;
- les index B-tree qui utilisent le type de données
interval
; - les index BRIN qui utilisent les types de données
date
,timestamptz
ettimestamp
et une opsclass minmax_multi.
Sur PostgreSQL 12 et versions ultérieures, vous pouvez utiliser REINDEX CONCURRENTLY pour éviter de bloquer les écritures sur l’index et la table affectés, par exemple :
REINDEX INDEX CONCURRENTLY nom_de_votre_index;
Les utilisateurs qui ont sauté une ou plusieurs mises à jour pourraient avoir besoin d’exécuter des étapes supplémentaires après la mise à jour. Veuillez consulter les notes de version des versions antérieures pour plus de détails.
Pour plus de détails, veuillez consulter les notes de version.
Liens
- PostgreSQL (402) ,
- release (84) ,
- mineure (31) ,
- sécurité (55) ,
- 16 (12) ,
- 15 (14) ,
- 14 (24) ,
- 13 (24) ,
- 12 (29) ,
- 11 (26) ,
- update (46)