
# Comprobador de vulnerabilidades de PostgreSQL no destructivo para CVE-2026-6471 Audita la versión del servidor y los privilegios de REPLICATION para identificar la exposición a la falla de autorización de decodificación lógica, con orientación de remediación.
Un verificador de vulnerabilidades defensivo y no destructivo para CVE-2026-6471
CVE-2026-6471 es una vulnerabilidad de autorización en PostgreSQL que afecta al subsistema de decodificación lógica (logical decoding).
La vulnerabilidad puede permitir que un rol de PostgreSQL con el privilegio REPLICATION, pero sin privilegios de superusuario, provoque que el servidor PostgreSQL cargue una biblioteca controlada por el atacante y accesible para la cuenta del sistema operativo bajo la que se ejecuta PostgreSQL.
Una explotación exitosa puede resultar en ejecución arbitraria de código con los privilegios del proceso del servidor PostgreSQL.
Este repositorio proporciona un PoC de detección seguro diseñado para evaluaciones de seguridad autorizadas.
⚠️ El verificador no carga ninguna biblioteca compartida maliciosa ni ejecuta ningún comando del sistema operativo.
| Propiedad | Valor |
|---|---|
| CVE | CVE-2026-6471 |
| Producto | PostgreSQL |
| Componente | Decodificación Lógica |
| CWE | CWE-862 — Autorización faltante |
| CVSS v3.1 | 7.2 Alto |
| Vector de ataque | Red |
| Complejidad de ataque | Baja |
| Privilegios requeridos | Alto |
| Interacción del usuario | Ninguna |
| Confidencialidad | Alta |
| Integridad | Alta |
| Disponibilidad | Alta |
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Bajo las condiciones vulnerables, un atacante que ya posea una cuenta de PostgreSQL con la capacidad de replicación requerida podría potencialmente cruzar la frontera de privilegios entre la base de datos y el sistema operativo.
┌──────────────────────┐
│ Usuario PostgreSQL │
│ REPLICATION = YES │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Decodificación │
│ Lógica │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Validación de │
│ Autorización Faltante│
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Carga de │
│ Biblioteca │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Usuario SO de │
│ PostgreSQL │
└──────────────────────┘
El impacto real depende en gran medida de los privilegios y permisos del sistema de archivos de la cuenta del sistema operativo de PostgreSQL.
El aviso de seguridad del proyecto PostgreSQL identifica las siguientes ramas afectadas:
| Rama | Afectada | Corregida |
|---|---|---|
| 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 |
Actualice a la última versión de seguridad disponible para su rama de PostgreSQL.
Este proyecto realiza intencionalmente solo comprobaciones no destructivas.
El verificador debe comprobar:
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;
Salida de ejemplo:
postgres_version : PostgreSQL 17.x
current_user : security_audit
is_superuser : f
has_replication : t
Una versión vulnerable combinada con privilegios REPLICATION debe tratarse como que requiere remediación.
El PoC sigue este flujo de trabajo:
┌───────────────┐
│ Conexión a │
│ PostgreSQL │
└───────┬───────┘
│
▼
┌─────────────────┐
│ Obtener versión │
│ del servidor │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Comprobar rol │
│ actual │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Comprobar │
│ REPLICATION │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Comparar con │
│ versiones │
│ corregidas │
└────────┬────────┘
│
┌───────┴────────┐
▼ ▼
Potencialmente No
Vulnerable Afectado
❌ Cargar un .so controlado por el atacante
❌ Ejecutar payloads SQL arbitrarios
❌ Ejecutar comandos del sistema operativo
❌ Abrir una shell inversa
❌ Modificar la configuración de PostgreSQL
❌ Modificar el contenido del sistema de archivos
❌ Crear persistencia
❌ Explotar sistemas de producción
Esto hace que el verificador sea adecuado para evaluaciones de vulnerabilidad controladas y flujos de trabajo de inventario.
Clone el repositorio:
git clone https://github.com/<YOUR-USERNAME>/CVE-2026-6471.git
cd CVE-2026-6471
Instale la dependencia de Python requerida:
python3 -m pip install psycopg2-binary
Ejecute el verificador:
python3 CVE-2026-6471.py
Ejemplo:
╔════════════════════════════════════════════════════╗
║ 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.

Los administradores pueden inspeccionar los roles con replicación habilitada mediante:
SELECT
rolname,
rolsuper,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
Revise cada cuenta devuelta.
Si una cuenta no requiere privilegios de replicación, elimine los privilegios innecesarios de acuerdo con sus requisitos operativos.
Instale la versión corregida correspondiente:
14.24+
15.19+
16.15+
17.11+
18.6+
Prefiera la última versión de seguridad de PostgreSQL disponible en lugar de detenerse en la versión mínima corregida.
Identifique las cuentas con capacidad de replicación:
SELECT
rolname,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
Elimine los privilegios de replicación innecesarios:
ALTER ROLE <role_name> NOREPLICATION;
Realice cambios de privilegios solo después de confirmar que el rol no es necesario para la infraestructura de replicación legítima.
Preste especial atención a:
SUPERUSER
REPLICATION
LOGIN
CREATEDB
CREATEROLE
Utilice el principio de mínimo privilegio siempre que sea posible.
Una implementación conceptual simplificada:
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")
El propósito del verificador es la identificación de exposición, no la explotación.
| Resultado | Significado |
|---|---|
| 🟢 NO AFECTADO | PostgreSQL ejecuta una versión corregida |
| 🟡 ACTUALIZACIÓN REQUERIDA | La versión está dentro de una rama afectada |
| 🟠 REPLICACIÓN DETECTADA | El rol actual tiene capacidad de replicación |
| 🔴 POTENCIALMENTE VULNERABLE | Versión afectada + privilegio relevante |
| ⚪ ACCESO INSUFICIENTE | El escáner no puede inspeccionar la información del rol requerida |
REPLICATION. INTERNET
│
▼
┌─────────────┐
│ Firewall │
└──────┬──────┘
│
▼
┌─────────────┐
│ PostgreSQL │
│ Server │
└──────┬──────┘
│
┌─────────┴─────────┐
▼ ▼
Mínimo Privilegio Monitoreo
│ │
▼ ▼
Controles de Rol SIEM / Alertas
Restrinja la exposición de PostgreSQL a la red y evite exponer los servicios de base de datos directamente a redes no confiables.
Configuración de pruebas recomendada:
┌───────────────────────────────────┐
│ Red de Laboratorio Aislada │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Máquina │──▶│ PostgreSQL │ │
│ │ Escáner │ │ Host de │ │
│ │ │ │ Pruebas │ │
│ └────────────┘ └────────────┘ │
│ │
│ Sin Sistemas de Producción │
└───────────────────────────────────┘
Utilice una instalación de PostgreSQL desechable o un entorno de laboratorio dedicado al validar herramientas de seguridad.
Este proyecto está destinado estrictamente a investigación de seguridad defensiva, evaluación de vulnerabilidades y pruebas autorizadas.
La metodología incluida está diseñada para identificar instalaciones de PostgreSQL potencialmente vulnerables sin armar la vulnerabilidad.
No utilice este proyecto contra sistemas que no posea o para los cuales no tenga autorización explícita de evaluación.
El autor no es responsable del uso indebido, daños, pérdida de datos, interrupción del servicio o acceso no autorizado resultante de este proyecto.
Investigación en Ciberseguridad • Análisis de Vulnerabilidades • Herramientas Defensivas
Research → Verify → Document → Remediate
Las contribuciones son bienvenidas.
Al enviar mejoras:
Si este proyecto ayudó en su investigación de seguridad, considere darle una ⭐