25 zranitelností v RTOS Zephyr, včetně těch, které jsou zneužívány prostřednictvím ICMP paketů

Výzkumníci ze společnosti NCC Group publikovali výsledky auditu otevřeného projektu Zephyr, rozvíjejícího 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 25 zranitelností 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. MCUboot, 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 se uvádí vývoj s ohledem na bezpečnost. Tvrdí se, ž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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster