Lyon, le 15 mai 2026

Le PostgreSQL Global Development Group a publié le 14 mai une mise à jour pour toutes les versions supportées de PostgreSQL, c’est-à-dire les versions 18.4, 17.10, 16.14, 15.18, 14.23. Cette mise à jour corrige 11 vulnérabilités de sécurité et une soixantaine de bugs.

Pour la liste complète, voir les Notes de version.

visuel annonce

Annonce de fin de vie de PostgreSQL 14

PostgreSQL 14 ne recevra plus de mises à jour après le 12 novembre 2026. Si vous utilisez PostgreSQL 14 en production, nous vous conseillons de planifier la migration vers une version plus récente et supportée. Voir la politique de versionnement pour plus de détails.

Vulnérabilités de sécurité

CVE-2026-6472: La commande CREATE TYPE de PostgreSQL ne vérifie pas le droit CREATE de sur tous les schemas

CVSS v3.1 Base Score: 5.4
Versions vulnérables : 14 - 18.
Une faille d’autorisation dans la commande CREATE TYPE de PostgreSQL permet au créateur d’un objet de détourner d’autres requêtes qui utilisent search_path pour rechercher des types définis par l’utilisateur, y compris les types définis par des extensions. En d’autres termes, la victime exécutera des fonctions SQL arbitraires choisies par l’attaquant. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6473: PostgreSQL sous-dimensionne les allocations à cause d’un débordement d’entier

CVSS v3.1 Base Score: 8.8
Versions vulnérables : 14 - 18.
Le débordement d’entier, dans plusieurs fonctionnalitées de PostgreSQL, autorise une application à forcer le serveur à sous-dimensionner une allocation et à écrire hors limites. Cela entraîne une erreur de segmentation. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6474: La fonction PostgreSQL timeofday() peut divulguer des parties de la mémoire du serveur

CVSS v3.1 Base Score: 4.3
Versions vulnérables : 14 - 18.
Une chaîne de caractères spécifique utilisée dans la fonction timeofday() de PostgreSQL permet à un attaquant d’extraire des portions de la mémoire du serveur, via des fuseaux horaires spécialement conçus. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6475: Les commandes pg_basebackup et pg_rewind de PostgreSQL peuvent écraser des fichiers sans lien avec le choix du superutilisateur

CVSS v3.1 Base Score: 8.8
Versions vulnérables : 14 - 18.
Le suivi des liens symboliques dans le format brut de pg_basebackup et dans pg_rewind permet à un superutilisateur d’origine de réécrire des fichiers locaux, par exemple /var/lib/postgres/.bashrc, qui détournent le compte du système d’exploitation. Le fait est que le démarrage du serveur après ces commandes implique une confiance implicite envers le superutilisateur d’origine, en raison de fonctionnalités telles que shared_preload_libraries. Par conséquent, l’attaque n’a de conséquences pratiques que si des actions sont faites entre l’exécution de ces commandes et le démarrage du serveur, comme par exemple le déplacement des fichiers vers une autre machine virtuelle ou la création d’un instantané de la machine virtuelle. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6476: La fonction pg_createsubscriber de PostgreSQL permet une injection SQL via le nom de l’abonnement

CVSS v3.1 Base Score: 7.2
Versions vulnérables : 17 - 18.
Une faille d’injection SQL dans la fonction pg_createsubscriber de PostgreSQL permet à un attaquant disposant des droits pg_create_subscription d’exécuter du code SQL arbitraire en tant que superutilisateur. L’attaque se produit lors de la prochaine exécution de pg_createsubscriber. Parmi les versions majeures 17 et 18, les versions mineures antérieures à PostgreSQL 18.4 et 17.10 sont concernées. Les versions antérieures à PostgreSQL 17 ne sont pas concernées.

CVE-2026-6477: Les fonctions lo_* de la bibliothèque libpq de PostgreSQL permettent au superutilisateur du serveur de réécrire la mémoire de la pile du client

CVSS v3.1 Base Score: 8.8
Supported, Vulnerable Versions: 14 - 18.
L’utilisation de la fonction intrinsèquement dangereuse comme PQfn(..., result_is_int=0, ...) dans les fonctions lo_export(), lo_read(), lo_lseek64(), and lo_tell64() de la libpq autorise un superutilisateur de réécrire la pile mémoire d’un client. C’est notamment le cas pour pg_dump et psql qui utilisent lo_read(). Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6478: PostgreSQL divulgue des mots de passe hachés en MD5

CVSS v3.1 Base Score: 6.5
Versions vulnérables : 14 - 18.
Un canal de synchronisation caché dans la comparaison des mots de passe hachés MD5 dans l’authentification PostgreSQL permet à un attaquant de récupérer suffisament d’informations d’utilisateur pour s’authentifier. Cela n’affecte pas les mots de passe hachés en scram-sha-256, qui sont la valeur par défaut dans toutes les versions supportées. Cependant, les bases de données en version 13 existantes peuvent contenir des mots de passe hachés en MD5. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6479: L’initialisation SSL/GSS de PostgreSQL provoque un déni de service, via une récursion non contrôlée.

CVSS v3.1 Base Score: 7.5
Versions vulnérables : 14 - 18.
Une récursion incontrôlée dans la négociation SSL et GSS de PostgreSQL permet à un attaquant capable de se connecter à un socket AF_UNIX de PostgreSQL, d’obtenir un déni de service. Si SSL et GSS sont désactivés, un attaquant peut réaliser la même opération en accédant à un socket TCP de PostgreSQL. Les versions antérieures à PostgreSQL 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6575: La fonction pg_restore_attribute_stats de PostgreSQL accepte des valeurs qui entraînent une lecture au-delà de la fin du tableau de statistiques lors de la planification de la requête.

CVSS v3.1 Base Score: 4.3
Versions vulnérables : 18.
Une vulnérabilité de lecture du tampon dans la fonction pg_restore_attribute_stats() de PostgreSQL accepte des valeurs de tableau de longueur non adéquat, ce qui provoque une lecture au-delà de la fin d’un tableau lors de la planification de la requête. Ceci permet à un responsable de table de déduire des valeurs en mémoire au-delà de cette fin de tableau. Ce problème affecte les versions majeures antérieures à PostgreSQL 18 et 18.4. Les versions antérieures à PostgreSQL 18 ne sont pas concernées.

CVE-2026-6637: Le module PostgreSQL refint permet le dépassement de tampon de pile et l’injection SQL.

CVSS v3.1 Base Score: 8.8
Versions vulnérables : 14 - 18.
Un dépassement de tampon de la pile dans le module refint de PostgreSQL permet à un utilisateur de base de données non privilégié d’exécuter du code arbitraire en tant qu’utilisateur du système d’exploitation exécutant la base de données. Une autre attaque est possible si l’application déclare une colonne utilisateur comme clé primaire en cascade. Une injection SQL est possible en mettant à jour la valeur de la clé primaire. Le code SQL est exécuté en tant qu’utilisateur de la base de données effectuant la mise à jour de la clé primaire. Les versions de PostgreSQL antérieures à 18.4, 17.10, 16.14, 15.18 et 14.23 sont concernées.

CVE-2026-6638: PostgreSQL REFRESH PUBLICATION autorise l’injection SQL via le nom de la table.

CVSS v3.1 Base Score: 3.7
Versions vulnérables : 16 - 18.
Une injection SQL dans la réplication logique de PostgreSQL (ALTER SUBSCRIPTION ... REFRESH PUBLICATION) permet au créateur d’une table abonnée d’exécuter du code SQL arbitraire avec les identifiants de publication de l’abonnement. L’attaque prend effet lors du prochain appel à REFRESH PUBLICATION. Les versions majeures 16, 17 et 18, ainsi que les versions mineures antérieures à PostgreSQL 18.4, 17.10 et 16.14, sont concernées. Les versions antérieures à PostgreSQL 16 ne sont pas affectées.

Correctifs et améliorations

  • Correction d’un problème pouvant entraîner des résultats erronés lors de l’utilisation d’une collation non déterministe sur un index unique.
  • Auparavant, une clé étrangère définie comme DEFERRABLE INITIALLY DEFERRED se comportait comme si elle était NOT DEFERRABLE après avoir été mise en état NOT ENFORCED, puis revenue à l’état ENFORCED. C’est maintenant corrigé. Si vous avez une clé étrangère présentant ce problème, vous pouvez le résoudre après avoir installé cette mise à jour en la positionnant comme NOT ENFORCED puis ENFORCED.
  • Amélioration du planificateur lors du nettoyage de partitions.
  • Correctif sur les self-join pour mieux gérer les clauses qui ne portent que sur des colonnes de type booléen.
  • Plusieurs corrections concernent les colonnes générées virtuellement, notamment pour garantir que INSERT ... ON CONFLICT fonctionne lorsque EXCLUDED fait référence à une colonne générée virtuellement.
  • Un échec de sérialisation est signalé lorsque MERGE rencontre une ligne mis à jour simultanément avec les modes d’isolation « repeatable » ou « serializable ».
  • Correction de CREATE TABLE ... LIKE ... INCLUDING STATISTICS pour les cas où la table source comportait une ou plusieurs colonnes supprimées.
  • Correction de WITHOUT OVERLAPS pour autoriser l’utilisation de domaines.
  • Interdiction de faire d’un type composite un membre de lui-même via un multirange.
  • Correction de résultats parfois incorrects lorsque array_agg(anyarray) s’exécute en parallèle.
  • Le bloat n’est plus conservé lors d’une restauration à partir d’une sauvegarde incrémentale.
  • La promotion d’une instance standby n’est plus bloquée par un processus de synchronisation des slots de réplication logique.
  • La colonne pid de la vue système pg_aios affiche NULL au lieu de 0 lorsqu’une entrée n’a pas de processus associé.
  • Correction des cas où pg_stat_replication affiche un lag NULL même lorsque la réplication est active.
  • L’affichage des variables d’alias JOIN utilisées dans GROUP BY est maintenant correct.
  • Si le processus de démarrage échoue, les autres processus enfants sont correctement arrêtés avant de stopper le postmaster.
  • Correction d’une race condition qui pouvait entraîner une instance stanby, suivant une instance primaire dans une version mineure antérieure, à entrer dans une boucle infinie de plantage et de redémarrage.
  • Empêche l’attente infine lors de l’arrêt d’un processus walsender lorsque la réplication logique publie activement des données.
  • Les modifications apportées aux free space map des tables sont conservées pendant un recovery. Cela pourrait améliorer les performances d’une instance standby après sa promotion.
  • Correction de divers bugs dans le code de décompression des sauvegardes utilisé dans pg_basebackup et pg_verifybackup.
  • Garantie que pg_dumpall n’oublie pas de GRANT sur des rôles qui auraient été donnés par un ROLE dont l’OID serait manquant.. Un message d’avertissement est affiché sur la source du dump est PostgreSQL 16 ou une version ultérieure.
  • Correction de pg_upgrade pour qu’il utilise la bonne version du protocole lors de la connexion à d’anciens serveurs sources.
  • Correction de la sortie dans pg_overexplain lors de l’utilisation de l’option RANGE_TABLE.
  • Correction d’un bug dans postgres_fdw causé par le nettoyage prématuré d’une connexion ayant échoué.

Mettre à jour

Toutes les mises à jour de PostgreSQL sont cumulatives. Pour appliquer la mise à jour, comme pour les autres versions mineures, les utilisateurs n’ont pas besoin de sauvegarder et recharger leur base de données, ni d’utiliser pg_upgrade. Vous pouvez simplement arrêter PostgreSQL et mettre à jour ses binaires.

Les utilisateurs ayant sauté une version mineure ou plus peuvent avoir besoin de réaliser d’autres opérations post-mise à jour. Voir les Notes de version pour les détails.

Liens


DALIBO

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