Paris, le 10 février 2023

Le PostgreSQL Global Development Group a publié une mise à jour pour toutes les versions supportées de PostgreSQL, soit les versions 15.2, 14.7, 13.10, 12.14 et 11.19. Voici notre traduction.

visuel annonce

Cette version corrige une faille de sécurité, et plus de 60 bugs signalés au cours des trois derniers mois.

Pour la liste complète des changements, voir les notes de version.

Faille de sécurité CVE-2022-41862 : révélation de la mémoire du client à la connexion à un serveur modifié avec Kerberos

Versions affectées : 12 à 15.

Un serveur modifié, non authentifié, ou un « man in the middle » peut envoyer une chaîne sans terminaison lors de la mise en place du chiffrement de la couche de transport Kerberos. Si une application cliente libpq a un cache des autorisations Kerberos, et ne désactive pas explicitement l’option gssencmode, un serveur peut pousser la libpq à lire trop loin, et à renvoyer un message d’erreur contenant des octets non réinitialisés à partir du et après le tampon de réception. Si l’utilisateur de la libpq rend ce message accessible à l’attaquant d’une manière ou d’une autre, cela entraîne une divulgation de la mémoire lue. Nous n’avons ni confirmé ni exclu la faisabilité d’attaques menant à un crash, ni la présence d’informations notables ou confidentielles dans la mémoire divulguée.

Le projet PostgreSQL remercie Jacob Champion pour avoir rapporté ce problème.

Correctifs et améliorations

Cette mise à jour corrige plus de 60 bugs rapportés dans les derniers mois. Les problèmes listés ci-dessous affectent PostgreSQL 15. Certains affectent d’autres versions supportées de PostgreSQL.

Sont inclus dans cette version :

  • Correction pour que les tables partitionnées par héritage mettent à jour correctement les colonnes GENERATED dans les tables filles si la colonne GENERATED n’existe pas dans la table mère ou si la colonne générée de la table fille a des dépendances différentes de sa mère.
  • Plusieurs corrections pour la commande MERGE.
  • Permet à une requête WITH RECURSIVE … CYCLE d’accéder à sa colonne de sortie SET.
  • Corrige un problème avec des insertions en masse sur les tables distantes qui pourrait mener à des inconsistences logiques, par exemple un trigger BEFORE ROW pouvait ne pas gérer des lignes qui devraient être disponibles.
  • Rejet de l’utilisation de variables non définies dans les contrôles d’existence jsonpath.
  • Correction pour la récupération par indices d’un champ jsonb qui provient directement d’une colonne texte d’une table.
  • Prend en compte la mise à jour de checkpoint_completion_target au rechargement.
  • Trace le bon horodatage de fin en mode recovery_target_xid.
  • Correctif pour permettre les listes supérieures à 100 colonnes lors de l’utilisation de la réplication logique.
  • Empêche l’erreur wrong tuple length à la fin de VACUUM
  • Évite un commit immédiatement après ANALYZE lors de l’utilisation de requêtes en mode pipeline.
  • Plusieurs corrections apportées au planificateur de requêtes, dont une qui offre davantage de possibilités d’utiliser un cache de résultats avec les jointures de partitions.
  • Corrige la récupération des statistiques quand une relation change de type (par exemple quand une table est convertie en vue).
  • S’assure que la Full Text Search peut être interrompue pendant les comparaisons de phrases.
  • Corrige un deadlock entre DROP DATABASE et le worker de réplication logique.
  • Corrige une petite fuite de mémoire, le temps d’une session, quand CREATE SUBSCRIPTION échoue à se connecter.
  • Amélioration de performance pour les réplicats avec hot_standby activé qui exécutent des requêtes SELECT
  • Plusieurs correctifs pour la réplication logique qui améliore sa stabilité et la gestion de la fragmentation.
  • Corrige le plugin de réplication logique par défaut, pgoutput, pour qu’il ne renvoie pas de colonnes non comprises dans la liste des colonnes répliquées d’une table.
  • Correction d’une possible corruption de très grands fichiers de mappage de tablespaces dans pg_basebackup.
  • Supprime un avertissement inoffensif de pg_dump in --if-exists quand le schéma public n’a pas le propriétaire par défaut.
  • Corrige les commandes psql \sf et \ef pour gérer les fonctions en langage SQL avec des corps de fonction conformes au standard SQL (c’est-à-dire avec BEGIN ATOMIC)
  • Corrige l’auto-complétion de ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA.
  • Corrige l’extension pageinspect pour que ses fonctions d’accès au disque soient indiquées comme PARALLEL RESTRICTED.
  • Corrige l’extension seg pour ne pas planter ou afficher n’importe quoi lors de l’entrée d’un nombre de plus de 127 chiffres.

Cette version comprend des mises à jour des fichiers de données de fuseaux horaires vers tzdata 2022g, portant sur des évolutions législatives d’heure d’été au Groenland et au Mexique, plus des corrections historiques pour le Canada du nord, la Colombie, l’Espagne et Singapour. En particulier, un nouveau fuseau horaire, America/Ciudad_Juarez, a été séparé de America/Ojinaga. Pour la liste complète des changements, voir les notes de version.

Mise à jour

Toutes les mises à jour mineures de PostgreSQL sont cumulatives. Comme pour les précédentes, l’appliquer ne nécessite pas de sauvegarder et restaurer les bases de données ou d’utiliser pg_upgrade ; vous pouvez simplement arrêter PostgreSQL et mettre en place les nouveaux exécutables.

Les utilisateurs n’ayant pas appliqué les versions mineures précédentes peuvent avoir besoin de lancer des étapes additionnelles après la mise à jour ; consultez également leurs notes de version.

Liens


DALIBO

DALIBO est le spécialiste français de PostgreSQL®. Nous proposons du support, de la formation et du conseil depuis 2005.