LOXODATA

PostgreSQL 15.2 et autres correctifs

2023-02-13   886 mots, 5 minutes de lecture

Le PGDG a publié une mise à jour de toutes les versions supportées de PostgreSQL, dans les versions 15.2, 14.7, 13.10, 12.14 et 11.19.

Cette publication corrige un problème de sécurité et plus de 60 bogues reportés ces trois derniers mois.

Pour la liste complète de changements, se référer aux notes de versions.

Problème de sécurité

CVE-2022-41862 : Divulgation de mémoire client à la connexion, avec Kerberos, avec un serveur modifié.

Versions affectées : 12 - 15.

Un serveur modifié non authentifié ou un intermédiaire non authentifié peut envoyer une chaîne de caractère non terminée pendant l’établissement du chiffrement de transport Kerberos. Lorsqu’une application cliente utilisant la libpq possède un cache d’identification Kerberos et ne désactive pas explicitement l’option gssencmode, un serveur peut forcer la libpq à une surlecture et à signaler un message d’erreur contenant des octets non initialisés depuis et en suivant de son tampon de réception. Si l’appelant de la libpq rend ce message accessible à un attaquant, ceci entraîne une divulgation des octects lus. Nous n’avons pas confirmé ou exclut la viabilité d’attaques qui se servirait d’un crash ou de la présence notable d’informations confidentielles de ces octets divulgués.

Le projet PostgreSQL remercie Jacob Champion d’avoir signalé ce problème.

Corrections des bogues et améliorations

Cette mise à jour règle plus de 60 bogues rapportés ces derniers mois. La liste ci-dessous concerne des problèmes sur la version 15. Certains, concernent également d’autres versions de PostgreSQL.

Sont inclus dans cette livraison :

  • correctif pour les tables partitionnées pour mettre à jour correctement les colonnes GENERATED dans les tables filles si la colonne GENERATED n’existe pas dans la table parente ou si la colonne fille générée possède des dépendances différentes du parent ;
  • plusieurs correctifs pour la commande MERGE ;
  • permettre à une requête WITH RECURSIVE … CYCLE d’accéder à sa colonne SET de sortie ;
  • correction d’une erreur avec l’insertion par lot sur tables étrangères pouvant induire des incohérences logiques. Par exemple, un trigger BEFORE NOW peut ne pas traiter les lignes qui devraient être disponibles ;
  • interdiction de l’utilisation de variables non définies dans les vérifications d’existence de jsonpath ;
  • correctif pour jsonb subscripting provenant directement d’une colonne texte de table ;
  • prise en compte des valeurs mises à jour de checkpoint_completion_target au rechargement ;
  • trace de la valeur correcte de l’estampille temporelle pour le mode recovery_target_xid ;
  • correctif pour autoriser des listes de colonnes de plus de 100 éléments lors de l’utilisation de la réplication logique ;
  • prévention de l’erreur “mauvaise taille de tuple” à la fin d’un VACUUM ;
  • évite un commit immédiat après un ANALYZE lors de l’utilisation d’une chaîne de traitement ;
  • plusieurs correctifs sur le planificateur de requête, incluant celui de fournir plus d’opportunités pour utiliser la mémoïsation pour les jointures partition à partition ;
  • correctif pour la collecte de statistiques pour gérer correctement les changements de type d’une relation (par exemple lorsqu’une table est convertie en vue) ;
  • assurance que les requêtes de full text search peuvent être annulées pendant la reconnaissance de phrases ;
  • correction des interblocages entre DROP DATABASE et le processus de travail de la réplication logique ;
  • correction des fuites mémoires pour les sessions de courte durée lorsqu’un CREATE SUBSCRIPTION échoue lors de la connexion ;
  • amélioration de performance pour les réplicas avec le paramètre hot_standy activé qui traitent des requêtes SELECT ;
  • plusieurs corrections sur le décodage logique qui améliore sa stabilité et la gestion du bloat ;
  • plusieurs corrections du plugin de décodage logique par défaut, pgoutput, pour ne pas envoyer les colonnes qui ne sont pas listées dans la liste des colonnes répliquées d’une table ;
  • correction d’une corruption possible de très gros fichiers de mappage d’espace de table dans pg_basebackup ;
  • suppression un avertissement sans conséquence de pg_dump dans le mode --if-exists lorsque le schéma public est détenu par propriétaire autre que celui par défaut ;
  • corrige les commandes \sf et \ef de psql pour gérer les fonctions SQL avec un corps de fonction du standard SQL (par exemple, BEGIN ATOMIC) ;
  • correction de la complétion par tabulation des commandes ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA ;
  • mise à jour de l’extension pageinspect pour marquer les fonctions d’accès disque comme PARALLEL RESTRICTED ;
  • correction de l’extension seg pour ne pas crasher ou afficher des erreurs si un nombre en entrée contient plus de 127 chiffres ;

Cette mise à jour contient aussi les données tzdata de la publication 2022g pour les changements réglementaires DST au Groenland et Mexique, plus des corrections historiques pour le Canada du Nord, la Colombie, et Singapour. Notamment, un nouveau fuseau horaire, America/Ciudad_Juarez, a été créé à partir de celui de America/Ojinaga.

Pour la liste complète des changements, veuillez consulter les notes de versions

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.

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.

Liens