Paris, le 14 mai 2020

Le PostgreSQL Global Development Group a publié le Jeudi 13 mai 2021, une mise à jour de toutes les versions supportées de PostgreSQL, soit les versions : 13.3, 12.7, 11.12, 10.17, et 9.6.22. Cette mise à jour corrige trois vulnérabilités et plus de 45 bogues rapportés au cours des trois derniers mois.

visuel annonce

Pour une liste complète des changements, reportez-vous à la note de publication.

Problèmes de sécurité

  • CVE-2021-32027: Dépassement de tampon dû à un débordement d’entier dans les calculs d’indices de tableau

Versions concernées : 9.6 - 13. L’équipe chargée de la sécurité ne teste généralement pas les versions non prises en charge, mais ce problème est assez ancien.

Lors de la modification de certaines valeurs de tableaux SQL, l’absence de vérification de limite permet à des utilisateurs authentifiés à la base de données d’écrire des octets arbitraires dans une large zone de la mémoire du serveur.

Le projet PostgreSQL remercie Tom Lane d’avoir signalé ce problème.

  • CVE-2021-32028: Révélation de la mémoire dans INSERT .. ON CONFLICT ... DO UPDATE

Versions concernées : 9.6 - 13. L’équipe chargée de la sécurité ne teste généralement pas les versions non prises en charge. Cette fonctionnalité est apparue pour la première fois dans la version 9.5.

En utilisant une commande INSERT ... ON CONFLICT ... DO UPDATE sur une table spécialement conçue, un attaquant peut lire des octets arbitraires de la mémoire du serveur. Dans la configuration par défaut, tout utilisateur de base de données authentifié peut créer des objets prérequis et mener à bien cette attaque à sa guise. Un utilisateur dépourvu des privilèges CREATE et TEMPORARY sur toutes les bases de données et du privilège CREATE sur tous les schémas, ne peut pas utiliser cette attaque.

Le projet PostgreSQL remercie Andres Freund pour avoir signalé ce problème.

  • CVE-2021-32029 : Divulgation de mémoire lors d’un UPDATE ... RETURNING sur une table partitionnée.

Versions concernées: 11 - 13

En utilisant un UPDATE ... RETURNING sur une table partitionnée spécialement conçue, un attaquant peut lire des octets arbitraires de la mémoire du serveur. Dans la configuration par défaut, tout utilisateur de base de données authentifié peut créer des objets prérequis et mener à bien cette attaque à volonté. Un utilisateur dépourvu des privilèges CREATE et TEMPORARY sur toutes les bases de données et du privilège CREATE sur tous les schémas, ne peut généralement pas utiliser cette attaque à volonté.

Le projet PostgreSQL remercie Tom Lane pour avoir signalé ce problème.

Corrections de bogues et améliorations

Cette mise à jour corrige plus de 45 bogues qui ont été signalés au cours des derniers mois. Certains de ces problèmes ne concernent que la version 13, mais pourraient également s’appliquer à d’autres versions prises en charge.

Parmi ces corrections, citons :

  • Correction d’un éventuel résultat incorrect d’un UPDATE ... RETURNING lors d’une mise à jour inter-partition.

  • Correction de la commande ALTER TABLE ... ALTER CONSTRAINT lorsqu’elle est utilisée pour les contraintes de clés étrangères sur les tables partitionnées. La commande ne parvenait pas à régler les propriétés DEFERRABLE et/ou INITIALY DEFERRED pour les contraintes et les déclencheurs des partitions individuelles, ce qui entraînait un comportement inattendu. Après avoir effectué la mise à jour vers cette version, vous pouvez exécuter la commande ALTER TABLE ... ALTER CONSTRAINT pour corriger les tables partitionnées qui se comportent incorrectement.

  • Garantie que lorsqu’une table enfant est attachée avec ALTER TABLE ... INHERIT les colonnes générées dans le parent ont été générées de la même manière dans l’enfant.

  • Interdiction de marquer une colonne d’identité comme étant NULL.

  • Autorisation de définir les paramètres role, session_autthorization, et temp_buffers avec ALTER ROLE ...SET/ALTER DATABASE ... SET.

  • Vérification du fait que REINDEX CONCURRENTLY préserve toute cible statistique définie pour l’index.

  • Correction d’un problème où, dans certains cas, la conservation des enregistrements dans les triggers AFTER pouvait provoquer des plantages.

  • Correction de la manière dont to_char() traite les codes de format de mois en chiffres romains avec des intervalles négatifs.

  • Correction de l’utilisation d’une valeur non initialisée lors de l’analyse d’un quantificateur \{m,n\} dans une expression régulière en mode BRE.

  • Correction des erreurs du planificateur “could not find pathkey item to sort” qui se produisent dans certaines situations lorsque la clé de tri implique une fonction d’aggégat ou une fonction de fenêtrage.

  • Correction d’une anomalie avec les bitmap scan d’index BRIN qui pourrait amener à des erreurs : “could not open file”.

  • Corrections des réponses potentiellement erronées des recherches dans l’index GIN avec tsvector lorsqu’il y a beaucoup d’enregistrements correspondants.

  • Correction pour la fonctionnalité COMMIT AND CHAIN sur le serveur et dans psql.

  • Prévention d’un changement de timeline incorrect lors de la récupération de transactions à deux phases non validées à partir des WAL, ce qui pourrait entraîner des problèmes de cohérence et l’impossibilité de redémarrer le serveur.

  • Vérification du fait que wal_sync_method est défini à fdatasync par défaut sur les versions FreeBSD plus récentes.

  • Désactivation du paramètre vacuum_cleanup_index_scale_factor et de l’option de stockage.

  • Correction de plusieurs fuites de mémoire dans le serveur, dont une durant l’initialisation des paramètres SSL/TLS.

  • Rétablissement du comportement précédent de \connect service=XYZ dans psql, c’est à dire interdire aux variables d’environnement (par exemple PGPORT) de remplacer les entrées dans le fichier de service.

  • Correction de la manière dont pg_dump gère les colonnes générées dans les tables partitionnées.

  • Addition de vérifications supplémentaires à pg_upgrade pour des types de donnée non-migrables.

  • Sous Windows, initdb affiche maintenant des instructions sur la façon de démarrer le serveur avec pg_ctl en utilisant des séparateurs backslash.

  • Correction de pg_waldump pour compter correctement les enregistrements XACT lors de la génération de statistiques par enregistement.

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

Avis de fin de vie de PostgreSQL 9.6

PostgreSQL 9.6 cessera de recevoir des correctifs le 11 Novembre 2021. Si vous utilisez PostgreSQL dans un environnement de production, nous vous suggérons de prévoir une mise à jour vers une version plus récente et supportée de PostgreSQL. Veuillez consulter notre politique de gestion des versions pour plus d’informations.

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 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.

Pour plus de détails, consultez la note de publication

Liens


DALIBO

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