RTOS Zephyri 25 turvaauku, sealhulgas need, mida kasutatakse ICMP-paketi kaudu

NCC Groupi teadlased avaldatud tasuta projektiauditi tulemused Sefiir, arenev reaalajas operatsioonisüsteem (RTOS), mille eesmärk on varustada seadmeid, mis vastavad asjade Interneti kontseptsioonile (IoT, Internet of Things). Auditi käigus selgus 25 haavatavust Zephyris ja 1 haavatavus MCUbootis. Zephyri arendatakse Inteli ettevõtete osalusel.

Kokku tuvastati 6 turvaauku võrgupinus, 4 tuumas, 2 käsu kestas, 5 süsteemikõnede töötlejates, 5 USB alamsüsteemis ja 3 püsivara värskendusmehhanismis. Kaks probleemi on hinnatud kriitiliseks, kaks on kõrged, 9 on mõõdukad, 9 on madalad ja 4 on kaalumisel. Kriitilised probleemid mõjutavad IPv4 pinu ja MQTT parserit, ohtlikud aga USB massmälu ja USB DFU draivereid. Teabe avaldamise ajal olid parandused ette valmistatud ainult 15 kõige ohtlikuma turvaaugu jaoks; probleemid, mis viisid teenuse keelamiseni või on seotud täiendavate tuumakaitsemehhanismide vigadega, jäävad parandamata.

Platvormi IPv4 pinus on tuvastatud eemalt kasutatav haavatavus, mis põhjustab teatud viisil muudetud ICMP-pakettide töötlemisel mälu rikkumist. Teine tõsine probleem leiti MQTT protokolli parseris, mis on põhjustatud päisevälja pikkuse õige kontrolli puudumisest ja võib viia koodi kaugkäitamiseni. Vähem tõsiseid teenuse keelamise probleeme leitakse IPv6 virnas ja CoAP-protokolli rakendamises.

Muid probleeme saab kasutada kohapeal teenuse keelamiseks või koodi käivitamiseks kerneli tasemel. Enamik neist haavatavustest on seotud süsteemikutsete argumentide nõuetekohase kontrolli puudumisega ja võib põhjustada suvaliste tuumamälu piirkondade kirjutamise ja lugemise. Probleemid laienevad ka süsteemikõnede töötlemise koodile endale – negatiivsele süsteemikõne numbrile helistamine põhjustab täisarvu ületäitumise. Tuum tuvastas ka probleemid ASLR-i kaitse (aadressiruumi randomiseerimine) ja pinu kanaari märkide seadmise mehhanismi rakendamisel, muutes need mehhanismid ebatõhusaks.

Paljud probleemid mõjutavad USB-pinu ja üksikuid draivereid. Näiteks võivad USB-massmälu probleemid põhjustada puhvri ületäitumist ja käivitada koodi tuuma tasemel, kui seade on ühendatud ründaja juhitava USB-hostiga. USB DFU, USB kaudu uue püsivara laadimise draiveri, haavatavus võimaldab laadida muudetud püsivara kujutise mikrokontrolleri sisemisse välkmälu ilma krüptimist kasutamata ja turvalist alglaadimisrežiimist mööda hiilides komponentide kontrollimisega digitaalallkirja abil. Lisaks uuriti avatud alglaaduri koodi MCUboot, milles leiti üks healoomuline haavatavus,
mis võib põhjustada puhvri ületäitumist, kui kasutate SMP (Simple Management Protocol) protokolli üle UART.

Tuletage meelde, et Zephyris on kõigi protsesside jaoks ette nähtud ainult üks globaalne jagatud virtuaalne aadressiruum (SASOS, ühe aadressiruumi operatsioonisüsteem). Rakendusespetsiifiline kood kombineeritakse rakendusespetsiifilise tuumaga, et moodustada monoliitne käivitatav fail, mida saab laadida ja konkreetse riistvaraga käivitada. Kõik süsteemiressursid määratakse kompileerimise ajal, vähendades koodi suurust ja suurendades jõudlust. Süsteemi kujutis võib sisaldada ainult neid kerneli funktsioone, mis on vajalikud rakenduse käitamiseks.

Tähelepanuväärne on see, et Zephyri peamiste eeliste hulgas mainitud turvalisust silmas pidades. Kinnitatudet kõik arendusetapid läbivad kohustuslikud koodi turvalisuse kinnitamise etapid: fuzzing testimine, staatiline analüüs, läbitungimise testimine, koodi ülevaatus, tagaukse juurutamise analüüs ja ohu modelleerimine.

Allikas: opennet.ru

Lisa kommentaar