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 typeintervalaprès avoir installé cette mise à jour. - Indexation plus efficace des valeurs de
date,timestamptzettimestampdans 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
MERGEen modeREAD COMMITTED. - Identification correcte de la table cible dans un
UPDATE/DELETE/MERGEmême lorsque la table parente est exclue par des contraintes. - Correction de la sur-allocation d’un
tsvectorconstruit. - Correction de
ALTER SUBSCRIPTIONpour 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 BYouDISTINCT. - Lorsque
track_io_timingest activé, inclure le temps pris par les opérations d’extension de relation comme temps d’écriture. - Suivi des dépendances des instructions
CALLmises en cache, et replanification si nécessaire. - Considère comme
FATALdes erreurs out of memory lors de la lecture des journaux. - Correction de
pg_dumppour sauvegarderrun_as_owner, une nouvelle option des souscriptions. - Correction de
pg_restorepour que des restaurations partielles incluent à la fois les ACLs des tables sélectionnées et les ACLs des colonnes. - Ajout de règles à
pg_upgradepour contrôler l’usage des types de données obsolètesabstime,reltimeettinterval. - Correction de
vacuumdbpour que de multiples paramètres-Nexcluent bien les tables de plusieurs schémas. amcheckne rapportera plus des suppressions de pages interrompues comme une corruption.- Correction des index
btree_ginsur les champsintervalafin 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,timestamptzettimestampet 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 (456) ,
- release (93) ,
- mineure (36) ,
- sécurité (63) ,
- 16 (17) ,
- 15 (19) ,
- 14 (29) ,
- 13 (29) ,
- 12 (30) ,
- 11 (26) ,
- update (51)