Publication des mises à jour de PostgreSQL 15.4, 14.9, 13.12, 12.16, 11.21 et de PostgreSQL 16 bêta 3
Le PostgreSQL Global Development Group a annoncé la publication d’une mise à jour pour toutes les versions supportées de PostgreSQL, incluant les versions 15.4, 14.9, 13.12, 12.16 et 11.21 ainsi que la bêta 3 de PostgreSQL 16. Cette publication inclut le correctif de deux failles de sécurité et de plus de 40 bugs reportés ces derniers mois.
Si vous utilisez des index BRIN pour vérifier les valeurs NULL, vous aurez
besoin de réindexer
ces derniers après la mise à jour. Sur PostgreSQL 12 et supérieur, vous pouvez
utiliser REINDEX CONCURRENTLY
pour ne pas bloquer les écritures sur les index concernés et leur table, par
exemple :
REINDEX INDEX CONCURRENTLY your_index_name;
Pour plus de détails, se référer à la note de version.
Notice de dépréciation de PostgreSQL 11
PostgreSQL 11 ne recevra plus de correctifs à partir du 9 novembre 2023. Si vous utilisez cette version sur un environnement de production, nous vous recommandons de mettre à jour vers une version plus récente et supportée de PostgreSQL. Merci de consulter notre politique de gestion de version pour plus de détails.
Failles de sécurité
CVE-2023-39417: Les @substitutions@
entre guillements dans les scripts d’extension permettent l’injection SQL.
Versions supportées vulnérables : 11 - 15. L’équipe de sécurité ne teste pas les versions non supportées, mais ce problème est assez ancien.
Un script d’extension
est vulnérable s’il utilise @extowner@
, @extschema@
ou @extschema
:…@ à
l’intérieur d’une construction de guillemets (guillemets dollars, ''
, ou ""
).
Aucune extension incluse n’est vulnérable. Les utilisations vulnérables
apparaissent dans un exemple de documentation et dans des extensions non incluses.
Par conséquent, la condition préalable à l’attaque est qu’un administrateur ait
installé des fichiers d’une extension vulnérable, fiable et non incluse. Sous
réserve de cette condition préalable, cela permet à un attaquant ayant les
privilèges CREATE
au niveau de la base de données d’exécuter du code arbitraire
en tant que super-utilisateur de démarrage. PostgreSQL bloquera cette attaque
dans le serveur principal, il n’est donc pas nécessaire de modifier les
extensions individuelles.
Le projet PostgreSQL remercie Micah Gate, Valerie Woolard, Tim Carey-Smith, et Christoph Berg pour avoir rapporté ce problème.
CVE-2023-39418: MERGE
ne vérifie pas les règles de sécurité de lignes sur UPDATE
ou SELECT
.
Versions supportées vulnérables : 15.
PostgreSQL 15 a introduit la commande MERGE
qui échoue à la vérification des règles de sécurité sur de nouvelles lignes pour
un UPDATE
ou SELECT
. Si des règles sur UPDATE
ou SELECT
interdisent des
lignes que des règles sur INSERT
autorisent, alors un utilisateur peut stocker
ces lignes. Les autres conséquences dépendent de l’application. Ceci n’affecte
que les bases de données pour lesquelles une règle de sécurité de
niveau ligne a été créée avec l’instruction CREATE POLICY.
Le projet PostgreSQL remercie Dean Rasheed pour avoir rapporté ce problème.
Note sur la bêta 3 de PostgreSQL 16
Cette publication marque la disponibilité de la bêta 3 de PostgreSQL 16 et rapproche la communauté d’une possible mise à disposition globale vers la fin du troisième trimestre.
Dans l’esprit de la communauté open source PostgreSQL, nous vous encourageons fortement à tester les nouvelles fonctionnalités de PostgreSQL dans vos systèmes de bases de données. Ceci afin de nous aider à éliminer les bogues et autres problèmes qui pourraient encore exister. Bien que nous ne vous conseillions pas de faire fonctionner PostgreSQL 16 bêta 3 dans vos environnements de production, nous vous encourageons à trouver des moyens de faire fonctionner votre charge applicative typique avec cette publication bêta.
Vos tests et vos commentaires aideront la communauté à s’assurer que PostgreSQL 16 respecte nos standards de stabilité et de fiabilité, pour continuer à proposer la base de données open source la plus avancée au monde. Regardez plus en détails le processus de bêta test pour savoir comment vous pouvez y contribuer :
https://www.postgresql.org/developer/beta/
Vous trouverez plus d’informations sur toutes les fonctionnalités de PostgreSQL 16 et les changements dans la note de version :
https://www.postgresql.org/docs/16/release-16.html
Correction de bogues et améliorations
Cette mise à jour corrige plus de 40 bogues reportés ces derniers mois. Les problèmes listés ci-dessous affecte PostgreSQL 15. Certains de ces problèmes peuvent aussi affecter d’autres versions de PostgreSQL.
- Correction de la gestion des valeurs
NULL
dans les indexBRIN
. Ce correctif ne s’applique pas sur des indexBRIN
déjà existant – vous devrez procéder à unREINDEX
pour corriger tous les index utilisés pour rechercher valeursNULL
; - Ne pas laisser une base de données corrompue lorsqu’un
DROP DATABASE
est interrompu ; - Plusieurs corrections d’index partitionnés ;
- Correction de
ALTER EXTENSION ... SET SCHEMA
pour déclencher une erreur si l’extension contient des objets en dehors du schéma de cette dernière ; - Correction de la gestion de dépendance des méthodes d’accès des tables ;
- Ne pas utiliser d’index uniques partiels pour la vérification d’unicité dans le planificateur ;
- Gestion correcte des sous-requêtes dans les expressions de règles RLS et vues de sécurité à l’instanciation des actions de règles ;
- Correction des conditions de concurrence dans la détection de conflit pour le mode d’isolation de transaction
SERIALIZABLE
; - Correction d’erreurs intermittentes lors de la mise à jour d’un champ d’une colonne composite qui nécessite un TOASTing hors ligne ;
- Correction de plusieurs fuites mémoire survenues pendant la durée de vie d’une requête ;
- Autoriser les fractions de secondes en paramètre de la méthode
jsonpath datetime()
; - Augmentation de la limite des tokens dans
pg_hba.conf
etpg_ident.conf
à 10240 octets ; - Une erreur de mémoire insuffisante provenant du compilateur JIT provoquera désormais une erreur
FATAL
PostgreSQL au lieu d’une exception C++ ; - Autoriser
VACUUM
à continuer après avoir détecté certains types de corruption d’index B-tree. Bien que cette correction permette àVACUUM
de continuer, il reste nécessaire de corriger l’index corrompu avecREINDEX
; - Éviter le double rejeu des transactions préparées lors de la récupération après un crash ;
- S’assurer qu’un checkpoint appelle
fsync
sur une table nouvellement créée mais vide ; - Rendre silencieux les erreurs “missing contrecord” pour éviter de journaliser des messages inexacts de
pg_waldump
etwalsender
; - Correction de la fonction fuzzystrmatch Soundex
difference()
pour gérer correctement les entrées vides ; - Plusieurs corrections pour intarray, y compris l’interdiction des paramètres d’entrée de type tableaux de dépasser la limite de type dans un index GiST ;
- Correction de
pg_dump
pour gérer correctement les corps de fonctions en SQL standard (BEGIN ATOMIC
) qui requièrent des dépendances au moment du parsing sur des index uniques.
Pour la liste complète de changements disponibles, se référer à la note de version/
Correctifs sur la bêta 3 de PostgreSQL 16
- Ajout de la commande
\drg
àpsql
pour afficher des informations sur les permissions de rôles ; - Ajout de l’identifiant de timeline aux noms de fichiers générés avec
pg_waldump --save-fullpage
; - Correction d’un crash après la survenue d’un deadlock dans un worker parallèle
de
VACUUM
.
Consulter la note de version pour une liste complète de nouvelles fonctionnalités ou changements :
https://www.postgresql.org/docs/16/release-16.html
Mise à jour
Toutes les mises à jour PostgreSQL sont cumulatives. Comme toutes les publications
de versions mineures, les utilisateurs ne sont pas obligés de sauvegarder et
restaurer leur bases de données ou d’utiliser pg_upgrade
pour appliquer cette
mise à jour ; il vous suffit de stopper PostgreSQL et mettre à jour les
binaires.
Si vous utilisez des index BRIN pour vérifier les valeurs NULL, vous aurez
besoin de réindexer
ces derniers après la mise à jour. Sur PostgreSQL 12 et supérieur, vous pouvez
utiliser REINDEX CONCURRENTLY
pour ne pas bloquer les écritures sur les index concernés et leur tables, par
exemple :
REINDEX INDEX CONCURRENTLY your_index_name;
Les utilisateurs qui ont omis une ou plusieurs mises à jour mineures devront effectuer des étapes supplémentaires ; se référer aux notes de versions précédentes pour plus de détails.
Pour plus de détails, se référer à la note de version.
Mise à jour vers la bêta 3 de PostgreSQL 16
Pour mettre à jour votre version de PostgreSQL depuis une
précédente version de PostgreSQL (bêta ou non) vers la version bêta 3 de PostgreSQL 16, vous
pouvez utiliser la même stratégie que pour mettre à jour vers toute version
majeure de PostgreSQL (par exemple avec la commande pg_upgrade
ou pg_dump
/pg_restore
).
Pour plus d’information, consultez la section mise à jour
de la documentation officielle.
Tests pour le débogage et la compatibilité
La stabilité de chaque publication de PostgreSQL dépend de vous, la communauté. En testant la version à venir avec votre charge et vos outils de tests, vous pourrez nous aider à trouver les bogues et régressions avant la publication de PostgreSQL 16.
Étant donné qu’il s’agit d’une version bêta, des changements mineurs dans le comportement de la base de données, des détails et des APIs sont toujours possibles. Vos retours et tests aideront à déterminer les ajustements finaux des nouvelles fonctionnalités.
La qualité des tests aide à déterminer le moment de la publication finale.
Une liste des problèmes ouverts est publiquement disponible dans le wiki de PostgreSQL. Vous pouvez rapporter des bogues en utilisant le formulaire présent sur le site web de PostgreSQL : https://www.postgresql.org/account/submitbug/.