Изследователи от NCC Group резултати от одит на свободен проект , операционна система в реално време (RTOS), насочена към оборудване на устройства, съответстващи на концепцията за „Интернет на нещата“ (IoT, Internet of Things). По време на одита бяха открити в Zephyr и 1 уязвимост в MCUboot. Разработката на Zephyr се осъществява с участието на компании като Intel.
Общо бяха открити 6 уязвимости в мрежовия стек, 4 в ядрото, 2 в командния интерпретатор, 5 в обработчиците на системни повиквания, 5 в подсистемата USB и 3 в механизма за актуализиране на фърмуера. На две от проблемите е присвоен критичен ниво на опасност, на две – високо, 9 – умерено, 9 – ниско и 4 – за внасяне в разглеждане. Критираните проблеми засягат стека IPv4 и парсера MQTT, докато опасните – драйверите на USB mass storage и USB DFU. По време на разкритията, корекции бяха подготвени само за 15 от най-опасните уязвимости, а проблемите, водещи до отказ на обслужване или свързани с недостатъци в механизмите на допълнителна защита на ядрото, остават неотстранени.
В IPv4 стека на платформата е открита уязвимост, която може да бъде експлоатирана дистанционно, водеща до повреда на паметта при обработка на определено модифицирани ICMP пакети. Друга сериозна проблема е открита в парсера на протокола MQTT, която произтича от липсата на подходяща проверка на дължината на полетата в заглавката и може да доведе до дистанционно изпълнение на код. По-малко опасни проблеми, водещи до отказ на обслужване, са открити в IPv6 стека и реализацията на протокола CoAP.
Останалите проблеми могат да бъдат експлоатирани локално за причиняване на отказ на обслужване или изпълнение на код на ниво ядро. По-голямата част от тези уязвимости са свързани с липсата на подходящи проверки на аргументите на системните повиквания и могат да доведат до запис и четене на произволни области от паметта на ядрото. Проблемите обхващат и самия код за обработка на системните повиквания – извикването с отрицателен номер води до цялочислено препълване. В ядрото също са открити проблеми в реализирането на защита ASLR (разпределение на адресното пространство) и механизма за задаване на канарени метки в стека, правещи тези механизми неефективни.
Много проблем засягат USB стек и отделни драйвери. Например, проблемата с USB mass storage позволява да се предизвика overflow и да се изпълни код на ниво ядро при свързването на устройството към контролирания от атакуващия USB хост. Уязвимостта в USB DFU, драйвера за зареждане на нов фърмуер през USB, позволява да се зареди модифициран образ на фърмуера во вътрешната Flash микроконтролера без прилагане на криптиране и заобикаляйки режима на защитено зареждане с проверка на компонентите по цифрова подпис. Допълнително бе проучен кодът на отворения зареждач , в който беше намерена една неопасна уязвимост,
която може да доведе до overflow при използването на протокола SMP (Simple Management Protocol) през UART.
Напомняме, че в Zephyr за всички процеси се предоставя само едно глобално споделено виртуално адресно пространство (SASOS, Single Address Space Operating System). Специфичният за приложения код се комбинира с адаптирано под конкретно приложение ядро и образува монолитен изпълним файл за зареждане и стартиране на определено оборудване. Всички системни ресурси се определят на етапа на компилиране, което намалява размера на кода и увеличава производителността. В системния образ могат да бъдат включени само тези възможности на ядрото, които са необходими за изпълнение на приложението.
Забележително е, че сред ключовите предимства на Zephyr разработката с оглед на безопасността. , че всички етапи на разработката преминават през задължителни етапи на потвърждение на безопасността на кода: fuzzing тестване, статичен анализ, тестове за проникване, рецензиране на кода, анализ на внедряване на backdoors и моделиране на заплахи.
Източник: opennet.ru
