RTOS Zephyr жүйесіндегі 25 осалдық, соның ішінде ICMP пакеті арқылы пайдаланылған

NCC Group зерттеушілері жарияланған тегін жоба аудитінің нәтижелері Zephyr, дамуда Заттар интернеті (IoT, Интернет заттары) концепциясына сәйкес келетін құрылғыларды жабдықтауға бағытталған нақты уақыттағы операциялық жүйе (RTOS). Тексеріс барысында ол анықталды 25 осалдық Zephyr жүйесінде және MCUboot жүйесінде 1 осалдық. Zephyr Intel компанияларының қатысуымен әзірленуде.

Барлығы желі стекінде 6, ядрода 4, пәрмен қабығында 2, жүйелік қоңырауларды өңдеушілерде 5, USB ішкі жүйесінде 5 және микробағдарламаны жаңарту механизмінде 3 осалдық анықталды. Екі мәселе сыни, екеуі жоғары, 9-ы орташа, 9-ы төмен, 4-і қарауға арналған. Маңызды мәселелер IPv4 стекіне және MQTT талдаушысына әсер етеді, қауіптілері USB жадына және USB DFU драйверлеріне әсер етеді. Ақпаратты ашу кезінде ең қауіпті 15 осалдық үшін ғана түзетулер дайындалды; қызмет көрсетуден бас тартуға әкелетін немесе ядроны қорғаудың қосымша механизмдеріндегі кемшіліктермен байланысты мәселелер түзетілмеген күйінде қалды.

Платформаның IPv4 стекінде қашықтан пайдаланылатын осалдық анықталды, ол белгілі бір жолмен өзгертілген ICMP пакеттерін өңдеу кезінде жадтың бұзылуына әкеледі. MQTT протоколының талдаушысында тағы бір маңызды мәселе табылды, ол тақырып өрісінің ұзындығын дұрыс тексерудің болмауынан туындады және кодты қашықтан орындауға әкелуі мүмкін. Қызмет көрсетуден бас тарту мәселелері IPv6 стекінде және CoAP протоколын жүзеге асыруда кездеседі.

Қызметтен бас тарту немесе ядро ​​деңгейінде кодты орындау үшін басқа мәселелер жергілікті түрде пайдаланылуы мүмкін. Бұл осалдықтардың көпшілігі жүйелік шақыру аргументтерінің дұрыс тексерілмеуімен байланысты және ядро ​​жадының еркін аймақтарының жазылуына және одан оқылуына әкелуі мүмкін. Мәселелер жүйелік қоңырауды өңдеу кодының өзіне де таралады — теріс жүйелік қоңырау нөміріне қоңырау шалу бүтін санның асып кетуіне әкеледі. Сондай-ақ ядро ​​ASLR қорғанысын (мекенжай кеңістігін рандомизациялау) және стекке канар белгілерін орнату механизмін жүзеге асырудағы проблемаларды анықтады, бұл механизмдерді тиімсіз етеді.

Көптеген мәселелер USB стекіне және жеке драйверлерге әсер етеді. Мысалы, USB жадындағы ақаулар буфердің толып кетуіне және құрылғы шабуылдаушы басқаратын USB хостына қосылған кезде ядро ​​деңгейінде кодты орындауға әкелуі мүмкін. USB арқылы жаңа микробағдарламаны жүктеуге арналған драйвер USB DFU осалдығы шифрлауды қолданбай және цифрлық қолтаңбаны пайдаланып компоненттерді тексеру арқылы қауіпсіз жүктеу режимін айналып өтпей микроконтроллердің ішкі Flash-ке өзгертілген микробағдарлама кескінін жүктеуге мүмкіндік береді. Сонымен қатар, ашық жүктеуші коды зерттелді MCUboot, онда бір қатерсіз осалдық табылды,
бұл UART арқылы SMP (қарапайым басқару протоколы) протоколын пайдалану кезінде буфердің толып кетуіне әкелуі мүмкін.

Еске салайық, Zephyr-де барлық процестер үшін тек бір ғаламдық ортақ виртуалды мекенжай кеңістігі (SASOS, бірыңғай мекенжай кеңістігі операциялық жүйесі) қамтамасыз етілген. Арнайы қолданбалы код арнайы аппараттық құралда жүктелетін және іске қосылатын монолитті орындалатын файлды құру үшін қолданбаға тән ядромен біріктіріледі. Барлық жүйе ресурстары компиляция уақытында анықталады, код өлшемін азайтады және өнімділікті арттырады. Жүйе кескіні қолданбаны іске қосу үшін қажет ядро ​​мүмкіндіктерін ғана қамтуы мүмкін.

Бір қызығы, Zephyr негізгі артықшылықтарының бірі аталған қауіпсіздікті ескере отырып дамыту. Бекітілгенәзірлеудің барлық кезеңдерінде кодтың қауіпсіздігін растаудың міндетті кезеңдері өтеді: fuzzing тестілеу, статикалық талдау, ену тестілеу, кодты шолу, бэкдорды енгізуді талдау және қауіптерді модельдеу.

Ақпарат көзі: opennet.ru

пікір қалдыру