25 vulnerabilidades en RTOS Zephyr, incluidas las explotadas a través del paquete ICMP

Investigadores del Grupo NCC publicado resultados gratuitos de la auditoría del proyecto Zephyr, desarrollando un sistema operativo en tiempo real (RTOS), destinado a equipar dispositivos que cumplan con el concepto de Internet de las Cosas (IoT, Internet of Things). Durante la auditoría se reveló 25 vulnerabilidades en Zephyr y 1 vulnerabilidad en MCUboot. Zephyr se está desarrollando con la participación de empresas Intel.

En total, se identificaron 6 vulnerabilidades en la pila de red, 4 en el kernel, 2 en el shell de comandos, 5 en los controladores de llamadas del sistema, 5 en el subsistema USB y 3 en el mecanismo de actualización del firmware. Dos cuestiones se consideran críticas, dos son altas, nueve son moderadas, nueve son bajas y cuatro son para consideración. Los problemas críticos afectan la pila IPv9 y el analizador MQTT, los peligrosos afectan el almacenamiento masivo USB y los controladores USB DFU. En el momento de la divulgación de la información, solo se habían preparado correcciones para 9 de las vulnerabilidades más peligrosas; los problemas que conducen a la denegación de servicio o asociados con fallas en mecanismos adicionales de protección del kernel siguen sin corregirse.

Se ha identificado una vulnerabilidad explotable de forma remota en la pila IPv4 de la plataforma, que provoca daños en la memoria al procesar paquetes ICMP modificados de cierta manera. Se encontró otro problema grave en el analizador del protocolo MQTT, que se debe a una falta de verificación adecuada de la longitud del campo del encabezado y puede provocar la ejecución remota de código. Se encuentran problemas de denegación de servicio menos graves en la pila IPv6 y la implementación del protocolo CoAP.

Se pueden explotar otros problemas localmente para provocar una denegación de servicio o ejecutar código a nivel del kernel. La mayoría de estas vulnerabilidades están relacionadas con la falta de comprobaciones adecuadas de los argumentos de las llamadas al sistema y pueden provocar que se escriban y lean áreas arbitrarias de la memoria del kernel. Los problemas también se extienden al código de procesamiento de llamadas del sistema en sí: llamar a un número de llamada del sistema negativo da como resultado un desbordamiento de enteros. El kernel también identificó problemas en la implementación de la protección ASLR (aleatorización del espacio de direcciones) y el mecanismo para establecer marcas canary en la pila, lo que hace que estos mecanismos sean ineficaces.

Muchos problemas afectan la pila USB y los controladores individuales. Por ejemplo, los problemas en el almacenamiento masivo USB pueden provocar un desbordamiento del búfer y ejecutar código a nivel del kernel cuando el dispositivo está conectado a un host USB controlado por el atacante. Una vulnerabilidad en USB DFU, un controlador para cargar nuevo firmware a través de USB, le permite cargar una imagen de firmware modificada en la memoria Flash interna del microcontrolador sin utilizar cifrado y sin pasar por el modo de arranque seguro con verificación de componentes mediante una firma digital. Además, se estudió el código abierto del gestor de arranque. arranque MCU, en el que se encontró una vulnerabilidad benigna,
lo que puede provocar un desbordamiento del búfer cuando se utiliza el protocolo SMP (Protocolo de administración simple) a través de UART.

Recuerde que en Zephyr, solo se proporciona un espacio de direcciones virtuales compartido global (SASOS, sistema operativo de espacio de direcciones único) para todos los procesos. El código específico de la aplicación se combina con un kernel específico de la aplicación para formar un ejecutable monolítico que se puede cargar y ejecutar en un hardware específico. Todos los recursos del sistema se determinan en el momento de la compilación, lo que reduce el tamaño del código y aumenta el rendimiento. La imagen del sistema puede incluir sólo aquellas características del kernel necesarias para ejecutar la aplicación.

Cabe destacar que entre las ventajas clave de Zephyr. mencionado desarrollo pensando en la seguridad. Esta aprobadoque todas las etapas de desarrollo pasen por etapas obligatorias para confirmar la seguridad del código: pruebas de fuzzing, análisis estático, pruebas de penetración, revisión del código, análisis de implementación de puertas traseras y modelado de amenazas.

Fuente: opennet.ru

Añadir un comentario