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
vor 9 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-Pufferüberlauf

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

Zusammenfassung

FieldDetail
CVECVE-2026-2005
TypHeap-Pufferüberlauf
Komponentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
AuswirkungRCE als der 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)
Archaarch64 (ARM64) – Heap-Offsets und MBuf-Layout sind arch/glibc-spezifisch

Schnellstart

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"

Exploit-Kette (7 Stufen)

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

Dateistruktur

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

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
  • Der Build dauert beim ersten Lauf ca. 3–5 Minuten
  • tmux (optional – nur mit --gdb-Flag benötigt)

Details zur Schwachstelle

Der Fehler befindet sich in pgp_parse_pubenc_sesskey() in contrib/pgcrypto/pgp-pubdec.c. Beim Parsen eines OpenPGP-Pakets für öffentlich verschlüsselte Session-Keys (Tag 1):

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

Das memcpy kann über die Grenze des Heap-Puffers hinaus schreiben, benachbarte Heap-Metadaten oder -Daten beschädigen und so zur Ausführung beliebigen Codes führen.

Details der Exploit-Kette

  1. Heap-Pointer-Leak — Chunk-Header von malloc beschädigen; die pfree()-Fehlermeldung parsen, um die Heap-Adresse von mdst->data zu extrahieren.
  2. PIE-Basisauflösung — /proc/<pid>/maps aus dem Docker-Container lesen, um die Ladeadresse der Postgres-Binärdatei zur Laufzeit zu ermitteln.
  3. Beliebiges Schreiben — Sowohl die MBuf-Strukturen msrc (Quelle) als auch mdst (Ziel) ü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 zu starten.

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, um das Debugging mit gdb zu erleichtern.
  • Heap-Offsets (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) sind spezifisch für aarch64 + glibc – andere Architekturen/Allokatoren benötigen andere Offsets.
  • Der Container verwendet restart: always, um nach Backend-Abstürzen während des Testens von PIE-Kandidaten automatisch neu zu starten.
  • Die PIE-Basis wird über /proc/<pid>/maps innerhalb des Docker-Containers aufgelöst – kein readelf auf dem Host erforderlich.
  • Die Symboltabelle für den CurrentUserId-Offset wird über docker exec readelf gelesen.

Referenzen

  • PostgreSQL-Sicherheitshinweis
  • ZeroDay.Cloud Technischer Bericht
  • 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-Binärdatei für Symbole
--scan-offsetautoHeap-Scan-Offset vom geleakten Pointer überschreiben
--verboseausAusführliche Debug-Ausgabe aktivieren
--gdbausGDB über tmux am Überlaufpunkt anhängen