
# 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.
PostGREShell 🛢️
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