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.
Es 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.
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.
Más información
·
dreamwidth.org https://mjg59.dreamwidth.org/51672.html
Fuente:
Hispasec