Paris, le 12 février 2020

Le PostgreSQL Global Development Group a publié une mise à jour de toutes les versions supportées de PostgreSQL, soit les versions 13.2, 12.6, 11.11, 10.16, 9.6.21, et 9.5.25. Cette mise à jour corrige deux problèmes de sécurité et plus de 80 bugs rapportés au cours des trois derniers mois.

visuel annonce

Cette mise à jour marque également la fin de vie de la version PostgreSQL 9.5, qui ne recevra plus aucun correctif de bug ou de sécurité.

Veuillez planifier une mise à jour vers une version plus récente, supportée par la communauté, dès que possible. Veuillez consulter notre politique de gestion des versions pour de plus amples informations.

Correctifs de sécurité

  • CVE-2021-3393: Certaines violations de contraintes de partitionnement rendent visibles les valeurs de colonnes inaccessibles.

Versions affectée : 11 - 13.

Un utilisateur ayant le droitUPDATE sur une table partitionnée mais pas le droit SELECT sur une colonne peut accéder aux valeurs inaccessibles depuis un message d’erreur. Ce cas est similaire à la CVE-2014-8161, mais les conditions permettant d’utiliser cette faille sont plus rares.

Le projet PostgreSQL remercie Heikki Linnakangas pour avoir signalé ce problème.

  • CVE-2021-20229: Le droit SELECT sur une seule colonne permet de lire toutes les colonnes

Version affectée: 13.

Un utilisateur qui possède le droit SELECT sur une colonne peut construire une requête qui permet de récupérer toutes les colonnes d’une table.

De plus, une vue qui utilise des droits au niveau des colonnes aura une bitmap d’utilisation incomplète. Pour des installations qui dépendent des droits au niveau des colonnes pour la sécurité, il est recommandé d’exécuter CREATE OR REPLACE sur toutes les vues définies par les utilisateurs afin de forcer une nouvelle analyse.

Le projet PostgreSQL remercie Sven Klemm pour avoir signalé ce problème.

Corrections de bugs et améliorations

Cette mise à jour corrige plus de 80 bugs rapportés ces derniers mois. Certains d’entre eux affectent uniquement la version 13, mais peuvent également concerner les autres versions supportées.

Ces corrections incluent :

  • Correction d’un problème avec les index GIST où des insertions concurrentes pouvaient provoquer une corruption des index en plaçant des entrées dans les mauvaises pages. Il est recommandé d’exécuter un REINDEX sur les index GIST affectés.

  • Correction de CREATE INDEX CONCURRENTLY pour s’assurer que les lignes des transactions préparées concurrentes sont incluses dans l’index. Pour les installations qui ont activé les transactions préparées, il est recommandé d’exécuter un REINDEX sur les index construits de manière concurrente.

  • Correction pour des résultats de requêtes qui peuvent être incorrects quand un hash aggregate déborde sur disque.

  • Correction d’un cas particulier du tri incrémental qui pouvait provoquer des erreurs de tri, ou bien l’erreur “retrieved too many tuples in a bounded sort”.

  • Évite de crasher quand un ordre CALL ou DO qui effectue un rollback de transaction est exécuté via le protocole de requête étendue, comme les requêtes préparées.

  • Correction d’une erreur quand des procédures PL/pgSQL utilisaient un CALL d’une autre procédure avec des paramètres de type OUT, et exécutaient un COMMIT ou un ROLLBACK.

  • Suppression des erreurs des triggers BEFORE UPDATE sur les tables partitionnées provoquées par des restrictions qui n’ont plus lieu d’être.

  • Plusieurs corrections pour des requêtes avec des jointures qui pourraient émettre des messages d’erreur comme “no relation entry for relid N” ou “failed to build any N-way joins”.

  • Lors de tentatives de la parallélisation des tris, ne plus considérer ni les fonctions où le parallélisme est restreint, ni les fonctions qui renvoient des ensembles dans les expressions ORDER BY.

  • Correction de ALTER DEFAULT PRIVILEGES pour gérer les arguments dupliqués de manière sécurisée.

  • Correction de plusieurs erreurs de comportement quand wal_level est défini à minimal, par exemple quand des tables sont réécrites dans une transaction.

  • Correction de plusieurs erreurs pour CREATE TABLE LIKE.

  • Vérification que l’espace alloué sur disque pour une relation supprimée (par exemple une table) est libéré rapidement quand une transaction est terminée.

  • Correction du rapport de progression de la commande CLUSTER.

  • Correction de la gestion des caractères multi-bits échappés avec un antislash dans les commandes COPY FROM.

  • Correction des conditions de concurrence (race conditions) introduites récemment dans la gestion de queue de LISTEN/NOTIFY.

  • Permettre à l’opérateur de concaténation de jsonb (||) de gérer toutes les combinaisons de types de données JSON.

  • Correction de la logique de lecture des WAL pour que les instances secondaires puissent gérer les changements de ligne de temps correctement. Ce problème pouvait se manifester avec des erreurs comme “requested WAL segment has already been removed”.

  • Plusieurs corrections de fuites de mémoire au niveau de la gestion de la réplication et du décodage logique pour le processus walsender.

  • Vérification qu’une valeur non vide de krb_server_keyfile remplace toujours la variable d’environnement KRB5_KTNAME du serveur.

  • Plusieurs corrections pour le support du chiffrement GSS.

  • Correction pour que la commande \connect autorise l’utilisation d’un mot de passe dans la chaîne de connexion.

  • Correction de plusieurs bugs dans la commande \help.

  • Diverses corrections apportées à pg_dump.

  • Vérification que pg_rewind prend bien en compte tous les WAL quand il est exécuté sur une instance secondaire.

  • Correction d’une fuite de mémoire dans le contrib auto_explain.

  • Vérification que toutes les connexions effectuées via postgres_fdw sont fermées si un mapping d’utilisateur, ou un objet du serveur distant dont ces connexions dépendent, est interrompu.

  • Correction pour que la compilation JIT soit compatible avec les versions 11 et 12 de LLVM.

Cette mise à jour contient également une actualisation des données tzdata en version 2021a relatives aux modifications de la loi sur l’heure d’été en Russie (zone de Volgograd) et au Sud-Soudan ; ainsi que des corrections historiques pour l’Australie, les Bahamas, le Bélize, les Bermudes, le Ghana, Israël, le Kenya, le Nigéria, la Palestine, les Seychelles et le Vanuatu. La zone Australie/Currie a été corrigée au point qu’elle est maintenant identique à Australie/Hobart.

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

PostgreSQL 9.5 n’est plus supporté.

Ceci est la dernière mise à jour de PostgreSQL 9.5. Si vous l’utilisez en production, nous vous invitons à préparer une migration vers une version plus récente, supportée par la communauté, dès que possible. Veuillez consulter notre politique de gestion des versions pour de plus amples informations.

Mise à jour

Toutes les mises à jour de PostgreSQL sont cumulatives. Comme pour les autres mises à jour mineures, les utilisateurs n’ont pas besoin de sauvegarder et recharger les bases ni d’utiliser pg_upgrade pour l’appliquer ; vous pouvez simplement arrêter PostgreSQL et mettre à jour ses binaires. Les utilisateurs ayant sauté une ou plusieurs mises à jour auront peut-être à appliquer des étapes post-mise à jour ; merci de voir les notes des précédentes versions pour les détails.

Récapitulatif des actions à réaliser spécifiquement après cette mise à jour :

  • Reconstruire les index ayant été créés avec CREATE INDEX CONCURENTLY ;
  • Reconstruire tous les index GiST ;
  • Recréer les vues définies par les utilisateurs et qui utilisent des droits au niveau des colonnes.

Pour plus de détails, voir les notes de version.

NB : PostgreSQL 9.6 cessera de recevoir des correctifs le 11 novembre 2021. Merci de voir notre politique des versions pour plus d’informations.

Liens


DALIBO

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