Le PGDG (PostgreSQL Global Development Group) a publié une mise à jour de toutes les versions supportées de PostgreSQL, incluant 18.3, 17.9, 16.13, 15.17 et 14.22.
Pour la liste complète des changements, se référer à la section Notes de publication.
Notification de la fin de vie de PostgreSQL 14
PostgreSQL ne recevra plus de correctif dès le 12 novembre 2026. Si vous utilisez PostgreSQL dans un environnement de production, nous vous suggérons de planifier une mise à jour vers une version supportée et mise à jour de PostgreSQL. Pour plus de détails, se référer à la Politique de version.
Problème de sécurité
- CVE-2026-6472 :
exécution de fonctions SQL arbitraires en utilisant
CREATE TYPE.
Score CVSS: 5.4 MEDIUM (serveur PostgreSQL)
L’absence d’autorisation lors de la création d’un type (CREATE TYPE)
dans PostgreSQL permet à un créateur d’objet de détourner d’autres
requêtes utilisant search_path pour trouver des types définis par
l’utilisateur, y compris les types définis par extension. Autrement
dit, la victime peut exécuter des fonctions SQL arbitraires choisies
par l’attaquant. Toutes les versions précédant les versions 18.4,
17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Jelte Fennema-Nio d’avoir reporté ce problème.
- CVE-2026-6473 : exécution de code arbitraire avec les privilèges de l’utilisateur du système d’exploitation exécutant la base de données.
Score CVSS: 8.8 HIGH (serveur PostgreSQL)
Une vulnérabilité de dépassement de capacité d’entier présente dans plusieurs fonctionnalités du serveur PostgreSQL permet à un utilisateur de base de données non privilégié de provoquer un sous-dimensionnement de l’allocation mémoire et une écriture hors limites. Ceci peut entraîner l’exécution de code arbitraire avec les privilèges de l’utilisateur du système d’exploitation exécutant la base de données. Toutes les versions précédant les versions 18.4, 17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Anemone, A1ex, Xint Code, Jihe Wang, Jingzhou Fu, Pavel Kohout, Petr Simecek, www.aisle.com, Bruce Dang of Calif.io, et Sven Klemm d’avoir reporté ce problème.
- CVE-2026-6474 : lecture de portions de mémoire du serveur.
Score CVSS: 4.3 MEDIUM (serveur PostgreSQL)
Une faille de sécurité dans la fonction timeofday() de PostgreSQL,
utilisant un format de chaîne externe, permet à un attaquant de
récupérer des portions de la mémoire du serveur grâce à des fuseaux
horaires spécialement conçus. Toutes les versions précédant les
versions 18.4, 17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Xint Code d’avoir reporté ce problème.
- CVE-2026-6475 : écrasement de fichiers sans lien avec l’origine choisie par le superutilisateur.
Score CVSS: 8.8 HIGH (client)
L’utilisation de liens symboliques avec les commandes pg_basebackup
(format simple) et pg_rewind de PostgreSQL permet à un
superutilisateur d’origine d’écraser des fichiers locaux, comme
/var/lib/postgres/.bashrc, et de détourner ainsi le compte
système. Le démarrage du serveur après ces commandes implique toujours
une confiance implicite accordée à ce superutilisateur, du fait de
fonctionnalités telles que shared_preload_libraries. Par conséquent,
cette attaque n’a d’incidence concrète que si une action est
entreprise entre l’exécution de ces commandes et le démarrage du
serveur, comme le déplacement des fichiers vers une autre machine
virtuelle ou la création d’un instantané de cette dernière. Toutes les
versions précédant les versions 18.4, 17.10, 16.14, 15.18, et 14.23
sont concernées.
Le projet PostgreSQL remercie Valery Gubanov, XlabAI Team of Tencent Xuanwu Lab, Atuin Automated Vulnerability Discovery Engine, Zhanpeng Liu, Guannan Wang, et Guancheng Li d’avoir reporté ce problème.
- CVE-2026-6476 :
pg_createsubscriberest vulnérable aux injections SQL via le nom de l’abonnement.
Score CVSS: 7.2 HIGH (client)
Une injection SQL dans la fonction pg_createsubscriber de PostgreSQL
permet à un attaquant disposant des droits pg_create_subscription
d’exécuter des requêtes SQL arbitraires en tant que
superutilisateur. L’attaque est exploitée lors de la prochaine
exécution de pg_createsubscriber. Toutes les versions précédant les
versions 18.4, 17.10 sont concernées.
Le projet PostgreSQL remercie Yu Kunpeng d’avoir reporté ce problème.
- CVE-2026-6477 :
les fonctions
lo_*de la bibliothèquelibpqde PostgreSQL permettent au superutilisateur du serveur d’écraser la mémoire de la pile du client.
Score CVSS: 8.8 HIGH (client)
L’utilisation de la fonction intrinsèquement dangereuse PQfn(..., result_is_int=0, ...) dans les fonctions lo_export(), lo_read(),
lo_lseek64() et lo_tell64() de la bibliothèque PostgreSQL permet à
l’administrateur du serveur d’écraser la mémoire tampon de la pile du
client avec une réponse de taille arbitraire. À l’instar de gets(),
PQfn(..., result_is_int=0, ...) stocke des données de longueur
arbitraire, déterminée par le serveur, dans une mémoire tampon de
taille indéterminée. Étant donné que les commandes lo_export de psql
et pg_dump appellent toutes deux lo_read(), l’administrateur du
serveur peut écraser la mémoire de la pile de pg_dump ou de
psql. Toutes les versions précédant les versions 18.4, 17.10, 16.14,
15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Yu Kunpeng d’avoir reporté ce problème.
- CVE-2026-6478 : PostgreSQL divulgue les mots de passe hachés MD5 via un canal de synchronisation caché.
Score CVSS: 6.5 MEDIUM (serveur PostgreSQL)
Une faille de sécurité dans la comparaison des mots de passe hachés MD5 lors de l’authentification PostgreSQL permet à un attaquant de récupérer les identifiants utilisateur nécessaires à l’authentification. Ceci n’affecte pas les mots de passe scram-sha-256, utilisés par défaut dans toutes les versions prises en charge. Cependant, certaines bases de données actuelles peuvent contenir des mots de passe hachés MD5 provenant de mises à niveau depuis PostgreSQL 13 ou une version antérieure. Toutes les versions précédant les versions 18.4, 17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Joe Conway d’avoir reporté ce problème.
- CVE-2026-6479 : L’initialisation SSL/GSS de PostgreSQL provoque un déni de service via une récursion non contrôlée.
Score CVSS: 7.5 HIGH (serveur PostgreSQL)
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 soutenu. Si SSL et GSS sont désactivés, un attaquant peut réaliser la même opération en accédant à une socket TCP de PostgreSQL. Toutes les versions précédant les versions 18.4, 17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Calif.io en collaboration avec Claude and Anthropic Research d’avoir reporté ce problème.
- CVE-2026-6575 :
la fonction
pg_restore_attribute_statsde 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.
Score CVSS: 4.3 MEDIUM (serveur PostgreSQL)
La fonction pg_restore_attribute_stats() de PostgreSQL présente une
vulnérabilité de lecture au-delà du buffer. En effet, elle accepte des
valeurs de tableau de longueur non concordante, 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 d’inférer des valeurs
en mémoire au-delà de cette fin de tableau. Les versions 18 précédant
la version 18.4 sont concernées.
Le projet PostgreSQL remercie Jeroen Gui d’avoir reporté ce problème.
- CVE-2026-6637 : refint permet le dépassement de tampon de pile et l’injection SQL.
Score CVSS:8.8 HIGH (module contrib)
Une vulnérabilité de type dépassement de tampon de pile dans le module « refint » de PostgreSQL permet à un utilisateur de base de données non privilégié d’exécuter du code arbitraire avec les privilèges de l’utilisateur du système d’exploitation exécutant la base de données. Une attaque distincte est possible si l’application déclare une colonne contrôlée par l’utilisateur comme clé primaire en cascade « refint » et autorise les mises à jour de cette colonne par l’utilisateur. Dans ce cas, une injection SQL permet au fournisseur de valeur de mise à jour de la clé primaire d’exécuter du code SQL arbitraire avec les privilèges de l’utilisateur de la base de données effectuant la mise à jour. Toutes les versions précédant les versions 18.4, 17.10, 16.14, 15.18, et 14.23 sont concernées.
Le projet PostgreSQL remercie Nikolay Samokhvalov d’avoir reporté ce problème.
- CVE-2026-6638 :
REFRESH PUBLICATIONest vulnérable aux injections SQL via le nom de la table.
Score CVSS: 3.7 LOW (serveur PostgreSQL)
Une injection SQL dans la réplication logique PostgreSQL (commande
ALTER SUBSCRIPTION ... REFRESH PUBLICATION) permet au créateur d’une
table abonnée d’exécuter des requêtes SQL arbitraires avec les
identifiants de publication de l’abonnement. L’attaque prend effet
lors de la prochaine mise à jour (REFRESH PUBLICATION). Les versions
16, 17 et 18 précédant les versions 18.4, 17.10, 16.14 sont
concernées.
Le projet PostgreSQL remercie Pavel Kohout, Aisle Research d’avoir reporté ce problème.
Corrections de bogues et améliorations
Cette publication corrige plus de 60 bogues reportés ces derniers mois. Les problèmes listés ci-dessous concernent PostgreSQL. Certains d’entre eux peuvent aussi concerner d’autres versions de PostgreSQL.
- correction du fait que des requêtes pourraient retourner des résultats incorrects lors de l’utilisation d’une collation non-déterministe avec un index unique ;
- correction de la perte de défferabilité d’un déclencheur de clé
étrangère. Préalablement à ce correctif, une clé étrangère définie
en tant que
DEFERRABLE INITIALLY DEFERREDse serait comportée commeNOT DEFERRABLEaprès avoir été définieNOT ENFORCEDpuisENFORCED. Si vous avez une clé étrangère avec ce problème, après l’installation de cette mise à jour, vous pouvez corriger cela en passant l’état àNOT ENFORCEDpuis à nouveauENFORCED; - amélioration de la capacité du planner d’appliquer l’élagage des partitions à plus de cas ;
- correction de la suppression des self-join afin de prendre en compte
les colonnes booléennes, par exemple
ON t1.boolcol; - correction de plusieurs problèmes concernant les colonnes générées
virtuelles, incluant le fait que
INSERT ... ON CONFLICTfonctionne lorsqueEXCLUDEDréférence une colonne générée virtuelle ; - reporte une erreur de sérialisation lorsque
MERGErencontre une ligne mise à jour simultanément dans les modes d’isolation « repeatable read » ou « serializable » ; - correction de la commande
CREATE TABLE ... LIKE ... INCLUDING STATISTICSpour les cas où la table source a eu une ou plusieurs colonnes supprimées ; - correction de
WITHOUT OVERLAPSpour permettre les domaines ; - désactive la construction d’un type composite avec lui-même via un type multirange ;
- correction de résultats parfois incorrects lorsque
array_agg(anyarray)est exécuté en parallèle ; - prévention de la fragmentation lors de la restauration d’une sauvegarde incrémentale ;
- prévention du blocage de la promotion d’une instance secondaire à cause d’un processus de synchronisation de slot de réplication logique bloqué ;
- correction de la colonne
pidde la vue systèmepg_aiospour afficher NULL à la place de 0 lorsqu’une entrée n’est pas propriétaire du processus ; - correction de cas où la vue
pg_stat_replicationmontre un lag NULL quand bien même la réplication est active ; - affichage correcte d’alias de variables d’un
JOINlorsqu’elles sont utilisées dans unGROUP BY; - en cas d’échec du processus de démarrage, arrête proprement les autres processus enfants avant d’arrêter le postmaster ;
- correction d’une erreur d’exécution concurrente pouvant entraîner une boucle d’arrêt-démarrage lorsqu’une instance secondaire suit les journaux de log (WAL) dans une instance primaire d’une version mineure plus ancienne ;
- prévient l’attente infinie de l’arrêt d’un processus walsender lorsque la réplication logique est active ;
- s’assure que l’écriture de la FSM persiste pendant une restauration. Ceci pourrait avoir des conséquences sur les performances sur une instance secondaire après une promotion ;
- corrections de bogues lors de la décompression de sauvegardes et
dans le code de lecture des fichiers Tar utilisé par
pg_basebackupetpg_verifybackup; - rétabli le fait que
pg_dumpalln’évite pas les droits de rôle de «grantor» suspendu, comme avant PostgreSQL 16. Émission d’un message d’avertissement à propos du «grantor» manquant si le serveur est pls récent que PostgreSQL 16 ; - correction de
pg_upgradepour utiliser la version correcte du protocole lors de la connexion à de plus vieux serveurs ; - correction de la sorte de
pg_overexplainlors de l’utilisation de l’optionRANGE_TABLE; - correction d’une défaillance de
postgres_fdwà cause d’un nettoyage prématuré d’une connexion en échec.
Cette publication met aussi à jour les fichiers de données des fuseaux horaires à la publication 2026b, dans laquelle la Colombie-Britannique (America/Vancouver) sera toute l’année à UTC-07 (dans les faits, DST) à partir de novembre 2026. Cette publication prend en compte le fait que leur abréviation de fuseau sera MST à partir de ce moment (quoique ça pourrait changer). Il y a aussi une correction historique pour la Moldavie, qui a utilisé l’heure EU DST en transition depuis 2022.
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.
Liens
- Téléchargements
- Notes de version
- Page sur la sécurité
- Politique de version
- Soumettre un bogue
- Faire un don
Si vous avez des corrections ou suggestions sur cette annonce de publication, merci de les envoyer à la mailing liste publique pgsql-www@lists.postgresql.org.