25 zranitelností v RTOS Zephyr, včetně těch, které jsou zneužity prostřednictvím paketu ICMP

Výzkumníci z NCC Group publikováno bezplatné výsledky projektového auditu Vánek, rozvíjející se operační systém v reálném čase (RTOS), zaměřený na vybavení zařízení vyhovujících konceptu internetu věcí (IoT, Internet of Things). Při auditu to vyšlo najevo 25 zranitelností v Zephyru a 1 zranitelnost v MCUboot. Zephyr je vyvíjen za účasti společností Intel.

Celkem bylo identifikováno 6 zranitelností v síťovém zásobníku, 4 v jádře, 2 v příkazovém prostředí, 5 v obslužných programech systémových volání, 5 v subsystému USB a 3 v mechanismu aktualizace firmwaru. Dva problémy jsou hodnoceny jako kritické, dva jsou vysoké, 9 středních, 9 nízkých a 4 jsou ke zvážení. Kritické problémy ovlivňují zásobník IPv4 a analyzátor MQTT, nebezpečné problémy ovlivňují velkokapacitní paměťové zařízení USB a ovladače USB DFU. V době zveřejnění informací byly připraveny opravy pouze pro 15 nejnebezpečnějších zranitelností; problémy vedoucí k odmítnutí služby nebo spojené s chybami v dalších mechanismech ochrany jádra zůstávají neopraveny.

V zásobníku IPv4 platformy byla identifikována vzdáleně zneužitelná zranitelnost, která vede k poškození paměti při zpracování paketů ICMP upravených určitým způsobem. Další vážný problém byl nalezen v analyzátoru protokolu MQTT, který je způsoben nedostatečnou kontrolou délky pole záhlaví a může vést ke vzdálenému spuštění kódu. Méně závažné problémy s odmítnutím služby se nacházejí v zásobníku IPv6 a implementaci protokolu CoAP.

Další problémy lze zneužít lokálně k odmítnutí služby nebo spuštění kódu na úrovni jádra. Většina těchto zranitelností souvisí s nedostatkem řádných kontrol argumentů systémových volání a může vést k zápisu a čtení z libovolných oblastí paměti jádra. Problémy se také týkají samotného kódu zpracování systémového volání – volání záporného čísla systémového volání má za následek přetečení celého čísla. Jádro také identifikovalo problémy v implementaci ochrany ASLR (randomizace adresního prostoru) a mechanismu pro nastavování kanárských značek na zásobníku, díky čemuž jsou tyto mechanismy neúčinné.

Mnoho problémů ovlivňuje zásobník USB a jednotlivé ovladače. Například problémy s velkokapacitním úložištěm USB mohou způsobit přetečení vyrovnávací paměti a spuštění kódu na úrovni jádra, když je zařízení připojeno k hostiteli USB ovládanému útočníkem. Zranitelnost v USB DFU, ovladači pro načítání nového firmwaru přes USB, umožňuje načíst upravený image firmwaru do interní paměti Flash mikrokontroléru bez použití šifrování a obcházení režimu bezpečného spouštění s ověřováním komponent pomocí digitálního podpisu. Kromě toho byl studován kód otevřeného zavaděče MCUboot, ve kterém byla nalezena jedna benigní zranitelnost,
což může vést k přetečení vyrovnávací paměti při použití protokolu SMP (Simple Management Protocol) přes UART.

Připomeňme, že v Zephyru je pro všechny procesy poskytován pouze jeden globální sdílený virtuální adresní prostor (SASOS, Single Address Space Operating System). Kód specifický pro aplikaci je kombinován s jádrem specifickým pro aplikaci a vytváří monolitický spustitelný soubor, který lze načíst a spustit na konkrétním hardwaru. Všechny systémové prostředky jsou určeny v době kompilace, což snižuje velikost kódu a zvyšuje výkon. Obraz systému může obsahovat pouze ty funkce jádra, které jsou nutné ke spuštění aplikace.

Je pozoruhodné, že mezi klíčové výhody Zephyr zmínil vývoj s ohledem na bezpečnost. Schválenýže všechny fáze vývoje procházejí povinnými fázemi potvrzení bezpečnosti kódu: fuzzing testování, statická analýza, penetrační testování, kontrola kódu, analýza implementace zadních vrátek a modelování hrozeb.

Zdroj: opennet.ru

Přidat komentář