
PoC educativo per CVE-2026-8838, una vulnerabilità RCE critica nel driver Python Amazon Redshift tramite eval() non sicuro in vector_in(). Include analisi tecnica, vettore di attacco e guida alla mitigazione.
eval()
Progetto di ricerca e dimostrazione in cybersecurity offensiva realizzato esclusivamente a fini didattici e di sensibilizzazione.
Qualsiasi utilizzo su sistemi senza autorizzazione esplicita è illegale.
Questo repository deve essere utilizzato unicamente in:
Lo scenario di vulnerabilità presentato qui è inteso esclusivamente a scopo di dimostrazione didattica.
CVE-2026-8838 è una vulnerabilità critica di iniezione di codice (Remote Code Execution) scoperta nel connettore Python ufficiale di Amazon Redshift (amazon-redshift-python-driver).
La falla deriva dall'uso non sicuro della funzione nativa Python eval() su dati ricevuti direttamente dal server, nella funzione vector_in(). Un server malintenzionato o un attaccante posizionato come Man-in-the-Middle (MitM) può inviare una payload appositamente forgiata che verrà valutata ed eseguita lato client senza alcuna validazione.
| Campo | Valore |
|---|---|
| CVE ID | CVE-2026-8838 |
| Punteggio CVSS | 9.8 (Critical) |
| CWE | CWE-94 — Improper Control of Generation of Code |
| Vettore CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Componente vulnerabile | amazon-redshift-python-driver < 2.1.14 |
| Funzione vulnerabile | vector_in() |
| Tipo di attacco | Rogue server / Man-in-the-Middle |
| Autenticazione richiesta | No |
| Interazione utente | No |
La funzione vector_in() è responsabile della deserializzazione dei dati di tipo vettoriale ricevuti dal server Redshift. Nelle versioni vulnerabili, utilizza eval() direttamente sul contenuto grezzo restituito dal server:
# Code vulnérable (simplifié) — versions < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# FAILLE : eval() sur une donnée contrôlée par le serveur
return eval(raw)
Un server malintenzionato può restituire qualsiasi espressione Python valida al posto di un vettore legittimo. Python la valuterà quindi come codice nativo.
Client (victime) Serveur (malveillant / MitM)
| |
|---------- Connexion Redshift ----------->|
| |
|<--------- Réponse forgée ---------------|
| "[__import__('os').system('cmd')]" |
| |
| eval() exécute le payload côté client |
| => RCE sur la machine du client |
Vedi
poc_server.pyper il server simulato epoc/poc_client.pyper il client di dimostrazione.
Il PoC simula un server Redshift che restituisce una risposta forgiata. Solo a scopo dimostrativo, la payload utilizzata è innocua (whoami).
Esecuzione:
# Terminal 1 — démarrer le faux serveur
python poc/poc_server.py
# Terminal 2 — simuler le client vulnérable
python poc/poc_client.py
Lo sfruttamento riuscito consente a un attaccante di:
| Pacchetto | Versione vulnerabile | Versione corretta |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
Verifica la versione installata:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# Vérification
pip show amazon-redshift-python-driver | grep Version
# Attendu : Version: 2.1.14 ou supérieure
Vedi il file MITIGATION.md per le raccomandazioni dettagliate:
Maxime288 — github.com/Maxime288
Ricerca realizzata a fini educativi nell'ambito dello studio della sicurezza offensiva.