Le PGDG a publié une mise à jour de toutes les versions supportées de PostgreSQL. Il s’agit des versions 16.1, 15.5, 14.10, 13.13, 12.17 et 11.22. Cette publication corrige près de 55 bogues repérés durant les derniers mois.
Cette publication inclut des correctifs sur les index. Il peut s’avérer nécessaire de réindexer certains index. Se référer à la section “Mise à jour” pour plus de détails.
Annonce de fin de support pour PostgreSQL 11
Ceci est la dernière publication pour PostgreSQL 11. PostgreSQL 11 arrive au terme de son support et ne recevra plus de correctifs de sécurité ou de bogues. Si vous utilisez PostgreSQL 11 en production, nous vous encourageons à mettre à jour vers une version plus récente et supportée de PostgreSQL. Se référer à notre politique de version pour plus d’informations.
Problèmes de sécurité
CVE-2023-5868 : Divulgation mémoire dans les appels de fonctions d’aggrégation
CVSS v3 Base Score : 4.3
Versions affectées : 11 - 16. L’équipe de sécurité ne teste pas les versions non supportées, mais c’est un problème de longue date.
Certains appels à des fonctions d’aggrégation recevant en paramètre des arguments de type “unknown” peuvent divulguer des octets de mémoire du serveur depuis la fin de la valeur “unknown” jusqu’au prochain octet vide. Il est possible d’obtenir une valeur de type “unknown” par l’utilisation d’une chaîne littérale sans désignation de type. Nous n’avons pas confirmé ou évalué la viabilité des attaques qui pourraient profiter de la présence de données confidentielles dans les octets divulgués.
Le projet PostgreSQL remercie Jingzhou Fu pour avoir signalé ce problème.
CVE-2023-5869 : Dépassement de tampon lors d’un débordement d’entier dans une modification de tableau
CVSS v3 Base Score: 8.8
Versions affectées: 11 - 16. L’équipe de sécurité ne teste pas les versions non supportées, mais c’est un problème 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 mémoire qui facilite l’exécution de code arbitraire. Les contrôles de débordement manquants permettent également aux utilisateurs authentifiés de la base de données de lire une large zone de la mémoire du serveur. Le correctif CVE-2021-32027 a couvert certaines attaques de cette description, mais il en a manqué d’autres.
Le projet PostgreSQL remercie Pedro Gallegos pour avoir signalé le problème.
CVE-2023-5870 : Le rôle ‘pg_cancel_backend’ peut signaler certains processus superutilisateur
CVSS v3 Base Score: 2.2
Versions affectées : 11 - 16. L’équipe de sécurité ne teste pas les versions non supportées, mais c’est un problème ancien.
La documentation stipule que le rôle ‘pg_cancel_backend’ ne peut signaler “un processus backend appartenant à un superutilisateur”. À l’inverse, il peut signaler des processus en tâche de fond, incluant l’exécuteur de la réplication logique. Il peut signaler les processus d’autovacuum et l’exécuteur d’autovacuum. Signaler les processus d’autovacuum et les deux exécuteurs ne permet pas d’exploiter quoi que ce soit. C’est pourquoi l’exploitation de cette vulnérabilté requiert une extension non supportée avec un processus de tâche de fond moins résilient. Par exemple, un processus de tâche de fond non légitime qui ne redémarre pas automatiquement se verra attribuer un refus de service eu égard de ce processus de tâche de fond.
Le projet PostgreSQL remercie Hemanth Sandrana et Mahendrakar Srinivasarao pour avoir signalé le problème.
Corrections des bogues et améliorations
Cette mise à jour corrige près de 55 bogues qui ont été reportés depuis ces derniers mois. Les problèmes listés ci-dessous affectent la version 16 de PostgreSQL. Certaines peuvent aussi 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 “division de page” pouvant mener à des résultats incorrects dans des recherches d’index ultérieures. Merci de réindexer les index GiST après la mise à jour.
- Correction d’un problème avec les index B-tree qui peuvent ne pas dédupliquer correctement des colonnes de type
interval
. Merci de réindexer tous les index B-tree incluant des colonnes de typeinterval
après la mise à jour. - Amélioration de l’efficacité de l’indexation de valeurs de type
date
,timestamptz
ettimestamp
dans des index BRIN. Bien que non nécéssaire, nous vous recommandons de réindexer après la mise à jour les index BRIN pouvant inclure ces types de colonnes. - Correction de l’insertion par lot dans des tables partitionnées.
- Correction pour les tables partitionnées par hash avec plusieurs clés de partitionnement pendant les phases de génération et de pruning à l’éxécution pouvant entraîner des crashs dans certains cas.
- Envoyer l’erreur correcte si
pgrowlocks()
est appliqué à une table partitionnée. - Correction d’une revalidation inconsistente de mise à jour concurentielle de lignes lors d’un
MERGE
avec le mode d’isolationREAD COMMITTED
. - Identifier correctement la table cible lors d’un
UPDATE
/DELETE
/MERGE
hérité même lorsque la table parente est exclue par contraintes. - Corrige la sur-allocation d’un
tsvector
construit. - Corrige la commande
ALTER SUBSCRIPTION
pour appliquer les changements avec l’optionrun_as_owner
. - Plusieurs corrections pour la commande
COPY FROM
- Plusieurs corrections pour la gestion des lectures dégradées avec
pg_control
. - Corrige les erreurs “could not find pathkey item to sort” survenant lors de la planification de fonctions d’aggrégation avec les options
ORDER BY
ouDISTINCT
. - Ajouter le temps des opérations d’extension de relation au temps d’écriture lorsque le paramètre
track_io_timing
est activé. - Suivre les dépendances de requêtes
CALL
en cache, et les replanifier au besoin. - Considérer les erreurs “out-of-memory” comme
FATAL
pendant la lecture des WAL. - Corrige la commande
pg_dump
pour exporter la nouvelle optionrun_as_owner
des souscriptions. - Corrige la commande
pg_restore
pour inclure lors de restaurations sélectives les droits de niveau table et colonne pour les tables sélectionnées. - Ajout de la vérification dans la commande
pg_upgrade
de l’utilisation de types de données obsolètesabstime
,reltime
ettinterval
. - Corrige la commande
vacuumdb
afin de prendre en compte l’exclusion de tables dans des schémas différents avec plusieurs option-N
. amcheck
ne reportera plus les interruptions de suppression de page comme des corruptions.- Corrige les index
btree_gin
sur les colonnes de typeinterval
afin de retourner correctement les données lors de l’utilisation des opérateurs<
et<=
.
Mise à jour
Toutes les publications de mises à jour de PostgreSQL sont
cumulatives. Comme pour les autres mises à jour mineures, il n’est pas
nécessaire d’extraire et de recharger les bases de données ni
d’utiliser pg_upgrade
pour appliquer cette mise à jour ;
il suffit simplement d’arrêter PostgreSQL et de mettre à jour les binaires.
Nous recommandons de reindexer certains types d’index après la mise à jour, dont :
- les index GiST
- les index B-tree utilisant le type de données
interval
- les index BRIN utilisant les types de données
date
,timestamptz
ettimestamp
Avec PostgreSQL 12 et plus récent, vous pouvez utiliser la commande REINDEX CONCURRENTLY
pour ne pas bloquer les écritures sur les index et tables affectés, par exemple :
REINDEX INDEX CONCURRENTLY your_index_name;
Les utilisateurs ayant sauté une ou plusieurs mises à jour peuvent avoir besoin d’étapes additionnelles après la mise à jour. Les notes de publication des versions précédentes fournissent les détails.
Pour plus de détails, se référer à la note de publication de versions.
Liens
- Téléchargements
- Notes de version
- Page sur la sécurité
- Politique de version
- Annonce de la sortie de PostgreSQL 16
- Suivre @postgresql sur Twitter
- Faire un don
Si vous avez des corrections ou suggestions sur cette annonce de publication, merci de les envoyer à la mailing list publique pgsql-www@lists.postgresql.org.