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 — Exploit für CVE-2026-2005, einen Heap-Overflow in der pgcrypto-Erweiterung von PostgreSQL, der zu Remote-Code-Ausführung führt. Enthält PoC-Generatoren, Docker-Lab und detaillierte technische Dokumentation. | Kitploit
Tools/GitHubGitHub/dinosn/cve-2026-2005
SchwachstellenanalyseExploitationPenetrationstestsDatenbanksicherheitBinary-Exploitation
GitHubdinosn/cve-2026-2005

cve-2026-2005

Exploit für CVE-2026-2005, einen Heap-Overflow in der pgcrypto-Erweiterung von PostgreSQL, der zu Remote-Code-Ausführung führt. Enthält PoC-Generatoren, Docker-Lab und detaillierte technische Dokumentation.

Repository anzeigen
182vor 3 MonatenNoch 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 Overflow → RCE

Remote-Code-Execution über eine einzelne SQL-Abfrage, die auf die pgcrypto-Erweiterung von PostgreSQL abzielt. Die Schwachstelle ist ein Heap-Pufferüberlauf in pgp_parse_pubenc_sesskey(), der die Korruption der internen MemoryContext-Allocator-Metadaten von PostgreSQL ermöglicht und so beliebige Codeausführung als Benutzer postgres erreicht.

CVECVE-2026-2005
Komponentecontrib/pgcrypto/pgp-pubdec.c
CWECWE-122 (Heap-basierter Pufferüberlauf)
CVSSv3.18.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
BetroffenPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
Behoben14.21, 15.16, 16.12, 17.8, 18.2
Offengelegt2026-02-12
Fix-Commit379695d3cc70d040b547d912ce4842090d917ece

Proof of Exploitation

Zielverifizierung

Exploit-Ausführung

RCE-Nachweis

Schnellstart

root@kitploit:~
git clone https://github.com/dinosn/cve-2026-2005.git
cd cve-2026-2005/lab
docker compose up -d pg-exploit
# ~5s warten, bis postgres initialisiert ist
python3 ../poc/exploit.py --run cve-2026-2005-pg-exploit

Vollständiger Exploit-Lauf

Grundursache

root@kitploit:~
// contrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ctx->cipher_algo = *msg;
ctx->sess_key_len = msglen - 3;                       // angreiferkontrolliert
memcpy(ctx->sess_key, msg + 1, ctx->sess_key_len);    // sess_key ist uint8[32]

ctx->sess_key ist ein fester 32-Byte-Puffer, der in einer heap-allokierten PGP_Context-Struktur eingebettet ist. Eine manipulierte PGP-Nachricht mit einem überdimensionierten RSA-verschlüsselten Session-Key treibt sess_key_len auf bis zu ~200 Bytes und überläuft dabei in benachbarte Heap-Allokationen. Der Fix fügt eine sess_key_len > PGP_MAX_KEY-Grenzwertprüfung hinzu.

Exploit-Kette

  1. Heap-Overflow — Ein 148-Byte-Überlauf über sess_key[32] hinaus schreibt gefälschte Allocator-Metadaten in die benachbarte MBuf-Allokation
  2. bzero überspringen — Setzt MBuf->data = NULL, sodass explicit_bzero während der Bereinigung übersprungen wird
  3. Gefälschter Chunk-Header — Ein gefälschtes hdrmask dekodiert zu blockoffset=64 und leitet den Blockzeiger auf angreiferkontrollierte Daten um
  4. Freelist-Schreibvorgang — AllocSetFree schreibt die Chunk-Adresse nach MC+16 (das MemoryContext->methods-Feld) und ersetzt den Vtable-Zeiger
  5. Fehlerrückgabe — pgcrypto gibt einen normalen Fehler zurück (kein Absturz), was den Fehlerbehandler von PostgreSQL auslöst
  6. VTable-Übernahme — MemoryContextDelete(MC) ruft methods->delete_context(MC) über unsere gefälschte Vtable auf → system(MC)
  7. Befehlsausführung — system() liest die MemoryContext-Struktur als Zeichenkette: NodeTag 0x1D5 = "\xd5\x01\x00\x00" → führt /usr/local/bin/\xd5\x01 aus

Voraussetzungen

  • Authentifizierter Datenbankzugriff (jeder Benutzer mit EXECUTE auf pgcrypto-Funktionen — standardmäßig PUBLIC gewährt)
  • pgcrypto-Erweiterung installiert (CREATE EXTENSION pgcrypto)
  • Zielspezifische Adressen (deterministisch pro Docker-Image; kein PIE-ASLR in dieser Container-Konfiguration)
  • Vorab platziertes Trigger-Skript unter /usr/local/bin/\xd5\x01 (in Dockerfile.exploit enthalten)

Repository-Struktur

root@kitploit:~
├── README.md
├── poc/
│   ├── exploit.py          # Eigenständiger Exploit-Generator + Runner
│   ├── gen_exploit_v7.py   # Kommentierter Payload-Builder
│   ├── gen_payload.py      # Nur-Crash-PoC-Generator (alle Overflow-Größen)
│   ├── poc_big.sql         # Vorgenerierter Crash-PoC (SIGSEGV)
│   └── poc_minimal.sql     # Minimaler 4-Byte-Overflow-PoC
├── lab/
│   ├── docker-compose.yml  # Vollständiges Labor: vuln, patched, debug, exploit
│   ├── Dockerfile.exploit  # Release-Build + Trigger-Skript (RCE-Ziel)
│   ├── Dockerfile.vuln     # Standard verwundbarer Build (Crash-Demo)
│   ├── Dockerfile.debug    # Cassert-Build (Assertion-Demo)
│   ├── init.sql            # Datenbankinitialisierung
│   └── setup.sh            # Labor-Setup-Helfer
├── reports/
│   ├── RCE-CHAIN.md        # Detaillierte technische Exploitation-Ausarbeitung
│   ├── REPORT.md           # Schwachstellenanalyse-Bericht
│   └── TODO-FOR-RCE.md     # Entwicklungsprotokoll (abgeschlossen)
├── screenshots/
│   ├── 01-target-verification.png
│   ├── 02-exploit-fire.png
│   ├── 03-rce-proof.png
│   └── 04-full-run.png
└── src/                    # Relevante Quellcode-Ausschnitte

Labor-Builds

ContainerPortZweck
pg-exploit5436RCE-Ziel (Standard 17.7 + Trigger-Skript)
pg-vuln5433Crash-Demo (Standard 17.7, SIGSEGV)
pg-fixed5434Gepatchter Build (17.8, lehnt Payload ab)
pg-debug5435Debug-Build (cassert SIGABRT mit Quellcode-Zuordnung)
root@kitploit:~
# Alle Container starten
cd lab && docker compose up -d

# Crash-Demo (SIGSEGV auf Standard-Build)
docker exec cve-2026-2005-pg-vuln psql -U postgres -d lab -f /tmp/poc_big.sql
docker logs cve-2026-2005-pg-vuln 2>&1 | grep "signal 11"

# Gepatchter Build (lehnt ordnungsgemäß ab)
docker exec cve-2026-2005-pg-fixed psql -U postgres -d lab -f /tmp/poc_big.sql
# ERROR: Public key too big

# Debug-Build (Assertion mit Datei:Zeile)
docker exec cve-2026-2005-pg-debug psql -U postgres -d lab -f /tmp/poc_big.sql
docker logs cve-2026-2005-pg-debug 2>&1 | grep "TRAP"

Einschränkungen

  • Adressabhängig: Der Exploit verwendet fest codierte Heap-Adressen, die spezifisch für das Docker-Image postgres:17.7-bookworm sind. Andere Builds/Umgebungen erfordern eine Neukalibrierung der Adressen (über GDB oder Info-Leak).
  • Aufwärmphase erforderlich: Ein einzelner pgcrypto-Aufruf (SELECT digest('x','md5')) in derselben Verbindung stabilisiert das Heap-Layout vor der Exploit-Abfrage.
  • Trigger-Skript: Erfordert eine Binärdatei namens \xd5\x01 im PATH. Das Dockerfile installiert diese vorab. Eine Exploitation in der realen Welt würde vorherigen Schreibzugriff oder einen anderen ROP/One-Gadget-Ansatz erfordern.
  • Nur Release-Build: Debug-Builds mit --enable-cassert brechen mit einer Assertion ab, bevor der Freelist-Schreibvorgang stattfindet.

Zeitplan

  • 2026-02-12: Schwachstelle von Team Xint Code offengelegt
  • 2026-02-13: Fix committet (379695d)
  • 2026-02-20: Behobene Versionen veröffentlicht (17.8, usw.)
  • 2026-05-05: RCE-Exploit entwickelt und im Labor nachgewiesen

Haftungsausschluss

Dieser Exploit wird ausschließlich für autorisierte Sicherheitsforschung und Bildungszwecke bereitgestellt. Nur in kontrollierten Laborumgebungen mit ausdrücklicher Genehmigung verwenden.

Tool herunterladen