
Vulnerabilidad de verificación del servidor de actualización de firmware en Buffalo LS210D versión 1.78-0.03
Christopher J. Pace y Ryan Miller
El Buffalo LS210D es un servidor de almacenamiento conectado a la red (NAS) diseñado y comercializado para pequeñas empresas y particulares. Dentro del LS210D existe la capacidad de descargar e instalar remotamente una actualización de firmware. El LS210D es vulnerable a un ataque de "Adversario en el Medio", o AitM, dentro de esta función. Un atacante que controle la conexión ascendente de una víctima podrá proporcionar un nombre DNS incorrecto para el servidor de actualización, o redirigir el tráfico del servidor de actualización a un servidor malicioso. Esto puede conducir a la ejecución de comandos como usuario root, o a la instalación directa de malware.
El archivo /etc/init.d/update_notifications.sh se invoca desde el script del lado del servidor de actualización de firmware en /www/buffalo/www/dynamic/system/update/BufUpdate.pm. Dentro de update_notifications.sh se encuentra la siguiente línea:

Al abrir este archivo xml se revela que el propio archivo XML también apunta a una conexión solo HTTP:

Además, este archivo zip tampoco está cifrado. Investigaciones anteriores sobre este modelo nos llevaron a descargar una utilidad manual de actualización de firmware, que sí incluía un archivo zip protegido con contraseña. El archivo linkstation_series_1.75-0.01.zip no contiene estas protecciones. Dentro del archivo se encuentra el archivo hddrootfs.buffalo.updated, que contiene el archivo hddrootfs.buffalo, que a su vez contiene el sistema de archivos raíz del LS120D. Un atacante puede ver y modificar directamente este archivo zip para incluir su propio malware o leer archivos sensibles.

Una vez que un atacante ha realizado un ataque AitM, el router ofrecerá gustosamente instalar el firmware actualizado. Aquí hay un ejemplo de dicho ataque, con la pantalla de la derecha mostrando las modificaciones necesarias en fw_info2.xml, concretamente añadiendo 0x0000001D a la etiqueta productId, e incrementando la etiqueta del tipo de versión a una versión superior a la del firmware de la víctima (1.78-0.04 en este caso).

