Faille PostgreSQL CVE-2026-6471 : PostGREShell, une vulnérabilité de 12 ans à corriger d'urgence
Aurélien Fontevive
Une faille PostgreSQL demeurée inexploitée pendant plus d’une décennie refait surface avec un potentiel destructeur considérable. Découverte par les chercheurs de Cyera Research et identifiée sous la référence CVE-2026-6471, cette faille surnommée PostGREShell cible le mécanisme de réplication logique de PostgreSQL. Elle permet à un attaquant disposant d’un simple compte doté de l’attribut REPLICATION d’exécuter du code arbitraire sur le serveur, d’élever ses privilèges jusqu’au statut de superutilisateur et d’installer une porte dérobée persistante. Selon les analyses, le défaut affecte l’ensemble des versions de PostgreSQL à partir de la 9.4, exposant des milliers d’organisations françaises et internationales pendant près de douze ans.
Faille PostgreSQL CVE-2026-6471 : une brèche de 12 ans dans la réplication logique
Le mécanisme de réplication logique de PostgreSQL est une fonctionnalité puissante qui permet de diffuser les modifications en temps réel vers des serveurs secondaires, des outils d’analyse ou des plateformes de capture de changement de données (change data capture). La vulnérabilité PostGREShell exploite un défaut de validation dans la manière dont le serveur traite les noms de plugins de sortie lors de la création d’un slot de réplication. Un plugin de sortie est une bibliothèque compilée (.so, .dll, .dylib) que le serveur charge en mémoire pour formater les données répliquées. Normalement, la commande LOAD est protégée par une fonction check_restricted_library_name() qui limite les chemins autorisés. Cyera Research a découvert que ce contrôle n’était pas appliqué dans le cadre de la réplication logique.
« La voie de réplication logique n’appliquait pas la même validation que la commande LOAD, permettant le contournement des mécanismes de sécurité. » - Cyera Research
Les dessous techniques de la vulnérabilité
L’exploitation repose sur la capacité d’un utilisateur avec le rôle REPLICATION à spécifier un nom de plugin contenant des chemins absolus, des séquences de traversée (../) ou des chemins UNC (Universal Naming Convention) sur Windows. PostgreSQL transmet directement cette valeur aux fonctions de chargement du système d’exploitation : dlopen() sur Linux et macOS, LoadLibrary() sur Windows. Un attaquant peut ainsi forcer le serveur à charger une bibliothèque arbitraire.
Voici les étapes typiques de l’exploitation :
- L’attaquant obtient un accès avec le privilège
REPLICATION(par exemple via un compte applicatif ou un collaborateur malveillant). - Il crée un slot de réplication en fournissant le nom d’un plugin malveillant avec un chemin absolu ou UNC.
- PostgreSQL charge la bibliothèque spécifiée dans le processus serveur.
- Le code du plugin s’exécute dans le contexte du compte de service PostgreSQL, permettant l’élévation de privilèges.
Exploitation selon le système d’exploitation
L’impact varie fortement en fonction de l’environnement.
| Système d’exploitation | Fonction de chargement | Vecteur typique | Condition supplémentaire | Niveau de risque |
|---|---|---|---|---|
| Windows | LoadLibrary() | Chemin UNC sur un partage SMB | Connexion SMB sortante autorisée (port 445) | Critique : chargement à distance sans écriture locale |
| Linux | dlopen() | Chemin absolu vers fichier .so local | L’attaquant doit avoir déposé un fichier sur le serveur | Élevé : nécessite un accès écriture préalable |
| macOS | dlopen() | Chemin absolu ou via montage NFS | Montage automatique NFS actif | Élevé : exploitation possible via partage réseau |
Sur Windows, la possibilité d’utiliser un chemin UNC permet un chargement de DLL à distance : aucun fichier n’est écrit localement. L’attaquant héberge sa DLL sur un serveur SMB et fournit le chemin au serveur PostgreSQL. Si le pare-feu ne bloque pas le port 445 en sortie, l’attaque peut réussir sans interaction supplémentaire. Sur Linux et macOS, l’attaquant doit généralement avoir déjà écrit un fichier sur le système, mais des configurations avec NFS automount peuvent également exposer un chargement distant.
Impact de CVE-2026-6471 sur les environnements de production
Cette faille PostgreSQL ne se limite pas à une simple exécution de code. Elle peut avoir des conséquences catastrophiques sur la sécurité et la disponibilité des données.
Élévation de privilèges vers superutilisateur
Une fois la bibliothèque malveillante chargée, l’attaquant peut manipuler la mémoire interne et les structures du catalogue pour obtenir les privilèges superutilisateur. Un superutilisateur PostgreSQL peut :
- Lire et modifier toutes les données des bases hébergées.
- Accéder aux identifiants stockés dans les tables système.
- Écrire et lire des fichiers sur le système de fichiers du serveur.
- Exécuter des commandes système via les fonctions intégrées (comme
COPY ... PROGRAM). - Modifier la configuration du serveur (
pg_hba.conf,postgresql.conf) pour affaiblir la sécurité.
« Un attaquant pourrait modifier pg_hba.conf, s’enregistrer dans shared_preload_libraries ou rétablir des privilèges non autorisés après une tentative de correction. » - Cyera Research
Installation de portes dérobées persistantes
Une fois le contrôle obtenu, l’attaquant cherchera généralement à assurer sa persistance. En ajoutant sa bibliothèque dans la directive shared_preload_libraries, il garantit que son code est chargé à chaque démarrage de PostgreSQL. Le chercheur Vladimir Tokarev a recensé 114 plugins PostgreSQL suspects sur VirusTotal, incluant des mineurs de cryptomonnaie, des chevaux de Troie et des reverse shells. Bien que ces échantillons ne soient pas nécessairement liés à CVE-2026-6471, ils démontrent la menace réelle que représentent les extensions non vérifiées.
Cas concret : un hôpital français sous PostgreSQL
Prenons l’exemple d’un centre hospitalier régional français qui utilise PostgreSQL pour son dossier patient informatisé (DPI). La réplication logique est notamment employée pour synchroniser les données vers un entrepôt décisionnel. Un compte de réplication associé à un outil ETL est insuffisamment protégé : mot de passe faible, accès depuis une large plage d’adresses IP. Un attaquant parvient à compromettre ce compte via une attaque de phishing ciblée. Grâce à CVE-2026-6471, il charge une extension malveillante via un chemin UNC pointant vers son propre serveur SMB. Il obtient alors un accès superutilisateur, exfiltre les dossiers médicaux de plusieurs milliers de patients, puis installe un ransomware qui chiffre l’ensemble des bases de données. Les conséquences sont désastreuses : interruption de la prise en charge des patients, amende CNIL pour non-conformité RGPD, et coût de rançon potentiel de plusieurs millions d’euros.
Stratégies de mitigation et de sécurisation des serveurs PostgreSQL
Face à cette vulnérabilité PostgreSQL historique, les administrateurs doivent agir rapidement et méthodiquement.
Appliquer les correctifs officiels
La première action est d’installer le patch de sécurité fourni par la communauté PostgreSQL pour CVE-2026-6471. Vérifiez votre version avec la commande SELECT version(); et comparez avec la version corrigée. Planifiez une fenêtre de maintenance après avoir testé la mise à jour dans un environnement de pré-production.
Restreindre les comptes de réplication
Le rôle REPLICATION doit être attribué avec parcimonie. Voici les étapes clés :
- Auditer les comptes : listez tous les utilisateurs disposant de l’attribut
REPLICATION:
SELECT rolname, rolcanlogin, rolconnlimit
FROM pg_roles
WHERE rolreplication = true;
- Supprimer les comptes inutiles : tout compte identifié comme non nécessaire doit être révoqué ou supprimé.
- Durcir l’authentification : exigez des méthodes fortes (certificats, GSSAPI) pour les connexions de réplication via
pg_hba.conf. - Restreindre les adresses sources : limitez les connexions aux seuls serveurs autorisés.
Bloquer les accès réseau superflus
Pour empêcher le chargement de bibliothèques distantes :
- Bloquez le port 445 (SMB) en sortie depuis les serveurs de base de données, sauf besoin justifié.
- Bloquez le port 2049 (NFS) en sortie si non utilisé.
- Désactivez les services de montage automatique (
autofs,netmount) sur les serveurs PostgreSQL. - Segmentez le réseau en isolant les serveurs de bases de données dans une zone séparée avec accès limité.
Surveiller les indicateurs de compromission
Les équipes de sécurité doivent mettre en place une surveillance proactive :
- Analyse des logs : recherchez les évènements
CREATE_REPLICATION_SLOTavec des noms de plugin contenant des caractères particuliers (/,\,../). - Détection de bibliothèques inconnues : utilisez des commandes comme
lsofsur Linux ouProcess Explorersur Windows pour inspecter les fichiers chargés par les processus PostgreSQL. - Corrélation avec le threat intelligence : croisez les signatures de plugins connus avec des bases de données de menaces.
Exemple de commande de détection sur Linux :
# Lister les fichiers .so chargés par un processus PostgreSQL
echo 'SELECT pg_backend_pid();' | psql -Xt |
while read pid; do
lsof -p $pid | grep '[.]so$'
done
Bonnes pratiques de durcissement PostgreSQL
Au-delà du correctif immédiat, intégrez ces mesures dans votre politique de sécurité :
- Appliquer les recommandations de l’ANSSI pour le durcissement des bases de données.
- Mettre en place une surveillance continue des privilèges (audit régulier des rôles
REPLICATIONetSUPERUSER). - Utiliser des outils de database security scanning pour détecter les vulnérabilités et les mauvaises configurations.
- Former les administrateurs aux risques liés aux extensions et aux plugins dans PostgreSQL, et plus largement aux bonnes pratiques de sécurisation des agents IA.
Conclusion : agissez sans attendre face à cette faille PostgreSQL historique
La découverte de CVE-2026-6471, baptisée PostGREShell, démontre qu’une fonctionnalité avancée peut cacher une fragilité critique pendant des années. La faille PostgreSQL que nous avons analysée exploite un défaut d’implémentation dans la réplication logique pour permettre une compromission complète du serveur. Les entreprises françaises utilisant PostgreSQL pour des applications sensibles (ERP, CRM, données de santé) doivent immédiatement auditer leurs droits de réplication, appliquer les correctifs et renforcer leur posture de sécurité. Ne négligez aucun compte, car un accès de réplication peut devenir la clé de votre base de données tout entière. Priorisez cette mise à jour et diffusez l’information auprès de vos équipes techniques, car les compétences en IA et cybersécurité sont devenues cruciales pour faire face aux menaces modernes. La réactivité est votre meilleure défense face à une menace aussi discrète que dévastatrice.
Cet article s’appuie sur les informations divulguées par Cyera Research, les bonnes pratiques recommandées par l’ANSSI et la norme ISO 27001 pour la gestion des vulnérabilités. La gestion proactive des correctifs et la sécurisation des comptes privilégiés sont essentielles pour maintenir un niveau de conformité RGPD adéquat.