Paris, le 18 mai 2020

Le PostgreSQL Global Development Group publie une mise à jour de toutes les versions supportées de sa base de données, soient les versions 12.3, 11.8, 10.13, 9.6.18 et 9.5.22. Cette mise à jour corrige un problème de sécurité trouvé dans le serveur PostgreSQL et plus de 75 bugs rapportés ces trois derniers mois.

Prévoyez de procéder à la mise à jour dès que vous le pourrez.

Problèmes de sécurité

  • CVE-2020-10733: L’installateur Windows lance des exécutables depuis des répertoires sans les contrôler.
  • Versions concernées : 9.5 à 12. L’équipe de sécurité ne teste pas les versions non supportées, mais ce problème existait avant PostgreSQL 9.5.

L’installateur Windows invoque des exécutables fournis par le système sans utiliser de chemins complètement définis. Les exécutables dans le répertoire où l’installateur se charge, ou le répertoire courant,peuvent prévaloir. Un attaquant avec la permission d’ajouter des fichiers dans un de ces répertoires peut en profiter pour exécuter n’importe quel code avec les droits administratifs de l’installateur.

Le projet PostgreSQL tient à remercier Hou JingYi (@hjy79425575) pour nous avoir rapporté ce problème.

Corrections de bugs et améliorations

Cette mise à jour comprend les corrections de 75 bugs qui ont été déclarés dans les derniers mois. Certains ne concernent que la version 12, mais d’autres pourraient concerner toutes les versions supportées.

Parmi les corrections, on trouve :

  • Plusieurs corrections pour les colonnes GENERATED (calculées automatiquement), dont une pouvant provoquer un crash ou corrompre des données dans une table, dans le cas où le contenu de la colonne engendrée était l’exacte copie d’une colonne physique sur la table, par exemple, si l’expression appelait une fonction qui retournait son propre paramètre.

  • Plusieurs corrections pour ALTER TABLE, dont une qui assure que la directive SET STORAGE est bien propagée aux index déclarés sur la table.

  • Correction d’un souci potentiel d’accès concurrent quand DROP OWNED BY est utilisé alors qu’une autre session supprime les mêmes objets.

  • Possibilité pour une partition d’être détachée lorsqu’elle a des triggers hérités de niveau ligne (ROW TRIGGER).

  • Plusieurs corrections sur REINDEX CONCURRENTLY, en particulier lorsque son exécution échouait.

  • Correction d’un crash lorsque COLLATE est appliqué à un type de donnée qui ne peut pas l’être, dans une expression liée à une partition.

  • Correction d’une régression de performance sur la détection d’un débordement de données de type float.

  • Plusieurs corrections sur la recherche plein texte, en particulier lors de la recherche de phrases.

  • Correction d’une fuite mémoire possible, pendant la durée de vie de la requête seulement, lorsqu’une fonction retournant un ensemble de données est utilisée dans la clause FROM d’une autre requête.

  • Plusieurs corrections rapportées sur la sortie de VACUUM VERBOSE.

  • Permet l’utilisation du format (x,y),r lors de l’insertion d’une donnée de type cercle, comme spécifié dans la documentation.

  • Les fonctions get_bit() et set_bit() ne tombent plus en erreur lorsque les chaînes de type bytea sont plus longues que 256 Mo.

  • Modification pour se prémunir d’un recyclage prématuré des journaux de transaction (WAL) lors de la récupération après un accident qui pouvait conduire à ce qu’ils soient recyclés avant d’être archivés.

  • Ne tente plus de récupérer dans les archives des WAL n’ayant pas existé sur certaines timelines durant la phase de recovery.

  • Plusieurs corrections autour de la réplication logique et des slots de réplication.

  • Correction de plusieurs concurrences d’accès dans la gestion d’une instance répliquée en synchrone, dont une qui apparaissait à la modification du paramètre “synchronous_standby_names”.

  • Plusieurs corrections sur le support de GSSAPI, dont une fuite de mémoire possible lors de l’utilisation du chiffrement en GSSAPI.

  • Les membres du rôle “pg_read_all_stats” peuvent désormais lire toutes les vues statistiques.

  • Correction d’une régression de performance sur la vue “information_schema.triggers”.

  • Correction d’une fuite mémoire dans la librairie libpq lorsqu’il y a le paramétrage “sslmode=verify-full”.

  • Correction du problème de crash du client psql lors d’une tentative de rétablissement d’une connexion échouée.

  • Ajout du support de la complétion (touche tab) dans l’argument d’un nom de fichier dans la commande \gx de psql.

  • Dans pg_dump, ajout du support de ALTER…DEPENDS ON EXTENSION.

  • Plusieurs autres corrections pour pg_dump, dont l’export des commentaires sur les règles RLS et le déplacement de la restauration des triggers sur événement à la fin.

  • Ajout de la vérification de la validité des fichiers tar produits par l’outil pg_basebackup.

  • pg_cheksums ignore les sous-répertoires des tablespaces qui appartiennent à d’autres versions majeures de PostgreSQL.

  • Plusieurs corrections de compatibilité pour la version Windows

Cette mise à jour contient la mise à jour 2020a de tzdata pour les changements de l’heure d’été au Maroc et dans le Yukon canadien, plus des corrections historiques pour Shangaï. La zone America/Godthab a été renommée en America/Nuuk pour correspondre à l’usage actuel en anglais ; cependant, l’ancien nom reste disponible sous la forme d’un lien pour la compatibilité.

Cette mise à jour actualise également les noms de la liste des fuseaux horaires pour Windows de initdb afin d’inclure les récents ajouts.

Mise à jour

Toutes les mises à jour de PostgreSQL sont cumulatives. Comme pour les autres mises à jour mineures, les utilisateurs n’ont pas à sauvegarder et restaurer leur base ou ni à utiliser pg_upgrade pour appliquer cette mise à jour ; vous pouvez simplement arrêter PostgreSQL et mettre à jour ses binaires.

Les utilisateurs ayant sauté une version ou plus peuvent avoir besoin d’ajouter des étapes supplémentaires après la mise à jour.

Liens


DALIBO

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