
CVE-2026-32746 - PoC di buffer overflow in GNU InetUtils telnetd LINEMODE SLC (RCE pre-autenticazione, CVSS 9.8)
Overflow del buffer pre-autenticazione nel gestore LINEMODE SLC (Set Local Characters) di GNU InetUtils telnetd.
CVSS 3.1: 9.8 (Critico) | CWE: CWE-120, CWE-787
La funzione add_slc() in telnetd/slc.c aggiunge 3 byte per tripletto SLC a un buffer fisso di 108 byte (slcbuf) senza controlli sui limiti. Un attaccante non autenticato può inviare una subopzione SLC appositamente modificata con più di 40 triplet (codici funzione > 18/NSLC) durante la negoziazione delle opzioni - prima di qualsiasi prompt di login - facendo overflow del buffer e corrompendo il puntatore slcptr e i dati adiacenti in BSS.
# Build the vulnerable lab environment
docker compose up -d
# Detect (non-destructive)
python3 detect.py 127.0.0.1 2323
# Exploit (triggers overflow, verifies via response)
python3 exploit.py 127.0.0.1 2323
# Clean up
docker compose down
La configurazione Docker esegue un container Debian con inetutils-telnetd 2.4 sotto xinetd, esposto sulla porta 2323. Completamente isolato - nulla tocca il tuo host.
WILL LINEMODE per attivare la negoziazione LINEMODEDO LINEMODE ed entra nell'elaborazione della subopzione SLCadd_slc() accoda una risposta "non supportato" (3 byte) per ogni tripletto in un buffer di 104 byteslcptr e i dati BSS adiacentiend_slc() invia tutto da slcbuf alla posizione corrotta di slcptr, inclusa la memoria BSS trapelata nella rispostaPer un'analisi approfondita dello sfruttamento che include vincoli sui byte, tecniche di allineamento e la primitiva def_slcbuf/free() su sistemi a 32 bit, consulta l'analisi di WatchTowr.
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. Non utilizzarlo contro sistemi che non possiedi o per i quali non hai un'autorizzazione esplicita al test. L'autore non è responsabile di un uso improprio.
MIT
| File | Descrizione |
|---|
exploit.py | PoC overflow con verifica basata sulla risposta |
Dockerfile | Laboratorio telnetd vulnerabile |
docker-compose.yml | Configurazione laboratorio con un solo comando |
xinetd-telnet.conf | Configurazione servizio xinetd |
detect.py | Script di rilevamento versione non distruttivo |