Le PGDG a publié une mise à jour de toutes les versions supportées de PostgreSQL. Il s’agit des versions 16.3, 15.7, 14.12, 13.15 et 12.19. Cette publication corrige une vulnérabilité de sécurité et près de 55 bogues repérés durant les derniers mois.
Une vulnérabilité de sécurité a été relevée sur les vues systèmes pg_stats_ext
et pg_stats_ext_exprs
qui autoriserait les utilisateurs de base de données authentifiés de consulter des données dont les permissions leur interdiraient l’accès. Ce correctif ne concerne que les nouvelles installations de PostgreSQL effectuées avec l’utilitaire initdb
après application du correctif. Si vous possédez une installation existante de PostgreSQL et souhaitez en savoir plus sur la correction de ce problème, se référer aux instructions de la section Mise à jour
pour la marche à suivre.
Cette publication inclut des correctifs sur les index. Il peut s’avérer nécessaire de réindexer certains index. Se référer à la section Notes de publication pour plus de détails.
Pour la liste complète des changements, se référer à la section Notes de publication.
Fin de support de PostgreSQL 12
La version 12 de PostgreSQL ne recevra plus aucun correctif à partir du 14 novembre 2024. Si vous utilisez une version 12 de PostgreSQL en production, nous vous recommandons de procéder à une mise à jour vers une version plus récente de PostgreSQL. Se référer à notre politique de versionnement pour plus d’informations.
Problèmes de sécurité
CVE-2024-4317 : Restreindre la visibilité des vues pg_stats_ext
et pg_stats_ext_exprs
au propriétaire de la table
CVSS v3.1 Base Score: 3.1
Versions affectées : 14 - 16.
Une autorisation manquante dans les vues systèmes pg_stats_ext
et pg_stats_ext_exprs
permet à un utilisateur de base de données sans permissions de lire les valeurs les plus communes et d’autres statistiques avec la commande CREATE STATISTICS
émanant d’autres utilisateurs. Les valeurs les plus communes peuvent révéler des valeurs de colonnes ou les résultats de fonctions qu’il n’aurait normalement pu consulter ou éxecuter.
Ce correctif ne concerne que les nouvelles installations de PostgreSQL effectuées avec l’utilitaire initdb
après application du correctif. Si vous possédez une installation existante de PostgreSQL et souhaitez en savoir plus sur la correction de ce problème, se référer aux instructions de la section Mise à jour
pour la marche à suivre.
Le projet PostgreSQL remercie Lukas Fittl pour avoir reporté ce problème.
Corrections des bogues et améliorations
Cette mise à jour corrige près de 55 bogues qui ont été reportés depuis ces derniers mois. Les problèmes listés ci-dessous affectent la version 16 de PostgreSQL. Certaines peuvent aussi affecter d’autres versions supportées de PostgreSQL.
- Corrige un problème sur la commande
INSERT
avec une clause multi-lignesVALUES
où une colonne cible est un domaine sur un tableau ou un type composite; - Obliger le privilège
SELECT
sur la table cible lors de l’utilisation de la commandeMERGE ... DO NOTHING
; - Selon le standard SQL, remonter une erreur si la ligne cible dans la commande
MERGE
joint plus d’une ligne source durant une modification; - Corrige un pruning incorrect d’une partition
NULL
lorsque la table est partitionnée sur une colonne booléenne et que la requête possède une clauseIS NOT
booléenne également; - Déplace toutes les séquences detenues dans le nouveau schéma avec la commande
ALTER FOREIGN TABLE ... SET SCHEMA
; - La commande
CREATE DATABASE
reconnait désormais les mots-clésSTRATEGY
indépendemmant de la casse; - Corrige le compte de pages
heap
pendant unbitmap heap scan
retourné par la commandeEXPLAIN
afin de montrer toutes les pages comptées, et non seulement les pages avec des tuples visibles; - Prévenir un
deadlock
pendant la suppression de tables temporaires orphelines; - Plusieurs correctifs pour la commande
VACUUM
, dont un pouvant réduire des I/O non nécessaires; - Plusieurs correctifs portant sur le planificateur de requêtes;
- Apporter des optimisations sur certaines opérations où l’installation de PostgreSQL possède plusieurs milliers de rôles;
- Corrige des confusions sur des procédures en langage SQL qui retourne une colonne simple de type composite;
- Corrige une mauvaise approximation et risques d’overflow sur la fonction
date_bin
; - Détection de débordement d’entier lors de l’ajout ou soustraction d’un interval depuis/vers une estampille temporelle;
- Corrige plusieurs
race conditions
avec la réplication logique, incluant la détermination de la nécessité ou non d’une opération de synchronisation de table; - Déconnexion d’un nouveau socket de session cliente si ce dernier ne peut être mis en mode non-bloquant;
- Vérification des noms de paramètres indifféremment de la casse avec la commande
initdb -c
; - Corrige la manière dont
PL/pgSQL
interprète les commentaires sur une ligne (commentaires avec la syntaxe--
) situés après une expression;
Mise à jour
Toutes les publications de mises à jour de PostgreSQL sont
cumulatives. Comme pour les autres mises à jour mineures, il n’est pas
nécessaire d’extraire et de recharger les bases de données ni
d’utiliser pg_upgrade
pour appliquer cette mise à jour ;
il suffit simplement d’arrêter PostgreSQL et de mettre à jour les binaires.
Pour des installations existantes de PostgreSQL impactées par la CVE-2024-4317
souhaitant corriger cette dernière, vous devrez suivre les étapes suivantes :
- Récupérer le script SQL
fix-CVE-2024-4317.sql
depuis le répertoireshare directory
de votre installation de PostgreSQL (par exemple dans/usr/share/postgresql/
), ou télécharger depuis les sources de PostgreSQL via les URLs suivantes : - PostgreSQL 16: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_16_STABLE
- PostgreSQL 15: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_15_STABLE
- PostgreSQL 14: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_14_STABLE
Depuis les URLs suivantes, vous pouvez cliquer sur l’URL raw
pour télécharger une version qu’il est possible de copier/coller.
Assurez-vous d’utiliser le script correspondant à votre version majeure de PostgreSQL. Si vous ne trouvez pas ce fichier, soit votre version n’est pas vulnérable (seulement les versions 14, 15 et 16 sont affectées), soit votre version mineure est trop ancienne pour posséder ce correctif.
- Sur chaque base de données de votre cluster, éxecuter le script SQL
fix-CVE-2024-4317.sql
en tant que superutilisateur. Par exemple, avecpsql
, exécuter la commande suivante avec le fichier situé sous/usr/share/postgresql/
:
\i /usr/share/postgresql/fix-CVE-2024-4317.sql
- Vous devez également jouer ce script sur les bases de données
template0
ettemplate1
ou sinon les nouvelles bases de données créées hériteront de cette vulnérabilité. Pour corriger la base de donnéestemplate0
, il est nécessaire au préalable d’autoriser les connexions sur cette dernière. Vous pouvez utiliser la commande suivante pour ce faire :
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
Après avoir exécuté le script SQL fix-CVE-2024-4317.sql
sur les bases template0
et template1
, vous devriez supprimer l’autorisation de connexion sur la base template0
. Avec la commande suivante :
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
Les utilisateurs ayant sauté une ou plusieurs mises à jour peuvent avoir besoin d’étapes additionnelles après la mise à jour. Les notes de publication des versions précédentes fournissent les détails.
Pour plus de détails, se référer à la note de publication de versions.
Liens
- Téléchargements
- Notes de version
- Page sur la sécurité
- Politique de version
- Annonce de la sortie de PostgreSQL 16
- Suivre @postgresql sur X/Twitter
- Faire un don
Si vous avez des corrections ou suggestions sur cette annonce de publication, merci de les envoyer à la mailing list publique pgsql-www@lists.postgresql.org.