25 sårbarheter i RTOS Zephyr, inklusive de som utnyttjas via ICMP-paket

Forskare från NCC Group publicerat kostnadsfria projektrevisionsresultat Zephyr, utvecklande ett realtidsoperativsystem (RTOS), som syftar till att utrusta enheter som överensstämmer med Internet of Things-konceptet (IoT, Internet of Things). Under revisionen avslöjades det 25 sårbarheter i Zephyr och 1 sårbarhet i MCUboot. Zephyr utvecklas med deltagande av Intel-företag.

Totalt identifierades 6 sårbarheter i nätverksstacken, 4 i kärnan, 2 i kommandoskalet, 5 i systemanropshanterare, 5 i USB-undersystemet och 3 i uppdateringsmekanismen för firmware. Två frågor bedöms som kritiska, två är höga, 9 är måttliga, 9 är låga och 4 är för övervägande. Kritiska problem påverkar IPv4-stacken och MQTT-parsern, farliga påverkar USB-masslagringen och USB DFU-drivrutinerna. Vid tidpunkten för avslöjandet av informationen hade korrigeringar endast förberetts för de 15 farligaste sårbarheterna; problem som leder till överbelastning eller förknippade med brister i ytterligare kärnskyddsmekanismer förblir okorrigerade.

En sårbarhet som kan exploateras på distans har identifierats i plattformens IPv4-stack, vilket leder till minneskorruption vid bearbetning av ICMP-paket modifierade på ett visst sätt. Ett annat allvarligt problem hittades i MQTT-protokollparsern, som orsakas av en brist på korrekt kontroll av längd på rubrikfält och kan leda till fjärrexekvering av kod. Mindre allvarliga överbelastningsproblem finns i IPv6-stacken och implementeringen av CoAP-protokollet.

Andra problem kan utnyttjas lokalt för att orsaka en denial of service eller exekvera kod på kärnnivå. De flesta av dessa sårbarheter är relaterade till bristen på korrekta kontroller av systemanropsargument och kan leda till att godtyckliga områden i kärnminnet skrivs till och läses från. Problemen sträcker sig också till själva systemanropsbehandlingskoden - att ringa ett negativt systemanropsnummer resulterar i ett heltalsspill. Kärnan identifierade också problem i implementeringen av ASLR-skydd (randomisering av adressutrymme) och mekanismen för att sätta kanariefågelmärken på stacken, vilket gör dessa mekanismer ineffektiva.

Många problem påverkar USB-stacken och enskilda drivrutiner. Till exempel kan problem i USB-masslagring orsaka ett buffertspill och exekvera kod på kärnnivå när enheten är ansluten till en USB-värd som kontrolleras av angriparen. En sårbarhet i USB DFU, en drivrutin för att ladda ny firmware via USB, gör att du kan ladda en modifierad firmware-bild i mikrokontrollerns interna Flash utan att använda kryptering och kringgå det säkra startläget med verifiering av komponenter med en digital signatur. Dessutom studerades den öppna bootloader-koden MCUboot, där en godartad sårbarhet hittades,
vilket kan leda till ett buffertspill när man använder SMP-protokollet (Simple Management Protocol) över UART.

Kom ihåg att i Zephyr tillhandahålls endast ett globalt delat virtuellt adressutrymme (SASOS, Single Address Space Operating System) för alla processer. Applikationsspecifik kod kombineras med en applikationsspecifik kärna för att bilda en monolitisk körbar fil som kan laddas och köras på specifik hårdvara. Alla systemresurser bestäms vid kompilering, vilket minskar kodstorleken och ökar prestandan. Systemavbildningen kan endast innehålla de kärnfunktioner som krävs för att köra programmet.

Det är anmärkningsvärt att bland de viktigaste fördelarna med Zephyr nämnts utveckling med säkerhet i åtanke. Godkändatt alla utvecklingsstadier genomgår obligatoriska stadier för att bekräfta kodens säkerhet: fuzzing-testning, statisk analys, penetrationstestning, kodgranskning, analys av bakdörrsimplementering och hotmodellering.

Källa: opennet.ru

Lägg en kommentar