Paris, le 14 août 2020

Le PostgreSQL Global Development Group a annoncé la sortie de la mise à jour de toutes les versions supportées de PostgreSQL, soit les versions 12.4, 11.9, 10.14, 9.6.19, 9.5.23 et ainsi que la troisième bêta de PostgreSQL 13. Cette mise à jour corrige deux problèmes de sécurité et plus de 50 bogues rapportés au cours des trois derniers mois.

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

visuel annonce

Correctifs de sécurité

  • CVE-2020-14340 : Élément non contrôlé du search_path dans la réplication logique.

Versions affectées : 10 - 12.

Le paramètre search_path détermine les schémas recherchés pour les tables, fonctions, opérateurs, etc. La correction CVE-2018-1058 a fait en sorte que la plupart des applications clientes fournies par PostgreSQL nettoient le search_path, mais la réplication logique a continué de laisser le search_path inchangé. Les utilisateurs d’une réplication logique par publication ou abonnement à une base de données peuvent créer des objets dans le schéma public et les exploiter pour exécuter des fonctions SQL arbitraires sous l’identité de la publication fournie par la réplication logique, souvent un superutilisateur. Les installations ayant adopté les bonnes pratiques d’utilisation d’un schéma sécurisé ne sont pas vulnérables.

Le projet PostgreSQL remercie Noah Misch pour avoir remonté ce problème.

  • CVE-2020-14350 : Élément non contrôlé du search_path dans l’instruction CREATE EXTENSION.

Versions affectées : 9.5 - 12. L’équipe de sécurité ne teste généralement pas les versions non supportées, mais ce problème est assez ancien.

Lorsqu’un superutilisateur exécute certaines instructions CREATE EXTENSION, les utilisateurs peuvent être en mesure d’exécuter des fonctions SQL arbitraires sous l’identité de ce superutilisateur. L’attaquant doit avoir la permission de créer des objets dans le schéma de la nouvelle extension ou dans le schéma d’une extension prérequise. Toutes les extensions ne sont pas vulnérables.

En plus de corriger les extensions fournies avec PostgreSQL, le PostgreSQL Global Development Group publie des conseils pour les auteurs d’extensions tierces pour sécuriser leur propre travail.

Le projet PostgreSQL remercie Andres Freud pour avoir remonté ce problème.

Note sur la Bêta PostgreSQL 13

Cette sortie embarque la troisième bêta de PostgreSQL et rapproche la communité de la sortie définitive prévue cet automne.

Dans l’esprit de la communauté Open Source PostgreSQL, nous vous encourageons vivement à tester les nouvelles fonctionnalités de PostgreSQL 13 sur vos systèmes de bases de données pour nous aider à identifier et corriger tous bogues ou anomalies encore existants. Bien que nous ne vous conseillons pas d’exécuter PostgreSQL 13 Bêta 3 sur vos environnements de production, nous vous encourageons à tenter d’exécuter vos charges de travail sur cette version bêta.

Vos tests et vos retours aideront la communauté à assurer que la version PostgreSQL 13 respecte nos standards de livraison pour une version stable et fiable de la base de données relationnelle open-source la plus avancée au monde.

Avertissement sur la fin de vie de la version 9.5

La version 9.5 cessera de recevoir des correctifs à partir du 11 février 2021. Si vous employez une version 9.5 de PostgreSQL sur un environnement de production, nous vous suggérons de planifier une mise à niveau vers une version supportée de Postgres. Veuillez consulter notre politique de gestion des versions pour de plus amples informations.

Corrections de bogues et améliorations

Cette mise à jour corrige près de 50 bogues signalés ces derniers mois. Certains problèmes concernent uniquement la version 12, mais beaucoup affectent toutes les versions supportées.

Certaines de ces corrections incluent :

  • Corrections des cas marginaux dans l’élagage de partitions impliquant plusieurs colonnes de la clé de partition avec plusieurs ou aucune clauses WHERE contraignantes.
  • Plusieurs corrections pour la planification et l’exécution de requêtes impliquant des partitions.
  • Correction pour déterminer quand exécuter un trigger UPDATE spécifique à une colonne sur un abonnement de réplication logique.
  • pg_replication_slot_advance() met désormais à jour les valeurs les plus anciennes xmin et LSN, car ne pas le faire pourrait empêcher le nettoyage des ressources (i.e. les fichiers WAL).
  • Correction d’une regression de performance pour la fonction ts_headline().
  • Garantir que pg_read_file() et les fonctions associées lisent jusqu’à ce que la fin du fichier (EOF) soit atteinte, ce qui corrige la compatibilité avec les pipes et autres fichiers virtuels.
  • Interdire les valeurs numériques NaN dans les calculs jsonpath, qui n’existent ni en SQL ni en JSON.
  • Plusieurs corrections pour les entrées NaN avec des fonctions agrégées. Cela corrige un changement dans PostgreSQL 12 ou la valeur NaN amenait les agrégats suivants à émettre des valeurs de 0 au lieu de NaN : corr(), covar_pop(), regr_intercept(), regr_r2(), regr_slope(), regr_scc(), regr_sxy(), regr_syy(), stddev_pop() et var_pop().
  • Les valeurs time et timetz partiellement supérieures à 24:00:00 sont maintenant rejetées.
  • Plusieurs corrections pour EXPLAIN, incluant une correction pour signaler l’utilisation de ressources lorsqu’un plan utilise des workers parallèles avec des nœuds « Gather Merge ».
  • Correction du moment de la revalidation des contraintes dans ALTER TABLE qui pourraient conduire à des erreurs inhabituelles.
  • Correction pour REINDEX CONCURRENTLY qui pouvait empêcher l’inclusion d’anciennes valeurs dans la future sortie du décodage logique.
  • Corrections pour les références à LATERAL qui pourraient potentiellement causer des plantages durant l’exécution de la requête.
  • Utilisation du collationnement renseigné dans une requête lors de l’estimation des coûts d’opérateur
  • Correction d’anomalies de contrôle de conflit pour le mode d’isolation des transactions SERIALIZABLE.
  • Garantir que le processus checkpointer ignore les requêtes de synchronisation de fichier lorsque le paramètre fsync vaut off.
  • Correction d’une anomalie où le fichier pg_control peut contenir une somme de contrôle incohérente, pouvant provoquer l’incapacité à redémarrer le système s’il venait à s’interrompre avant la prochaine mise à jour du fichier pg_control.
  • Garantir que le pilote libpq continue les tentatives de lecture sur un socket de connexion après une erreur d’écriture, afin de permettre la connexion pour récupérer tous les messages d’erreurs du serveur.
  • Notifications d’espace manquant pour les outils pg_dump et pg_basebackup.
  • Plusieurs corrections pour l’outil pg_restore, notamment sur la restauration parallélisée de tables bénéficiant de privilèges de table ou de colonne.
  • Correction pour l’outil pg_upgrade afin de s’assurer qu’il ne s’exécute que lorsque le paramètre vacuum_defer_cleanup_age vaut zéro (0).
  • Amélioration de la gestion par l’outil pg_rewind des fichiers supprimés dans le répertoire de données source.
  • Correction d’une erreur à l’initialisation de l’état local de la contribution dblink, qui pouvait provoquer à l’appel de la méthode dblink_close une validation (COMMIT) non souhaitée sur le serveur distant.
  • Modification de la contribution amcheck pour ne plus rapporter la suppression des pages d’index qui sont vides, ce qui est courant lors du rejeu des journaux WAL.

Pour une liste complète des changements, veuillez vous référer aux notes de version.

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 utiliser pg_upgrade pour appliquer cette mise à jour ; vous pouvez simplement modifier 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 ; merci de voir les notes de version des versions précédentes pour plus de détails.

NB : PostgreSQL 9.5 ne recevra plus de correctifs après le 11 février 2021. Voir notre politique de versionnement pour plus d’informations.

Note sur la Bêta PostgreSQL 13

La version bêta 3 de PostgreSQL introduit un nouveau paramètre hash_mem_multiplier, qui autorise les utilisateurs à régler la quantité de mémoire à allouer pour un nœud de type hash aggregation. Cela donne aux utilisateurs plus de contrôle en plus de préciser sur le nœud d’aggrégat d’utiliser du stockage disque ou de rester en mémoire, seule fonctionnalité disponible à ce jour avant la version PostgreSQL 13.

PostgreSQL bêta 3 supprime également le paramètre de configuration hashagg_avoid_disk_plan au profit du paramètre équivalent enable_hashagg_disk.

Pour une liste des changements inclus dans la bêta 3 de PostgreSQL, veuillez retrouver la page des évolutions :

https://wiki.postgresql.org/wiki/PostgreSQL_13_Open_Items#resolved_before_13beta3

Pour mettre à jour une version bêta 3 de PostgreSQL à partir de la bêta 1 ou 2, ou d’une version antérieure de PostgreSQL, vous pouvez suivre une stratégie similaire de mise à niveau entre versions majeures de PostgreSQL (i.e. les outils pg_upgrade ou pg_dump / pg_restore). Pour plus d’informations, merci de parcourir la documentation de mise à niveau d’une instance.

Test des bogues et compatibilité

La stabilité de chaque sortie de PostgreSQL dépend grandement de vous, la communauté, à travers les tests de la prochaine version dans des conditions de charges variées, dans le but d’identifier bugs et régressions avant la mise à disposition générale de la version 13 de PostgreSQL. Puisqu’il s’agit d’une bêta, des changements mineurs dans les comportements de la base de données, fonctionnalités ou API sont toujours possibles. Vos retours d’expérience et vos tests vont aider à déterminer les derniers réglages des nouvelles fonctionnalités, merci de les tester dans un avenir proche. La qualité des tests utilisateurs aide à établir le moment où nous aboutirons à une version finale.

Une liste des problèmes ouverts est disponible publiquement sur le wiki de PostgreSQL. Vous pouvez rapporter des bugs en utilisant le formulaire sur le site de PostgreSQL :

https://www.postgresql.org/account/submitbug/

Planning des bêtas

La présente publication inclut la troisième bêta de la version 13. Le projet PostgreSQL publiera d’autres bêtas si les tests le nécessitent, suivies d’une ou plusieurs versions candidates, jusqu’à la version finale au cours de la fin d’année 2020.

Pour plus d’informations, voir la page de test des bêtas.

Liens


DALIBO

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