
Educational PoC für CVE-2026-8838, eine kritische RCE-Schwachstelle im Amazon Redshift Python-Treiber durch unsicheres eval() in vector_in(). Enthält technische Analyse, Angriffsvektor und Anleitung zur Schadensbegrenzung.
eval()
Forschungs- und Demonstrationsprojekt im Bereich offensive Cybersicherheit, das ausschließlich zu pädagogischen und sensibilisierenden Zwecken durchgeführt wird.
Jegliche Nutzung auf Systemen ohne ausdrückliche Genehmigung ist illegal.
Dieses Repository darf nur in folgenden Umgebungen verwendet werden:
Das hier dargestellte Verwundbarkeitsszenario dient ausschließlich der Bildungsdemonstration.
CVE-2026-8838 ist eine kritische Code-Injection-Schwachstelle (Remote Code Execution), die im offiziellen Python-Connector von Amazon Redshift (amazon-redshift-python-driver) entdeckt wurde.
Die Sicherheitslücke resultiert aus der unsicheren Verwendung der nativen Python-Funktion eval() auf Daten, die direkt vom Server empfangen werden, in der Funktion vector_in(). Ein bösartiger Server oder ein Angreifer, der sich in einer Man-in-the-Middle (MitM)-Position befindet, kann eine speziell präparierte Payload senden, die auf der Client-Seite ausgewertet und ausgeführt wird, ohne jegliche Validierung.
| Feld | Wert |
|---|---|
| CVE ID | CVE-2026-8838 |
| CVSS Score | 9.8 (Critical) |
| CWE | CWE-94 — Improper Control of Generation of Code |
| CVSS Vektor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Verwundbare Komponente | amazon-redshift-python-driver < 2.1.14 |
| Verwundbare Funktion | vector_in() |
| Angriffsart | Rogue Server / Man-in-the-Middle |
| Erforderliche Authentifizierung | Nein |
| Benutzerinteraktion | Nein |
Die Funktion vector_in() ist für die Deserialisierung von Vektordaten zuständig, die vom Redshift-Server empfangen werden. In den verwundbaren Versionen verwendet sie eval() direkt auf dem rohen Inhalt, der vom Server zurückgegeben wird:
# Verwundbarer Code (vereinfacht) — Versionen < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# SCHWACHSTELLE: eval() auf vom Server kontrollierten Daten
return eval(raw)
Ein bösartiger Server kann jeden gültigen Python-Ausdruck anstelle eines legitimen Vektors zurückgeben. Python wertet diesen dann als nativen Code aus.
Client (Opfer) Server (bösartig / MitM)
| |
|---------- Redshift-Verbindung ---------->|
| |
|<--------- Präparierte Antwort ----------|
| "[__import__('os').system('cmd')]" |
| |
| eval() führt die Payload auf Client aus |
| => RCE auf dem Client-Rechner |
Siehe
poc_server.pyfür den simulierten Server undpoc/poc_client.pyfür den Demonstrations-Client.
Das PoC simuliert einen Redshift-Server, der eine präparierte Antwort zurücksendet. Nur zu Demonstrationszwecken wird eine harmlose Payload verwendet (whoami).
Ausführung:
# Terminal 1 — Falschen Server starten
python poc/poc_server.py
# Terminal 2 — Verwundbaren Client simulieren
python poc/poc_client.py
Eine erfolgreiche Ausnutzung ermöglicht es einem Angreifer:
| Paket | Verwundbare Version | Korrigierte Version |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
Überprüfen Sie Ihre installierte Version:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# Überprüfung
pip show amazon-redshift-python-driver | grep Version
# Erwartet: Version: 2.1.14 oder höher
Siehe Datei MITIGATION.md für detaillierte Empfehlungen:
Maxime288 — github.com/Maxime288
Forschung zu Bildungszwecken im Rahmen des Studiums der offensiven Sicherheit.