Vulnérabilité PostgreSQL CVE-2026-6471 : la faille PostGREShell qui expose vos serveurs depuis 12 ans
Lysandre Beauchêne
Plus de 12 ans. C’est le temps qu’a mis une vulnérabilité critique pour être découverte dans PostgreSQL. Baptisée PostGREShell et référencée CVE-2026-6471, elle permet à un compte de réplication disposant de privilèges limités d’exécuter du code arbitraire, d’escalader ses droits jusqu’au superutilisateur et d’installer des portes dérobées persistantes. D’après les chercheurs de Cyera Research, qui ont divulgué l’information le 1er septembre, le défaut touche toutes les versions de PostgreSQL depuis la 9.4. En France, où PostgreSQL est massivement déployé dans les administrations, les PME et les grands comptes, cette faille représente un risque majeur pour la sécurité des données. Cet article vous explique son fonctionnement, son impact et les mesures d’urgence à prendre.
Une faille critique vieille de 12 ans dans PostgreSQL
Selon Cyera Research, CVE-2026-6471 affecte le composant de réplication logique de PostgreSQL. Ce mécanisme, utilisé pour la sauvegarde, la réplication en continu, la capture de données modifiées (CDC), le basculement et la supervision, permet à un client distant de lire les modifications de la base via un slot de réplication. Le problème ? La validation des noms de plugins chargés par ce processus était absente. Un attaquant disposant du rôle REPLICATION pouvait fournir un chemin absolu, des séquences de type ../ ou un chemin UNC Windows pour faire charger une bibliothèque malveillante.
« Le chemin de réplication logique n’appliquait pas la même validation que la commande SQL LOAD. Un utilisateur avec le rôle REPLICATION pouvait indiquer un nom de plugin contenant des chemins absolus ou des traversées de répertoire. » - Rapport Cyera Research, septembre 2026
La faille est d’autant plus dangereuse qu’elle était présente depuis la version 9.4, sortie en 2014. Pendant plus d’une décennie, des milliers de bases PostgreSQL ont fonctionné avec ce trou de sécurité ouvert. En France, l’ANSSI recommande depuis longtemps de limiter les rôles de réplication et de surveiller les connexions entrantes. Pourtant, de nombreuses organisations continuent d’attribuer ce privilège sans contrôle suffisant.
Comprendre la vulnérabilité CVE-2026-6471 (PostGREShell)
Le mécanisme de réplication logique en cause
La réplication logique est un pilier des architectures modernes : elle permet de streamer les modifications vers des serveurs secondaires, des entrepôts analytiques, des outils de migration ou des services de CDC comme Debezium. Pour consommer ces changements, un client crée un slot de réplication et fournit le nom d’un plugin de sortie. Ce plugin est une bibliothèque compilée (.so sous Linux, .dll sous Windows, .dylib sous macOS) que PostgreSQL charge dans son processus serveur pour formater les données.
Normalement, PostgreSQL interdit aux utilisateurs non-superutilisateurs de charger des bibliothèques externes via la commande LOAD. Une fonction de vérification, check_restricted_library_name(), limite le chargement aux répertoires administratifs approuvés. Mais le chemin de réplication logique n’appliquait pas cette règle. Résultat : un compte doté du rôle REPLICATION pouvait faire charger une bibliothèque située n’importe où sur le système - ou même sur un partage réseau.
Comment l’attaque se déroule
Voici les étapes typiques d’une exploitation par un attaquant :
- Reconnaissance : l’attaquant identifie un serveur PostgreSQL exposé et obtient un compte avec le rôle
REPLICATION(par exemple via un mot de passe faible ou un accès volé). - Préparation de la charge utile : il compile une bibliothèque malveillante (par exemple un reverse shell ou un voleur de credentials).
- Création du slot de réplication piégé : il exécute
SELECT * FROM pg_create_logical_replication_slot('malicious_slot', '/tmp/exploit.so')- le nom du plugin contient un chemin absolu. - Exécution du code : PostgreSQL appelle
dlopen()(ouLoadLibrary()sous Windows) sur le chemin fourni. La fonction d’initialisation de la bibliothèque s’exécute dans le processus serveur. - Escalade de privilèges : le code malveillant manipule la mémoire interne et les catalogues de PostgreSQL pour obtenir les droits de superutilisateur, contournant ainsi les vérifications SQL habituelles.
- Installation d’une porte dérobée : il modifie
pg_hba.conf, ajoute la bibliothèque dansshared_preload_libraries, ou installe un trigger persistant. Même après correction de la faille, l’accès reste possible.
« Un superutilisateur PostgreSQL peut lire les données sensibles des applications, accéder aux credentials stockés, écrire des fichiers et, dans certaines configurations, exécuter des commandes système via les fonctionnalités de la base. » - Cyera Research
Impacts selon le système d’exploitation
Le degré de sévérité varie selon l’OS et la configuration réseau. Voici un tableau comparatif :
| Système | Mécanisme de chargement | Vecteur d’attaque principal | Condition supplémentaire |
|---|---|---|---|
| Windows | LoadLibrary() | Chemin UNC vers un partage SMB distant | Connectivité SMB sortante (port 445) activée |
| Linux | dlopen() | Bibliothèque locale (déposée au préalable) | Nécessite un premier accès en écriture |
| macOS | dlopen() | Bibliothèque locale ou NFS | Si NFS est monté automatiquement |
| Systèmes avec NFS automount | dlopen() | Chemin monté via réseau → chargement distant | Automount actif pour des répertoires partagés |
Sous Windows, l’attaque est particulièrement redoutable : l’attaquant peut héberger une DLL malveillante sur un serveur SMB et fournir un chemin UNC à PostgreSQL, sans avoir à écrire de fichier sur la cible. Si le pare-feu autorise le trafic sortant vers le partage, la charge utile est chargée à distance.
Sous Linux, l’exploitation nécessite généralement que l’attaquant ait déjà déposé un fichier sur le système (via une autre vulnérabilité ou un accès légitime). Cependant, les environnements utilisant NFS avec automount sont également exposés : un chemin comme /net/attaquant/share/exploit.so peut être chargé automatiquement.
Les risques concrets pour les entreprises françaises
PostgreSQL est la base de données open source préférée des développeurs français (étude Stack Overflow 2025). Des startups aux administrations, en passant par les secteurs bancaire et santé, elle stocke des données critiques. Une exploitation de CVE-2026-6471 pourrait avoir des conséquences directes :
- Vol de données clients (RGPD, amendes possibles jusqu’à 4 % du chiffre d’affaires)
- Interruption de service (exfiltration ou chiffrement des bases par ransomware)
- Compromission des systèmes amont (pont vers d’autres serveurs)
- Non-conformité aux normes ISO 27001 ou aux guides ANSSI
Exemple concret : une PME française de e-commerce utilise PostgreSQL avec un compte de réplication pour synchroniser son catalogue vers un site secondaire. Ce compte est protégé par un mot de passe simple, stocké en clair dans un fichier de configuration. Un attaquant accède au fichier via une faille web, puis crée un slot de réplication piégé. En quelques minutes, il obtient un accès superutilisateur, installe un cryptominer et lit l’intégralité des données clients. Le préjudice est considérable.
Par ailleurs, Vladimir Tokarev a identifié 114 plugins suspects sur VirusTotal - miners, trojans, reverse shells - ce qui montre que le risque d’extensions malveillantes n’est pas théorique. Bien que leur présence ne prouve pas une exploitation directe de CVE-2026-6471, elle révèle un écosystème où des bibliothèques dangereuses circulent.
Mesures de mitigation immédiates
Correctifs et bonnes pratiques
L’équipe PostgreSQL a publié des correctifs de sécurité pour toutes les versions affectées. Appliquez-les sans délai. Voici les actions prioritaires :
- Mise à jour : installez la version patchée (consultez le bulletin officiel PostgreSQL).
- Revue des comptes REPLICATION : listez tous les rôles possédant cet attribut. Supprimez ceux qui ne sont pas strictement nécessaires.
- Restriction réseau : dans
pg_hba.conf, limitez les connexions de réplication aux adresses IP de confiance uniquement (ex. :host replication repl_user 10.0.0.0/8 scram-sha-256). - Blocage du trafic sortant : depuis les serveurs de base de données, bloquez le trafic SMB (port 445) et NFS (port 2049) vers l’extérieur. Désactivez les services automount inutiles.
- Surveillance active : remontez dans vos SIEM les événements
CREATE_REPLICATION_SLOTavec des noms de plugin contenant/,\ou... Traitez-les comme des indicateurs de compromission avant qu’ils ne soient validés.
« La vigilance sur les comptes de réplication est cruciale. Un rôle REPLICATION ne doit jamais être attribué à la légère. Chaque accès doit être justifié et régulièrement audité. » - Recommandation ANSSI, guide de sécurisation PostgreSQL
Checklist de sécurisation
- Appliquer le correctif CVE-2026-6471 sur tous les serveurs PostgreSQL
- Auditer les rôles :
SELECT rolname, rolreplication FROM pg_roles WHERE rolreplication = true; - Vérifier que les comptes de réplication utilisent une authentification forte (SCRAM-SHA-256 plutôt que
trust) - Bloquer les ports SMB et NFS sortants dans le pare-feu
- Activer la journalisation des commandes DDL (log_statement = ‘ddl’) et superviser les créations de slots
- Configurer une alerte sur les noms de plugins suspects (expressions rationnelles pour
/,..,\\)
Conclusion : agir sans attendre
La vulnérabilité CVE-2026-6471 (PostGREShell) est l’une des plus graves jamais identifiées dans PostgreSQL. Sa discrétion pendant 12 ans a laissé le temps à d’éventuels attaquants de l’exploiter silencieusement. En France, où la conformité RGPD et les exigences de l’ANSSI imposent une gestion rigoureuse des accès, ignorer cette faille serait une erreur stratégique.
Ne vous contentez pas d’appliquer le correctif. Profitez-en pour revoir l’ensemble de votre politique de sécurité autour de PostgreSQL : audits des rôles, segmentation réseau, logs d’audit et sensibilisation des équipes. La sécurité d’une base de données ne repose pas uniquement sur des patches, mais sur une hygiène quotidienne. Agissez dès maintenant pour protéger vos données.