• +54 (011) 4323-9362
  • |
  • de Lun a Vie de 9 a 17 hs
  • |
  • ciberseguridad@ba-csirt.gob.ar

############################
|A|L|E|R|T|A|S| |B|A|-|C|S|I|R|T|
############################

Ejecución remota de código con privilegios de sistema en dispositivos TP-Link SR20

05/04/2019

=============================================
CVE -
Fecha de lanzamiento: 01/04/2019
Gravedad: Alta
=============================================

VULNERABILIDAD

Fallo encontrado en el router y hub TP-Link SR20 que permite a un atacante ejecutar código remoto con privilegio de root. Para ello es necesario estar conectado en la misma red ya que las reglas del firewall por defecto bloquean el acceso a la WAN.

INFORMACIÓN

El TP-LINK SR20 es un roúter que funciona a la vez transmitiendo la señal de red Wifi con velocidades de hasta 1.900 Mbps y gestionando los dispositivos conectados de casa como bombillas inteligentes o cámaras de vigilancia.

DESCRIPCIÓN

s común encontrar en los routers TP-Link un ejecutable llamado tddp utilizado para la depuración del dispositivo. Este proceso ya ha tenido fallos en el pasado. Lo interesante es que en la versión 2 es necesario acceder con la contraseña de administrador, pero en la versión 1 no es necesario autenticarse, y resulta que el SR20 aún soporta comandos de la versión 1.

Al analizar tddp se puede ver que la función recvfrom() se encarga de copiar información de un network socket y seleccionar un protocolo a utilizar según el primer byte del paquete enviado. En la versión 1 comprueba el segundo byte para realizar una llamada a la función que va a tratar este paquete. Si este segundo byte es 0x31 llama a CMD_FTEST_CONFIG.

CMD_FTEST_CONFIG parsea el contenido del paquete a un payload que contiene dos strings separadas por un punto y coma. La primera cadena corresponde a un nombre de fichero y la segunda a un archivo de configuración. Luego llama a tddp_exexCmd

tddp_execCmd("cd /tmp; tftp -gr %s %s &",luaFile,remote_address)

Que ejecuta el comando tftp en segundo plano y se conecta de nuevo a la máquina que envió el comando donde trata de descargar el archivo correspondiente al nombre pasado como parámetro.

El proceso en tddp espera 4 segundos para que aparezca el archivo, una vez aparece, lo carga en un interprete Lua inicializado anteriormente, y llama a la función config_test() enviándole como argumentos el nombre de archivo de configuración junto con la dirección remota.
Al ser config_test() proporcionado por el archivo que se descargó desde la máquina remota, nos da la opción de realizar una ejecución remota en el intérprete. Pudiendo ser explotada utilizando el método os.execute de Lua con el que podremos ejecuta comandos bash.
Al ejecutarse tddp como root tendremos permiso de administrador.

Para llevar este proceso a cabo es necesario estar conectado en la misma red, ya que las reglas de firewall por defecto bloquean el acceso a la WAN, aunque una vez explotado es posible dejar un backdoor que de acceso remoto en el futuro.

SISTEMAS AFECTADOS

TP-Link SR20

SOLUCIÓN

Matthew Garret, investigador de Google, fue quien encontró el fallo, y en su cuenta de Twitter explica que reportó el error a la empresa TP-Link, pero al no obtener respuesta decidió hacerlo público 90 días después de dicho reporte.

FUENTE

https://hispasec.com/