Výzkumníci z NCC Group
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
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
Zdroj: opennet.ru