25 vulnerabilitats a RTOS Zephyr, incloses les explotades mitjançant un paquet ICMP

Investigadors del Grup NCC publicat resultats gratuïts de l'auditoria del projecte Céfiro, desenvolupament un sistema operatiu en temps real (RTOS), destinat a equipar dispositius que compleixin el concepte d'Internet de les coses (IoT, Internet of Things). Durant l'auditoria es va revelar 25 vulnerabilitats a Zephyr i 1 vulnerabilitat a MCUboot. Zephyr s'està desenvolupant amb la participació d'empreses Intel.

En total, es van identificar 6 vulnerabilitats a la pila de xarxa, 4 al nucli, 2 a l'intèrpret d'ordres, 5 als controladors de trucades del sistema, 5 al subsistema USB i 3 al mecanisme d'actualització del microprogramari. Dos problemes es consideren crítics, dos són alts, 9 són moderats, 9 són baixos i 4 són per considerar. Els problemes crítics afecten la pila IPv4 i l'analitzador MQTT, els perillosos afecten l'emmagatzematge massiu USB i els controladors USB DFU. En el moment de la divulgació de la informació, només s'havien preparat solucions per a 15 de les vulnerabilitats més perilloses; els problemes que condueixen a la denegació de servei o associats a defectes en els mecanismes de protecció addicionals del nucli segueixen sense corregir-se.

S'ha identificat una vulnerabilitat explotable de forma remota a la pila IPv4 de la plataforma, que provoca corrupció de la memòria quan es processen paquets ICMP modificats d'una determinada manera. Es va trobar un altre problema greu a l'analitzador de protocols MQTT, que és causat per la manca de comprovació adequada de la longitud del camp de la capçalera i pot provocar l'execució de codi remota. Els problemes de denegació de servei menys greus es troben a la pila IPv6 i la implementació del protocol CoAP.

Altres problemes es poden explotar localment per provocar una denegació de servei o l'execució de codi a nivell del nucli. La majoria d'aquestes vulnerabilitats estan relacionades amb la manca de comprovacions adequades dels arguments de la trucada del sistema i poden provocar que s'escriguin i es llegeixin àrees arbitràries de la memòria del nucli. Els problemes també s'estenen al codi de processament de trucades del sistema en si: trucar a un número de trucada del sistema negatiu provoca un desbordament d'enters. El nucli també va identificar problemes en la implementació de la protecció ASLR (aleatorització de l'espai d'adreces) i el mecanisme per establir marques canàries a la pila, fent que aquests mecanismes siguin ineficaços.

Molts problemes afecten la pila USB i els controladors individuals. Per exemple, els problemes en l'emmagatzematge massiu USB poden provocar un desbordament de memòria intermèdia i executar codi a nivell del nucli quan el dispositiu està connectat a un host USB controlat per l'atacant. Una vulnerabilitat a USB DFU, un controlador per carregar un nou microprogramari a través d'USB, us permet carregar una imatge de microprogramari modificada al flaix intern del microcontrolador sense utilitzar xifratge i obviant el mode d'arrencada segur amb la verificació dels components mitjançant una signatura digital. A més, es va estudiar el codi del carregador d'arrencada obert MCUboot, en què es va trobar una vulnerabilitat benigna,
que pot provocar un desbordament de memòria intermèdia quan s'utilitza el protocol SMP (Simple Management Protocol) a través de l'UART.

Recordeu que a Zephyr, només es proporciona un espai d'adreces virtuals globals compartides (SASOS, sistema operatiu d'espai d'adreces únics) per a tots els processos. El codi específic de l'aplicació es combina amb un nucli específic de l'aplicació per formar un executable monolític que es pot carregar i executar en un maquinari específic. Tots els recursos del sistema es determinen en temps de compilació, reduint la mida del codi i augmentant el rendiment. La imatge del sistema només pot incloure les característiques del nucli que són necessàries per executar l'aplicació.

Cal destacar que entre els avantatges clau de Zephyr esmentat desenvolupament tenint en compte la seguretat. Aprovatque totes les etapes de desenvolupament es sotmeten a etapes obligatòries de confirmació de la seguretat del codi: proves de fuzzing, anàlisi estàtica, proves de penetració, revisió de codi, anàlisi de la implementació de la porta posterior i modelització d'amenaces.

Font: opennet.ru

Afegeix comentari