Fallos en los servidores ASU de OpenWrt permiten distribuir imágenes modificadas
Hace poco se dieron a conocer los detalles sobre las vulnerabilidades en las instancias de ASU (Attended SysUpgrade) de OpenWrt. Las vulnerabilidades detectadas permiten a los atacantes comprometer artefactos de compilación distribuidos a través de los servidores sysupgrade.openwrt.org o servidores ASU de terceros, facilitando la instalación de firmware malicioso en los dispositivos de las víctimas.
El servicio ASU es una herramienta crítica que permite a los usuarios de OpenWrt generar actualizaciones de firmware adaptadas a sus sistemas sin perder configuraciones ni paquetes instalados. Los usuarios pueden realizar estas actualizaciones mediante una interfaz web o una herramienta de línea de comandos, lo que hace que el proceso sea accesible y eficiente. Sin embargo, esta accesibilidad también introduce riesgos, ya que la ausencia de mecanismos de autenticación en las solicitudes al servidor deja abierta una puerta para que atacantes exploten el sistema.
El componente vulnerable, el ASU Server, se encarga de gestionar las solicitudes, iniciar el proceso de ensamblaje automático de imágenes mediante ImageBuilder, y almacenar estas imágenes en un caché para su reutilización. El uso del caché, aunque eficiente, es la clave del problema, ya que no se verifica la integridad ni el origen de las imágenes almacenadas.
El ataque aprovecha la funcionalidad central del servicio ASU, que permite a los usuarios generar imágenes de firmware personalizadas mediante solicitudes enviadas sin autenticación. Un atacante puede manipular estas solicitudes, introduciendo una lista de paquetes especialmente diseñada para reemplazar las imágenes legítimas solicitadas por otros usuarios con versiones maliciosas generadas previamente. Esto es posible debido a cómo el servidor ASU administra el proceso de generación y el caché de imágenes.
¿Cómo funciona el ataque?
- El atacante envía una solicitud al servidor ASU, lo cual no requiere autenticación.
- Manipula la lista de paquetes para insertar imágenes maliciosas ya generadas en el sistema.
- Cuando otro usuario realiza una solicitud legítima para una imagen similar, el servidor, en lugar de generar una nueva imagen, entrega la versión maliciosa desde su caché.
Sobre el ataque se menciona que se facilitó gracias a un cambio realizado el 8 de julio y fue solucionado el 4 de diciembre. Para mitigar el impacto y asegurar el servicio ASU, OpenWrt utilizó servidores separados, aislados de los sistemas principales del proyecto, sin acceso a recursos confidenciales como claves SSH y certificados utilizados para firmar digitalmente las imágenes.
El ataque fue posible gracias a dos vulnerabilidades :
- Vulnerabilidad en el controlador de solicitudes build_reques.py: la cual permitía que un atacante sustituyera los comandos del proceso de compilación al pasar nombres de paquetes con un formato especial. La falta de verificación adecuada de los caracteres especiales en los nombres de los paquetes antes de utilizarlos como argumentos para la utilidad make permitió a los atacantes insertar comandos maliciosos durante el proceso de creación de imágenes de firmware. Como resultado, un atacante podría generar imágenes maliciosas en el servidor, firmadas con la clave de ensamblaje correcta.
- Vulnerabilidad en la biblioteca util.py relacionada con el hash SHA-256: En este caso, los hashes SHA-256 que se utilizan para verificar las imágenes de firmware listas en el caché se redujeron a solo 12 caracteres, lo que hizo que el nivel de entropía fuera significativamente bajo. Esta reducción permitió que un atacante pudiera utilizar técnicas de selección de colisiones para generar una imagen maliciosa cuyo hash coincidiera legítimamente con el de una imagen válida. Esto, combinado con la vulnerabilidad de Imagebuilder, permitió al atacante «contaminar» la caché del servidor ASU y devolver imágenes maliciosas a los usuarios normales que realizaban solicitudes legítimas.
Finalmente, se menciona que, aunque los desarrolladores de OpenWrt consideran que la probabilidad de que estas vulnerabilidades se hayan explotado de manera efectiva es cercana a cero, se recomiendan que los usuarios de ASU reemplacen el firmware de OpenWrt en sus dispositivos con la misma versión, como medida de precaución.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.