
# Vérificateur de vulnérabilité PostgreSQL non destructif pour CVE-2026-6471 Audite la version du serveur et les privilèges REPLICATION afin d'identifier l'exposition à la faille d'autorisation de décodage logique, avec des recommandations de remédiation.
Un vérificateur de vulnérabilité défensif et non destructif pour CVE-2026-6471
CVE-2026-6471 est une vulnérabilité d'autorisation PostgreSQL impliquant le sous-système de décodage logique (logical decoding).
La vulnérabilité peut permettre à un rôle PostgreSQL disposant du privilège REPLICATION, mais sans privilèges de superutilisateur, d'amener le serveur PostgreSQL à charger une bibliothèque contrôlée par l'attaquant et accessible au compte du système d'exploitation PostgreSQL.
Une exploitation réussie peut entraîner une exécution de code arbitraire avec les privilèges du processus serveur PostgreSQL.
Ce dépôt fournit un PoC de détection sûr conçu pour les évaluations de sécurité autorisées.
⚠️ Aucune bibliothèque partagée malveillante n'est chargée et aucune commande du système d'exploitation n'est exécutée par le vérificateur.
| Propriété | Valeur |
|---|---|
| CVE | CVE-2026-6471 |
| Produit | PostgreSQL |
| Composant | Décodage logique |
| CWE | CWE-862 — Autorisation manquante |
| CVSS v3.1 | 7.2 Élevé |
| Vecteur d'attaque | Réseau |
| Complexité d'attaque | Faible |
| Privilèges requis | Élevé |
| Interaction utilisateur | Aucune |
| Confidentialité | Élevée |
| Intégrité | Élevée |
| Disponibilité | Élevée |
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Dans les conditions vulnérables, un attaquant disposant déjà d'un compte PostgreSQL avec la capacité de réplication requise peut potentiellement franchir la frontière de privilèges entre la base de données et le système d'exploitation.
┌──────────────────────┐
│ PostgreSQL User │
│ REPLICATION = YES │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Logical Decoding │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Missing Authorization│
│ Validation │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Library Loading │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ PostgreSQL OS User │
└──────────────────────┘
L'impact réel dépend fortement des privilèges et des permissions du système de fichiers du compte du système d'exploitation PostgreSQL.
L'avis de sécurité du projet PostgreSQL identifie les branches affectées suivantes :
| Branche | Affectée | Corrigée |
|---|---|---|
| PostgreSQL 14 | < 14.24 | 14.24 |
| PostgreSQL 15 | < 15.19 | 15.19 |
| PostgreSQL 16 | < 16.15 | 16.15 |
| PostgreSQL 17 | < 17.11 | 17.11 |
| PostgreSQL 18 | < 18.6 | 18.6 |
Mettez à niveau vers la dernière version de sécurité disponible pour votre branche PostgreSQL.
Ce projet effectue intentionnellement uniquement des vérifications non destructives.
Le vérificateur doit vérifier :
REPLICATIONSELECT
version() AS postgres_version,
current_user AS current_user,
rolsuper AS is_superuser,
rolreplication AS has_replication
FROM pg_roles
WHERE rolname = current_user;
Exemple de sortie :
postgres_version : PostgreSQL 17.x
current_user : security_audit
is_superuser : f
has_replication : t
Une version vulnérable combinée à des privilèges REPLICATION doit être traitée comme nécessitant une remédiation.
Le PoC suit ce flux de travail :
┌───────────────┐
│ PostgreSQL │
│ Connection │
└───────┬───────┘
│
▼
┌─────────────────┐
│ Get Server │
│ Version │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Check Current │
│ Role │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Check │
│ REPLICATION │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Compare Against │
│ Fixed Releases │
└────────┬────────┘
│
┌───────┴────────┐
▼ ▼
Potentially Not
Vulnerable Affected
❌ Charger un .so contrôlé par l'attaquant
❌ Exécuter des charges utiles SQL arbitraires
❌ Exécuter des commandes du système d'exploitation
❌ Lancer un shell inversé
❌ Modifier la configuration PostgreSQL
❌ Modifier le contenu du système de fichiers
❌ Créer une persistance
❌ Exploiter des systèmes de production
Cela rend le vérificateur adapté aux flux de travail d'évaluation de vulnérabilité et d'inventaire contrôlés.
Clonez le dépôt :
git clone https://github.com/<YOUR-USERNAME>/CVE-2026-6471.git
cd CVE-2026-6471
Installez la dépendance Python requise :
python3 -m pip install psycopg2-binary
Exécutez le vérificateur :
python3 CVE-2026-6471.py
Exemple :
╔════════════════════════════════════════════════════╗
║ CVE-2026-6471 SAFE CHECK ║
║ PostgreSQL Logical Decoding Audit ║
╚════════════════════════════════════════════════════╝
[+] Connecting to PostgreSQL...
[+] Server version : PostgreSQL 17.x
[+] Current role : security_audit
[+] Superuser : False
[+] Replication : True
[!] PostgreSQL version requires security update
[!] REPLICATION privilege detected
[!] POTENTIALLY VULNERABLE
[!] Upgrade PostgreSQL to a fixed release.

Les administrateurs peuvent inspecter les rôles disposant de la réplication avec :
SELECT
rolname,
rolsuper,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
Examinez chaque compte renvoyé.
Si un compte ne nécessite pas de privilèges de réplication, supprimez les privilèges inutiles conformément à vos exigences opérationnelles.
Installez la version corrigée appropriée :
14.24+
15.19+
16.15+
17.11+
18.6+
Privilégiez la dernière version de sécurité PostgreSQL disponible plutôt que de vous arrêter à la version minimale corrigée.
Identifiez les comptes disposant de la capacité de réplication :
SELECT
rolname,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
Supprimez les privilèges de réplication inutiles :
ALTER ROLE <role_name> NOREPLICATION;
N'effectuez les modifications de privilèges qu'après avoir confirmé que le rôle n'est pas requis pour une infrastructure de réplication légitime.
Portez une attention particulière à :
SUPERUSER
REPLICATION
LOGIN
CREATEDB
CREATEROLE
Utilisez le moindre privilège autant que possible.
Une implémentation conceptuelle simplifiée :
if postgres_version_is_affected:
if role_has_replication:
if not role_is_superuser:
report("POTENTIALLY VULNERABLE")
else:
report("AFFECTED VERSION - SUPERUSER CONTEXT")
else:
report("AFFECTED VERSION - REPLICATION NOT PRESENT")
else:
report("NOT AFFECTED")
Le but du vérificateur est l'identification de l'exposition, et non l'exploitation.
| Résultat | Signification |
|---|---|
| 🟢 NON AFFECTÉ | PostgreSQL exécute une version corrigée |
| 🟡 MISE À JOUR REQUISE | La version se trouve dans une branche affectée |
| 🟠 RÉPLICATION DÉTECTÉE | Le rôle actuel dispose de la capacité de réplication |
| 🔴 POTENTIELLEMENT VULNÉRABLE | Version affectée + privilège pertinent |
| ⚪ ACCÈS INSUFFISANT | Le scanner ne peut pas inspecter les informations de rôle requises |
REPLICATION. INTERNET
│
▼
┌─────────────┐
│ Firewall │
└──────┬──────┘
│
▼
┌─────────────┐
│ PostgreSQL │
│ Server │
└──────┬──────┘
│
┌─────────┴─────────┐
▼ ▼
Least Privilege Monitoring
│ │
▼ ▼
Role Controls SIEM / Alerts
Limitez l'exposition réseau de PostgreSQL et évitez d'exposer directement les services de base de données à des réseaux non fiables.
Configuration de test recommandée :
┌───────────────────────────────────┐
│ Isolated Lab Network │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Scanner │──▶│ PostgreSQL │ │
│ │ Machine │ │ Test Host │ │
│ └────────────┘ └────────────┘ │
│ │
│ No Production Systems │
└───────────────────────────────────┘
Utilisez une installation PostgreSQL jetable ou un environnement de laboratoire dédié lors de la validation des outils de sécurité.
Ce projet est destiné strictement à la recherche en sécurité défensive, à l'évaluation de vulnérabilités et aux tests autorisés.
La méthodologie incluse est conçue pour identifier les installations PostgreSQL potentiellement vulnérables sans armer la vulnérabilité.
N'utilisez pas ce projet contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite d'évaluation.
L'auteur n'est pas responsable des mauvaises utilisations, dommages, pertes de données, interruptions de service ou accès non autorisés résultant de ce projet.
Recherche en cybersécurité • Analyse de vulnérabilités • Outillage défensif
Research → Verify → Document → Remediate
Les contributions sont les bienvenues.
Lors de la soumission d'améliorations :
Si ce projet a aidé votre recherche en sécurité, pensez à lui donner une ⭐