Le PGDG a publié une mise à jour de toutes les versions supportées de PostgreSQL. Il s’agit des versions 16.4, 15.8, 14.13, 13.16 et 12.20, ainsi que la troisième publication Bêta de PostgreSQL 17. Cette publication corrige une vulnérabilité de sécurité et près de 55 bogues repérés durant les derniers mois.
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 planifier une mise à jour vers une version plus récente et supportée de PostgreSQL. Se référer à notre politique de versionnement pour plus d’informations.
Problèmes de sécurité
CVE-2024-7348 :
le remplacement de relations dans PostgreSQL lors de l’utilisation de
pg_dump
permet d’exécuter du code SQL arbitraire.
CVSS v3.1 Base Score: 8.8
Versions vulnérables et supportées : 12 - 16.
Un assaillant capable de créer et supprimer des objets non-temporaire
pourrait injecter du code SQL qui serait exécuté par une session
pg_dump
concurrente avec les privilèges du rôle exécutant pg_dump
(qui
est souvent un super-utilisateur). L’attaque implique le remplacement
d’une séquence ou d’un objet similaire avec une vue ou une table
étrangère qui exécuterait du code malicieux. Pour se prémunir de cela,
l’introduction d’un nouveau paramètre
restrict_nonsystem_relation_kind
permet de désactiver l’expansion de
vues autres qu’internes ainsi que l’accès aux tables étrangères et
apprend à pg_dump
à le définir lorsqu’il est disponible. Notez que
l’attaque est bloquée lorsque pg_dump
et le serveur sauvegardé sont
suffisamment récents pour avoir ce correctif.
Le projet PostgreSQL remercie Noah Misch pour avoir signalé ce problème.
Corrections des bogues et améliorations
Cette mise à jour corrige près de 55 bogues qui ont été signalé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.
- empêche des résultats incorrects de plans “Merge Right Anti Join”, lorsque la relation interne est connue pour avoir une clé de jointure unique, la fusion pourrait alors se faire quand il y a des clés de jointure dupliquées dans la relation externe ;
- empêche une boucle infinie dans
VACUUM
; - corrige la configuration de l’élagage d’une partition pendant
ALTER TABLE DETACH ... PARTITION CONCURRENTLY
; - corrige le comportement de fonctions stables utilisées comme argument
d’un appel
CALL
; - la fonction
pg_sequence_last_value()
retourne maintenantNULL
plutôt que de remonter une erreur quand elle est appelée sur une séquence non tracée dans une instance secondaire et sur séquence temporaire d’une autre session ; - corrige l’analyse des opérateurs ignorés dans
websearch_to_tsquery()
; - vérifie correctement la possibilité de mettre à jour les colonnes
cibles des vues par
INSERT ... DEFAULT
; - verrouille les séquences détenues lors de
ALTER TABLE ... SET LOGGED|UNLOGGED
; - ne remonte par d’erreurs si un déclencheur
AFTER
en file d’attente n’existe plus ; - Corrige la sélection d’un index arbitral pour
INSERT ... ON CONFLICT
quand l’index souhaité a des expressions ou des prédicats, par exemple à travers une vue actualisable ; - refuse la modification d’une table temporaire d’une autre session
avec
ALTER TABLE
; - corrige la manipulation des statistiques étendues sur expressions
dans
CREATE TABLE ... LIKE STATISTICS
; - corrige l’échec du recalcul des sous-requêtes générées par les
agrégats
MIN()
ouMAX()
; - désactive le caractère de soulignement dans les paramètres positionnés ;
- empêche une défaillance lorsqu’une fonction JIT en ligne remonte une erreur ;
- corrige la manipulation de sous-transactions d’une transaction préparée lors du démarrage d’une instance secondaire ;
- empêche l’initialisation incorrecte d’un créneau de réplication logique ;
- corrige une fuite mémoire dans le processus d’envoi des WAL de réplication logique quand la publication change pour une table partitionnée pour laquelle les partitions ont des types de données d’enregistrement qui diffèrent physiquement de la table ;
- désactive la création de tickets de sessions TLS avec état avec OpenSSL ;
- corrige la manipulation par PL/pgSQL de plages d’entier contenant
des caractères de soulignement (par exemple,
FOR i IN 1_001..1_002
) ; - corrige l’incompatibilité entre PL/Perl et Perl 5.40 ;
- plusieurs correctifs liés à des fonctions et déclencheurs récursifs en PL/Python ;
- garantit le fait que
pg_restore -l
rapporte les tables dépendantes des entrées contenues correctement ; pg_stat_statements
passe maintenant un identifiant de requête pour les ordres utilitaires apparaissant dans des fonctions en langage SQL ;- corrige
postgres_fdw
lors d’une correspondance entre une table étrangère et une vue distante non triviale ; postgres_fdw
n’envoie plus la clauseFETCH FIRST WITH TIES
à un serveur distant.
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.
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.
Note à propos de PostgreSQL 17 Bêta
Cette publication marque la troisième publication bêta de PostgreSQL 17 et rapproche d’une étape la communauté de la disponibilité probablement vers la fin du troisième trimestre.
Dans l’esprit de la communauté PostgreSQL « open-source », nous vous encourageons fortement à tester les nouvelles fonctionnalités de PostgreSQL sur vos systèmes pour nous aider à éliminer les bogues et autres problèmes existants. Bien que nous ne recommandons pas l’utilisation de PostgreSQL 17 Bêta 3 dans des environnements de production, nous vous encourageons à trouver des moyens de tester les applications avec cette version.
Vos tests et retours aideront la communauté à s’assurer que la publication de PostgreSQL 17 maintiendra nos standards pour livrer une version fiable et stable de la base de données relationnelle « open-source » la plus avancée du monde. Merci de prendre connaissance du processus de publication et de comment vous pouvez contribuer : (https://www.postgresql.org/developer/beta/).
Mettre à jour vers PostgreSQL 17 Bêta 3
Afin de mettre à jour vers PostgreSQL 17 Bêta 3 à partir d’une
publication antérieure de PostgreSQL, vous aurez besoin d’utiliser une
stratégie similaire à la mise à jour entre versions majeures de
PostgreSQL (par exemple : pg_upgrade
ou
pg_dump
/pg_restore
). Pour plus d’information, merci de prendre
connaissance de la documentation sur la mise à jour.
Changements depuis la Bêta 2
Les corrections et changements dans PostgreSQL 17 Beta 3 incluent :
- renommage du paramètre
standby_slot_names
verssynchronized_standby_slots
: - plusieurs correctifs sur SQL/JSON ;
- corrections de
pg_combinebackup --clone
; - correction de
pg_createsubscriber
pour fonctionner avec un nom de base de données contenant un caractère espace ; pg_createsubscriber
supprime maintenant les souscriptions préexistantes lors de l’exécution sur une base de données cibles ;- amélioration de l’efficacité lors de la récupération d’information sur une
souscription avec
pg_upgrade
; - correction du comportement d’un repli TLS avec
sslmode=prefer
en erreur quand un serveur envoie une erreur pendant le processus de démarrage ; - documentation d’un cas d’erreur avec une sauvegarde incrémentale de
pg_basebackup
sur une instance secondaire lorsqu’il est exécuté immédiatement après la sauvegarde précédente. - Correction d’un problème où
pg_upgrade --transaction-size
peut faire qu’un processus d’arrière-plan (backend) consomme de la mémoire dans un ordre de grandeur de plus ;
Merci de se référer aux notes de publication pour la liste complète des nouveautés et changements, ainsi qu’aux items ouverts de PostgreSQL pour plus de détails sur les changements et correctifs.
Liens
- Téléchargements
- Notes de version
- Page sur la sécurité
- Politique de version
- Information sur le Bêta Testing
- Note de publication de PostgreSQL 17 Bêta
- Problème connu de PostgreSQL 17
- Matrice fonctionnelle
- Soumettre un bogue
- 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.