Даследчыкі з кампаніі NCC Group
У суме было выяўлена 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 дазваляюць выклікаць перапаўненне буфера і выканаць код на ўзроўні ядра пры падлучэнні прылады да падкантрольнага атакавалага USB-хасту. Уразлівасць у USB DFU, драйверы для загрузкі новай прашыўкі па USB, дазваляе загрузіць мадыфікаваную выяву прашыўкі ва ўнутраны Flash мікракантролера без ужывання шыфравання і абышоўшы рэжым абароненай загрузкі з праверкай кампанентаў па лічбавым подпісе. Дадаткова быў вывучаны код адчыненага загрузніка
якая можа прывесці да перапаўнення буфера пры выкарыстанні пратаколу SMP (Simple Management Protocol) праз UART.
Нагадаем, што ў Zephyr для ўсіх працэсаў падаецца толькі адна глабальная сумесна выкарыстоўваная віртуальная адрасная прастора (SASOS, Single Address Space Operating System). Спецыфічны для прыкладанняў код камбінуецца з адаптаваным пад канкрэтнае ўжыванне ядром і ўтварае маналітны выкананы файл для загрузкі і запуску на пэўным абсталяванні. Усе сістэмныя рэсурсы вызначаюцца на этапе кампіляцыі, што скарачае памер кода і павялічвае прадукцыйнасць. У сістэмную выяву могуць уключацца толькі тыя магчымасці ядра, якія патрабуюцца для выканання прыкладання.
Характэрна, што сярод ключавых добрых якасцяў Zephyr
Крыніца: opennet.ru