Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-2005 — PostgreSQL pgcrypto Heap-Pufferüberlauf-PoC, der CVE-2026-2005 demonstriert: RCE mit geringen Privilegien und Privilegienerweiterung zum Superuser über manipulierte OpenPGP-Pakete. | Kitploit
Tools/GitHubGitHub/open-flaw/cve-2026-2005
Privilege EscalationSchwachstellenanalyseExploitationPost-ExploitationBinäranalyseDatenbanksicherheitBinary-Exploitation
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

PostgreSQL pgcrypto Heap-Pufferüberlauf-PoC, der CVE-2026-2005 demonstriert: RCE mit geringen Privilegien und Privilegienerweiterung zum Superuser über manipulierte OpenPGP-Pakete.

Repository anzeigen
5vor 19 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-2005 — PostgreSQL pgcrypto Heap Buffer Overflow

Ziel-Commit: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — verwundbar)

Zusammenfassung

FeldDetail
CVECVE-2026-2005
TypHeap-Pufferüberlauf
Komponentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
AuswirkungRCE als OS-Benutzer, der PostgreSQL ausführt
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Erforderliche AuthentifizierungNiedrig — jeder authentifizierte Benutzer mit CREATE-Berechtigung
BetroffenPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
Behoben in14.21, 15.16, 16.12, 17.8, 18.2 (12. Februar 2026)
Architekturaarch64 (ARM64) — Heap-Offsets und MBuf-Layout sind arch/glibc-spezifisch

Schnellstart

root@kitploit:~
# PostgreSQL 18.1 (verwundbar) bauen und starten
docker compose up -d --build

# Auf healthy warten
docker compose logs -f postgres
# Strg+C, wenn "database system is ready to accept connections" erscheint

# Einmalige Einrichtung: postgres-Binary für Offline-Symbolanalyse kopieren
docker cp cve-2026-2005-poc:/usr/local/pgsql/bin/postgres ./postgres

# Node-Abhängigkeiten installieren
npm install

# Vollständige RCE-Exploit-Kette ausführen (reines SQL — keine Docker-Interaktion)
node exploit.js --cmd "id"

# Mit ausführlicher Ausgabe
node exploit.js --cmd "id" --verbose

# Benutzerdefinierten Befehl ausführen
node exploit.js --cmd "whoami"

Exploit-Kette (7 Stufen)

root@kitploit:~
Stufe 1: Heap-Pointer-Leak
  └─ mdst-Chunk-Header beschädigen → pfree()-Fehlermeldung parsen

Stufe 2: Beliebiger Lesezugriff (Multi-Window-Scan)
  └─ mdst->data überschreiben → Speicher in der Nähe des geleakten Pointers scannen

Stufe 3: Pointer-Kandidatensammlung
  └─ Heap-Dumps nach pointerartigen 8-Byte-Werten durchsuchen

Stufe 4: PIE-Basisauflösung
  └─ Geleakte Adressen gegen ELF-Symbol-Offsets abstimmen (Seiten-Offset-
     gruppiert, offline — Symbole aus der lokalen Binary-Kopie geparst)

Stufe 5: PIE-Validierung
  └─ Arb-Read von CurrentUserId an der Kandidatenbasis → mit Session-OID vergleichen

Stufe 6: Beliebiger Schreibzugriff
  └─ msrc + mdst MBufs fälschen → CurrentUserId → 10 (Superuser) überschreiben

Stufe 7: Befehlsausführung
  └─ COPY FROM PROGRAM → beliebiger OS-Befehl als postgres-Benutzer

Dateistruktur

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # Baut PostgreSQL 18.1 aus dem Quellcode
├── docker-compose.yml      # PostgreSQL-Dienst mit Auto-Neustart
├── init.sh                 # Entrypoint — initdb + Listen-Konfiguration
├── README.md               # Diese Datei
└── poc/
    ├── package.json        # Node.js-Abhängigkeiten (pg)
    ├── exploit.js          # Vollständiger 7-Stufen-RCE-Exploit (Node.js)
    ├── verify.sh           # Shell-basierte Schnellverifizierung
    └── test-pgcrypto.sql   # Nur-SQL-Test des pgcrypto-Ladens

Manueller Build (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

Anforderungen

  • Docker + Docker Compose (aarch64-Host, z. B. Apple-Silicon-Mac)
  • Node.js ≥ 18
  • ~2 GB Speicherplatz für den PostgreSQL-Build
  • Build dauert beim ersten Lauf ~3–5 Minuten
  • tmux (optional — nur mit --gdb-Flag benötigt)

Schwachstellendetails

Der Fehler liegt in pgp_parse_pubenc_sesskey() in contrib/pgcrypto/pgp-pubdec.c. Beim Parsen eines OpenPGP-Public-Key-Encrypted-Session-Key-Pakets (Tag 1):

  1. Der Code liest die MPI-Länge (Multi-Precision Integer) aus dem Paket
  2. Allokiert einen Puffer basierend auf dieser Länge
  3. Entschlüsselt das MPI per RSA in den Puffer
  4. Liest die Session-Key-Länge aus den entschlüsselten Daten ohne Grenzvalidierung
  5. Kopiert die Session-Key-Daten per memcpy in einen Puffer fester Größe basierend auf der unvalidierten Länge

Das memcpy kann über die Heap-Puffergrenze hinaus schreiben, benachbarte Heap-Metadaten oder -Daten beschädigen und zu beliebiger Codeausführung führen.

Detail der Exploit-Kette

  1. Heap-Pointer-Leak — Malloc-Chunk-Header beschädigen; die pfree()-Fehlermeldung parsen, um die mdst->data-Heap-Adresse zu extrahieren.
  2. PIE-Basisauflösung — /proc/<pid>/maps aus dem Docker-Container lesen, um die Ladeadresse der postgres-Binary zur Laufzeit zu finden.
  3. Beliebiger Schreibzugriff — Sowohl msrc (Quelle) als auch mdst (Ziel) MBuf-Strukturen über den Heap-Überlauf fälschen. msrc zeigt auf ein eingebettetes Symenc-Paket, das die Superuser-OID (10) enthält; mdst zeigt auf CurrentUserId - 4 (unter Berücksichtigung des 4-Byte-SET_VARSIZE-Headers).
  4. Privilegienerweiterung — Mit CurrentUserId = 10 (Bootstrap-Superuser) COPY FROM PROGRAM ausführen, um beliebige OS-Befehle auszuführen.

CLI-Optionen

Hinweise

  • Die pgcrypto-Erweiterung ist vertrauenswürdig — jeder Benutzer mit CREATE-Berechtigung (kein Superuser) kann sie installieren, was dies mit niedrigen Berechtigungen ausnutzbar macht.
  • Der Docker-Build enthält --enable-debug für einfacheres Debugging mit gdb.
  • Heap-Offsets (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) sind spezifisch für aarch64 + glibc — andere Architekturen/Allokatoren benötigen andere Offsets.
  • Die PIE-Basis wird aus den geleakten Heap-Pointern per Symbol-Offset-Abstimmung aufgelöst und dann durch Lesen von CurrentUserId über dieselbe Arbitrary-Read-Primitive bestätigt.

Referenzen

  • PostgreSQL Security Advisory
  • ZeroDay.Cloud Technical Writeup
  • NVD-Eintrag
Tool herunterladen
FlagStandardBeschreibung
--cmdidOS-Befehl, der nach erfolgreichem Exploit ausgeführt wird
--key-size3072RSA-Schlüsselgröße in Bits
--host127.0.0.1PostgreSQL-Host
--port5432PostgreSQL-Port
--userpostgresDatenbankbenutzer
--password(leer)Datenbankpasswort
--dbnamepostgresDatenbankname
--binary./postgresPfad zur postgres-ELF-Binary für Symbole
--scan-offsetautoHeap-Scan-Offset vom geleakten Pointer überschreiben
--verboseausAusführliche Debug-Ausgabe aktivieren
--gdbausGDB über tmux am Überlaufpunkt anhängen