En el kit de herramientas ASU (Attended SysUpgrade) desarrollado por el proyecto OpenWrt se han identificado vulnerabilidades críticas (CVE-2024-54143), que permiten comprometer artefactos de ensamblaje distribuidos a través del servicio sysupgrade.openwrt.org o servidores ASU de terceros, y lograr la instalación de imágenes de firmware modificadas por un atacante en los sistemas de los usuarios utilizando el modo de “actualización asistida” para actualizar el firmware a través de la interfaz web selector.openwrt.org o la herramienta de línea de comando atendida.sysupgrade.
Para llevar a cabo un ataque con éxito, un atacante solo necesita enviar una solicitud para generar un ensamblado al servidor ASU (cualquier usuario puede enviar dichas solicitudes sin autenticación). Al manipular una lista de paquetes especialmente diseñada, un atacante puede organizar el envío de imágenes maliciosas generadas previamente en respuesta a solicitudes de compilación legítimas de otros usuarios.
El servicio ASU se utiliza en OpenWrt para generar e instalar actualizaciones de firmware sin perder la configuración existente ni los paquetes instalados por el usuario. A través de una interfaz web o herramienta de línea de comandos, el usuario envía una solicitud para generar una imagen de firmware actualizada, indicando los paquetes instalados en su sistema. Después de un tiempo, el servidor de ASU genera una imagen correspondiente al contenido solicitado, después de lo cual el usuario la descarga y la actualiza en su dispositivo. Además, se proporciona una opción que le permite guardar la configuración existente en el firmware actualizado.
ASU Server es responsable de procesar las solicitudes de los usuarios, que inicia el ensamblaje automático de imágenes de firmware utilizando el kit de herramientas ImageBuilder y también mantiene un caché de ensamblajes preparados previamente. Si el usuario solicita una imagen que se ha ensamblado previamente en el servidor y permanece actualizada, el sistema devuelve inmediatamente la imagen existente del caché sin iniciar el proceso de ensamblaje.
El comportamiento del ataque fue posible debido a dos vulnerabilidades:
- Una vulnerabilidad en el controlador de solicitudes build_reques.py del kit de herramientas Imagebuilder, que permite la sustitución de los propios comandos en el proceso de compilación a través del usuario pasando nombres de paquetes con formato especial. La vulnerabilidad se debe a la falta de verificación adecuada de los caracteres especiales en los nombres de los paquetes antes de usarlos como argumentos para la utilidad make. Aprovechando esta vulnerabilidad, un atacante puede crear imágenes de firmware maliciosas en el servidor firmadas con la clave de ensamblaje correcta.
- Una vulnerabilidad en la biblioteca util.py causada por el hecho de que los hashes SHA-256, utilizados para verificar la presencia de imágenes de firmware listas para usar en el caché, se redujeron a 12 caracteres, lo que redujo significativamente el nivel de entropía e hizo posible , mediante selección de colisiones, para formar una imagen maliciosa cuyo hash coincide de forma legítima. Combinado con una vulnerabilidad en Imagebuilder, un atacante podría utilizar un problema con los hashes para "contaminar" la caché del servidor ASU y colocar en ella imágenes maliciosas que se devuelven a las solicitudes de los usuarios normales.
El cambio, que permitió llevar a cabo un ataque, se realizó el 8 de julio. El problema se solucionó el 4 de diciembre. Para garantizar el funcionamiento del servicio ASU, se utilizaron servidores separados que no se cruzan con los principales sistemas de ensamblaje del proyecto, separados de OpenWrt Buildbot y sin acceso a recursos tan confidenciales como claves SSH y certificados para generar firmas digitales.
Se alega que los desarrolladores de OpenWrt no encontraron ningún rastro de compromiso de la infraestructura del proyecto, pero para estar seguros, reinstalaron los sistemas en los que se ejecutaban los componentes vulnerables desde cero. El problema no afectó a las imágenes oficiales distribuidas a través del sitio web downloads.openwrt.org y al analizar los registros de ensamblaje no se encontraron rastros de solicitudes maliciosas. Al mismo tiempo, dado que los servidores de ASU limpian automáticamente los ensamblajes con más de 7 días, resultó imposible auditar los ensamblajes antiguos.
Los representantes de OpenWrt consideran que la probabilidad de utilizar las vulnerabilidades identificadas en la práctica para difundir imágenes maliciosas a través de la infraestructura OpenWrt es cercana a cero; sin embargo, se recomienda a los usuarios de ASU que reemplacen el firmware OpenWrt en sus dispositivos con la misma versión.
Fuente: opennet.ru