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.

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 DEFERREDse comportait comme si elle étaitNOT DEFERRABLEaprès avoir été mise en étatNOT ENFORCED, puis revenue à l’étatENFORCED. 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 commeNOT ENFORCEDpuisENFORCED. - 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 CONFLICTfonctionne lorsqueEXCLUDEDfait référence à une colonne générée virtuellement. - Un échec de sérialisation est signalé lorsque
MERGErencontre une ligne mis à jour simultanément avec les modes d’isolation « repeatable » ou « serializable ». - Correction de
CREATE TABLE ... LIKE ... INCLUDING STATISTICSpour les cas où la table source comportait une ou plusieurs colonnes supprimées. - Correction de
WITHOUT OVERLAPSpour 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
pidde la vue systèmepg_aiosafficheNULLau lieu de0lorsqu’une entrée n’a pas de processus associé. - Correction des cas où
pg_stat_replicationaffiche un lagNULLmême lorsque la réplication est active. - L’affichage des variables d’alias
JOINutilisées dansGROUP BYest 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_basebackupetpg_verifybackup. - Garantie que
pg_dumpalln’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_upgradepour qu’il utilise la bonne version du protocole lors de la connexion à d’anciens serveurs sources. - Correction de la sortie dans
pg_overexplainlors de l’utilisation de l’optionRANGE_TABLE. - Correction d’un bug dans
postgres_fdwcausé 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
- PostgreSQL (473) ,
- release (97) ,
- mineure (40) ,
- sécurité (69) ,
- 18 (9) ,
- 17 (16) ,
- 16 (21) ,
- 15 (23) ,
- 14 (33) ,
- update (55)