Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-2005 — PoC de desbordamiento de búfer en el montón (heap buffer overflow) en pgcrypto de PostgreSQL que demuestra CVE-2026-2005: RCE con bajos privilegios y escalada de privilegios a superusuario mediante un paquete OpenPGP manipulado. | Kitploit
Herramientas/GitHubGitHub/open-flaw/cve-2026-2005
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPost-ExplotaciónAnálisis de BinariosSeguridad de Bases de DatosExplotación de Binarios
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

PoC de desbordamiento de búfer en el montón (heap buffer overflow) en pgcrypto de PostgreSQL que demuestra CVE-2026-2005: RCE con bajos privilegios y escalada de privilegios a superusuario mediante un paquete OpenPGP manipulado.

Ver Repositorio
hace 9 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-2005 — Desbordamiento de búfer en el heap de PostgreSQL pgcrypto

Commit objetivo: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — vulnerable)

Resumen

CampoDetalle
CVECVE-2026-2005
TipoDesbordamiento de búfer en el heap
Componentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ImpactoRCE como el usuario del sistema operativo que ejecuta PostgreSQL
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Autenticación requeridaBaja — cualquier usuario autenticado con privilegio CREATE
AfectadasPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
Corregida en14.21, 15.16, 16.12, 17.8, 18.2 (12 de febrero de 2026)
Arquitecturaaarch64 (ARM64) — los offsets del heap y el diseño de MBuf son específicos de la arquitectura/glibc

Inicio rápido

root@kitploit:~
# Build and start PostgreSQL 18.1 (vulnerable)
docker compose up -d --build

# Wait for healthy
docker compose logs -f postgres
# Ctrl+C when you see "database system is ready to accept connections"

# Install node deps
npm install

# Run the full RCE exploit chain
node exploit.js --cmd "id"

# With verbose output
node exploit.js --cmd "id" --verbose

# Execute a custom command
node exploit.js --cmd "whoami"

Cadena de explotación (7 etapas)

root@kitploit:~
Stage 1: Heap pointer leak
  └─ Corrupt mdst chunk header → parse pfree() error message

Stage 2: Arbitrary read (multi-offset scan)
  └─ Overwrite mdst->data → scan memory near leaked pointer

Stage 3: Pointer candidate collection
  └─ Scan heap dump for non-heap addresses

Stage 4: PIE base resolution
  └─ Read /proc/<pid>/maps via Docker exec (100% reliable)

Stage 5: (skipped — PIE base is known from maps)

Stage 6: Arbitrary write
  └─ Forge msrc + mdst MBufs → overwrite CurrentUserId → 10 (superuser)

Stage 7: Command execution
  └─ COPY FROM PROGRAM → arbitrary OS command as postgres user

Estructura de archivos

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # Builds PostgreSQL 18.1 from source
├── docker-compose.yml      # PostgreSQL service with auto-restart
├── init.sh                 # Entrypoint — initdb + listen config
├── README.md               # This file
└── poc/
    ├── package.json        # Node.js dependencies (pg)
    ├── exploit.js          # Full 7-stage RCE exploit (Node.js)
    ├── verify.sh           # Shell-based quick verification
    └── test-pgcrypto.sql   # SQL-only test of pgcrypto loading

Compilación manual (macOS / Linux)

root@kitploit:~
git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

Requisitos

  • Docker + Docker Compose (host aarch64, p. ej. Mac con Apple Silicon)
  • Node.js ≥ 18
  • ~2 GB de disco para la compilación de PostgreSQL
  • La compilación tarda entre 3 y 5 minutos en la primera ejecución
  • tmux (opcional — solo se necesita con el flag --gdb)

Detalles de la vulnerabilidad

El fallo está en pgp_parse_pubenc_sesskey() de contrib/pgcrypto/pgp-pubdec.c. Al analizar un paquete OpenPGP de clave de sesión cifrada con clave pública (etiqueta 1):

  1. El código lee la longitud del MPI (entero de multiprecisión) del paquete
  2. Asigna un búfer basado en esa longitud
  3. Descifra el MPI con RSA dentro del búfer
  4. Lee la longitud de la clave de sesión de los datos descifrados sin validación de límites
  5. Copia con memcpy los datos de la clave de sesión a un búfer de tamaño fijo basado en la longitud no validada

El memcpy puede escribir más allá del límite del búfer del heap, corrompiendo metadatos o datos adyacentes del heap, lo que conduce a la ejecución arbitraria de código.

Detalle de la cadena de explotación

  1. Fuga de puntero del heap — Corrompe la cabecera del chunk de malloc; analiza el mensaje de error de pfree() para extraer la dirección de heap de mdst->data.
  2. Resolución de la base PIE — Lee /proc/<pid>/maps desde el contenedor Docker para encontrar la dirección de carga del binario de postgres en tiempo de ejecución.
  3. Escritura arbitraria — Forja las estructuras MBuf msrc (origen) y mdst (destino) mediante el desbordamiento del heap. msrc apunta a un paquete symenc incrustado que contiene el OID de superusuario (10); mdst apunta a CurrentUserId - 4 (teniendo en cuenta la cabecera SET_VARSIZE de 4 bytes).
  4. Escalada de privilegios — Con CurrentUserId = 10 (superusuario bootstrap), ejecuta COPY FROM PROGRAM para lanzar comandos arbitrarios del sistema operativo.

Opciones de CLI

Notas

  • La extensión pgcrypto es de confianza (trusted) — cualquier usuario con privilegio CREATE (no superusuario) puede instalarla, lo que hace que esto sea explotable con privilegios bajos.
  • La compilación Docker incluye --enable-debug para facilitar la depuración con gdb.
  • Los offsets del heap (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) son específicos de aarch64 + glibc — otras arquitecturas/asignadores necesitan offsets diferentes.
  • El contenedor usa restart: always para recuperarse automáticamente de los bloqueos del backend durante las pruebas de candidatos PIE.
  • La base PIE se resuelve mediante /proc/<pid>/maps dentro del contenedor Docker — no se necesita readelf en el host.
  • La tabla de símbolos para el offset de CurrentUserId se lee mediante docker exec readelf.

Referencias

  • Aviso de seguridad de PostgreSQL
  • Análisis técnico de ZeroDay.Cloud
  • Entrada NVD
Descargar herramienta
FlagPor defectoDescripción
--cmdidComando del SO a ejecutar tras un exploit exitoso
--key-size3072Tamaño de la clave RSA en bits
--host127.0.0.1Host de PostgreSQL
--port5432Puerto de PostgreSQL
--userpostgresUsuario de la base de datos
--password(vacío)Contraseña de la base de datos
--dbnamepostgresNombre de la base de datos
--binary./postgresRuta al binario ELF de postgres para los símbolos
--scan-offsetautoAnular el offset de escaneo del heap desde el puntero filtrado
--verboseoffHabilitar salida de depuración detallada
--gdboffAdjuntar GDB mediante tmux en el punto de desbordamiento