Výzkumníci ze společnosti NCC Group výsledky auditu otevřeného projektu , operační systém reálného času (RTOS), zaměřený na vybavení zařízení, která odpovídají konceptu „Internet věcí“ (IoT, Internet of Things). Během auditu bylo zjištěno v Zephyr a 1 zranitelnost v MCUboot. Vývoj Zephyr probíhá za účasti společností Intel.
Celkově bylo odhaleno 6 zranitelností v síťovém zásobníku, 4 v jádře, 2 v příkazovém řádku, 5 v některých systémech zpracování systémových volání, 5 v subsystému USB a 3 v mechanismu aktualizace firmwaru. Dvě zjištěné problémy byly klasifikovány jako kritické, dvě jako vysoké, 9 jako střední, 9 jako nízké a 4 jako vyžadující pozornost. Kritické problémy se týkají zásobníku IPv4 a parseru MQTT, nebezpečné pak jsou ovladače USB mass storage a USB DFU. V době zveřejnění byly opravy připraveny pouze pro 15 nejnebezpečnějších zranitelností, zbývající problémy, které vedou k odmítnutí služby, nebo jsou spojeny s nedostatky v mechanismech dodatečné ochrany jádra, zůstávají neopraveny.
Ve zásobníku IPv4 platformy byla odhalena vzdáleně exploitovatelná zranitelnost, která vede k poškození paměti při zpracování určitým způsobem modifikovaných ICMP paketů. Další závažný problém byl nalezen v parseru protokolu MQTT, který je způsoben nedostatečnou kontrolou délky polí v hlavičce a může vést k vzdálenému spuštění kódu. Méně nebezpečné problémy, které vedou k odmítnutí služby, byly nalezeny v zásobníku IPv6 a v implementaci protokolu CoAP.
Ostatní problémy mohou být exploits lokálně k vyvolání odmítnutí služby nebo k vykonání kódu na úrovni jádra. Většina z těchto zranitelností souvisí s nedostatečnými kontrolami argumentů systémových volání a může vést k zapisování a čtení libovolných oblastí paměti jádra. Problémy se týkají i samotného kódu zpracování systémových volání — volání s negativním číslem systémového volání vede k celkovému přetečení. V jádře byly rovněž odhaleny problémy v implementaci ochrany ASLR (náhodné rozložení adresového prostoru) a mechanismu nastavení „kanárkových“ značek na zásobníku, což činí tyto mechanismy neefektivními.
Mnoho problémů se týká USB stacku a jednotlivých ovladačů. Například problém v USB mass storage umožňuje způsobit přetečení zásobníku a vykonat kód na úrovni jádra při připojení zařízení k USB hostu, který je pod kontrolou útočníka. Zranitelnost v USB DFU, ovladači pro nahrávání nového firmwaru přes USB, umožňuje nahrát modifikovaný obraz firmwaru do vnitřní Flash mikrocontrolleru bez použití šifrování a obejít režim zabezpečeného zavádění s kontrolou komponentů pomocí digitálního podpisu. Dále byl zkoumán kód otevřeného zaváděče. , ve kterém byla nalezena jedna nezávažná zranitelnost,
která může vést k přetečení zásobníku při použití protokolu SMP (Simple Management Protocol) přes UART.
Připomínáme, že v Zephyru mají všechny procesy k dispozici pouze jednu globální sdílenou virtuální adresní prostor (SASOS, Single Address Space Operating System). Specifický pro aplikace kód se kombinuje s jádrem přizpůsobeným pro konkrétní použití a vytváří monolitický spustitelný soubor pro nahrání a spuštění na konkrétním hardwaru. Všechny systémové zdroje jsou definovány během kompilace, což zmenšuje velikost kódu a zvyšuje výkon. Do systémového obrazu mohou být zahrnuty pouze ty možnosti jádra, které jsou potřeba k provedení aplikace.
Je pozoruhodné, že mezi klíčovými výhodami Zephyru vývoj s ohledem na bezpečnost. , že všechny fáze vývoje procházejí povinnými fázemi potvrzení bezpečnosti kódu: fuzzing testing, statická analýza, zkoušky zatížení, revize kódu, analýza implantace backdoorů a modelování hrozeb.
Zdroj: opennet.ru
