Investigadores do Grupo NCC
En total, identificáronse 6 vulnerabilidades na pila de rede, 4 no núcleo, 2 no shell de comandos, 5 nos controladores de chamadas do sistema, 5 no subsistema USB e 3 no mecanismo de actualización de firmware. Dous problemas son considerados críticos, dous son altos, 9 son moderados, 9 son baixos e 4 son para consideración. Os problemas críticos afectan á pila IPv4 e ao analizador MQTT, os perigosos afectan ao almacenamento masivo USB e aos controladores USB DFU. No momento da divulgación da información, só se prepararon correccións para 15 das vulnerabilidades máis perigosas; os problemas que levaban á denegación de servizo ou asociados a fallos nos mecanismos adicionais de protección do núcleo seguen sen corrixirse.
Identificouse unha vulnerabilidade explotable de forma remota na pila IPv4 da plataforma, que leva á corrupción da memoria ao procesar paquetes ICMP modificados de determinada maneira. Atopouse outro problema grave no analizador do protocolo MQTT, que é causado pola falta de comprobación adecuada da lonxitude do campo de cabeceira e pode levar á execución remota de código. Atópanse problemas de denegación de servizo menos graves na pila IPv6 e na implementación do protocolo CoAP.
Outros problemas poden ser explotados localmente para causar unha denegación de servizo ou executar código a nivel do núcleo. A maioría destas vulnerabilidades están relacionadas coa falta de comprobacións adecuadas dos argumentos das chamadas do sistema, e poden levar a que se escriban e lean áreas arbitrarias da memoria do núcleo. Os problemas tamén se estenden ao propio código de procesamento de chamadas do sistema: chamar a un número de chamada do sistema negativo provoca un desbordamento de números enteiros. O núcleo tamén identificou problemas na implementación da protección ASLR (aleatorización do espazo de enderezos) e no mecanismo para establecer marcas canarias na pila, facendo que estes mecanismos sexan ineficaces.
Moitos problemas afectan á pila USB e aos controladores individuais. Por exemplo, os problemas no almacenamento masivo USB poden provocar un desbordamento do búfer e executar código a nivel do núcleo cando o dispositivo está conectado a un host USB controlado polo atacante. Unha vulnerabilidade en USB DFU, un controlador para cargar firmware novo a través de USB, permítelle cargar unha imaxe de firmware modificada no Flash interno do microcontrolador sen usar o cifrado e ignorando o modo de arranque seguro coa verificación dos compoñentes mediante unha sinatura dixital. Ademais, estudouse o código do cargador de arranque aberto
o que pode provocar un desbordamento do búfer ao utilizar o protocolo SMP (Simple Management Protocol) sobre o UART.
Lembre que en Zephyr, só se proporciona un espazo de enderezos virtuais compartido global (SASOS, Single Address Space Operating System) para todos os procesos. O código específico da aplicación combínase cun núcleo específico da aplicación para formar un executable monolítico que se pode cargar e executar en hardware específico. Todos os recursos do sistema determínanse no momento da compilación, reducindo o tamaño do código e aumentando o rendemento. A imaxe do sistema pode incluír só as funcións do núcleo que son necesarias para executar a aplicación.
Cabe destacar que entre as principais vantaxes de Zephyr
Fonte: opennet.ru