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.
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 unREINDEX
sur les indexGIST
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 unREINDEX
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
ouDO
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éesJSON
. -
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’environnementKRB5_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
- PostgreSQL (402) ,
- release (84) ,
- mineure (31) ,
- sécurité (55) ,
- 13 (24) ,
- 12 (29) ,
- 11 (26) ,
- 10 (32) ,
- 9 (57) ,
- update (46)