Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-2005 — PoC di heap buffer overflow in pgcrypto di PostgreSQL che dimostra la CVE-2026-2005: RCE con privilegi limitati ed escalation dei privilegi a superuser tramite pacchetto OpenPGP appositamente predisposto. | Kitploit
Strumenti/GitHubGitHub/open-flaw/cve-2026-2005
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPost-ExploitAnalisi di BinariSicurezza dei DatabaseBinary Exploitation
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

PoC di heap buffer overflow in pgcrypto di PostgreSQL che dimostra la CVE-2026-2005: RCE con privilegi limitati ed escalation dei privilegi a superuser tramite pacchetto OpenPGP appositamente predisposto.

Vedi Repository
10 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-2005 — Overflow del buffer heap di pgcrypto in PostgreSQL

Commit di destinazione: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — vulnerabile)

Riepilogo

CampoDettaglio
CVECVE-2026-2005
TipoOverflow del buffer heap
Componentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ImpattoRCE come utente del sistema operativo che esegue PostgreSQL
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Autenticazione richiestaBassa — qualsiasi utente autenticato con privilegio CREATE
InteressatePostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
Corretta in14.21, 15.16, 16.12, 17.8, 18.2 (12 febbraio 2026)
Archaarch64 (ARM64) — gli offset dell'heap e il layout di MBuf sono specifici di architettura/glibc

Avvio rapido

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"

Catena di sfruttamento (7 fasi)

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

Struttura dei file

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

Compilazione manuale (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

Requisiti

  • Docker + Docker Compose (host aarch64, es. Mac con Apple Silicon)
  • Node.js ≥ 18
  • ~2 GB di disco per la compilazione di PostgreSQL
  • La compilazione richiede ~3–5 minuti alla prima esecuzione
  • tmux (opzionale — necessario solo con il flag --gdb)

Dettagli della vulnerabilità

Il bug si trova in pgp_parse_pubenc_sesskey() in contrib/pgcrypto/pgp-pubdec.c. Durante l'analisi di un pacchetto OpenPGP Public-Key Encrypted Session Key (tag 1):

  1. Il codice legge la lunghezza dell'MPI (intero a precisione multipla) dal pacchetto
  2. Alloca un buffer in base a quella lunghezza
  3. Decripta l'MPI con RSA nel buffer
  4. Legge la lunghezza della chiave di sessione dai dati decriptati senza validazione dei limiti
  5. Esegue memcpy dei dati della chiave di sessione in un buffer a dimensione fissa basandosi sulla lunghezza non validata

La memcpy può scrivere oltre il confine del buffer heap, corrompendo i metadati o i dati heap adiacenti, portando all'esecuzione di codice arbitrario.

Dettagli della catena di sfruttamento

  1. Leak del puntatore heap — Corrompi l'header del chunk malloc; analizza il messaggio di errore di pfree() per estrarre l'indirizzo heap di mdst->data.
  2. Risoluzione della base PIE — Leggi /proc/<pid>/maps dal container Docker per trovare l'indirizzo di caricamento del binario di postgres in esecuzione.
  3. Scrittura arbitraria — Forgia entrambe le struct MBuf msrc (sorgente) e mdst (destinazione) tramite l'overflow dell'heap. msrc punta a un pacchetto symenc incorporato contenente l'OID del superutente (10); mdst punta a CurrentUserId - 4 (considerando l'header SET_VARSIZE di 4 byte).
  4. Escalation dei privilegi — Con CurrentUserId = 10 (superutente di bootstrap), esegui COPY FROM PROGRAM per eseguire comandi arbitrari del sistema operativo.

Opzioni CLI

Note

  • L'estensione pgcrypto è attendibile — qualsiasi utente con privilegio CREATE (non superutente) può installarla, rendendo questo sfruttabile con privilegi bassi.
  • La build Docker include --enable-debug per un debug più semplice con gdb.
  • Gli offset dell'heap (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) sono specifici per aarch64 + glibc — altre architetture/allocatori richiedono offset diversi.
  • Il container usa restart: always per riprendersi automaticamente dai crash del backend durante il test dei candidati PIE.
  • La base PIE viene risolta tramite /proc/<pid>/maps all'interno del container Docker — non serve readelf sull'host.
  • La tabella dei simboli per l'offset di CurrentUserId viene letta tramite docker exec readelf.

Riferimenti

  • Advisory di sicurezza PostgreSQL
  • Analisi tecnica di ZeroDay.Cloud
  • Voce NVD
Scarica lo strumento
FlagPredefinitoDescrizione
--cmdidComando del sistema operativo da eseguire dopo lo sfruttamento riuscito
--key-size3072Dimensione della chiave RSA in bit
--host127.0.0.1Host PostgreSQL
--port5432Porta PostgreSQL
--userpostgresUtente del database
--password(vuoto)Password del database
--dbnamepostgresNome del database
--binary./postgresPercorso del binario ELF di postgres per i simboli
--scan-offsetautoOverride dell'offset di scansione dell'heap dal puntatore ottenuto tramite leak
--verboseoffAbilita l'output di debug dettagliato
--gdboffCollega GDB tramite tmux al punto dell'overflow