Uuringud tegi NCC Group avaldatud tulemused avatud projekti auditeerimisest , reaalaegse operatsioonisüsteemi (RTOS) arendamiseks, mille eesmärk on varustada seadmeid, mis vastavad "Asjade Interneti" (IoT, Internet of Things) kontseptsioonile. Auditi käigus avastati Zephyris ja 1 haavatavus MCUbootis. Zephyri arendamisel osaleb mitmeid ettevõtteid, sealhulgas Intel.
Kokku tuvastati 6 haavatavust võrgu lähtekoodis, 4 - tuumas, 2 - käsurea tarkvaras, 5 süsteemi kutsete töötlejatest, 5 USB-alamsüsteemis ja 3 püsivara uuendamise mehhanismis. Kaks probleemi on määratletud kriitilise ohu tasemega, kaks - kõrge ja 9 mõõduka, 9 - madala ning 4 - kaalumiseks. Kriitilised probleemid puudutavad IPv4 stakki ja MQTT parset, ohtlikud - USB mass storage ja USB DFU draivereid. Informatsiooni avaldamise ajal olid parandused valmis ainult 15 kõige ohtlikuma haavatavuse jaoks, veel on lahendamata probleemid, mis viivad teenuse katkestumiseni või on seotud tuuma põhimõtete puudustega.
IPv4 stakis tuvastati kaugtöötlemise haavatavus, mis põhjustab mälu kahjustumise, töötlemisel teatud viisil muudetud ICMP-pakettide puhul. Veel üks tõsine probleem leiti MQTT protokolli parserist, mis tuleneb puudulikust ohutuse valikust ja võib põhjustada kaugtäitmist. Vähem ohtlikud probleemid, mis põhjustavad teenuse katkestumist, leiti IPv6 stakis ja CoAP protokolli rakenduses.
Ülejäänud probleemid võivad olla kohalikult kasutatavad teenuse katkestamiseks või tuuma tasemel koodi täitmiseks. Suur osa neist haavatavustest on seotud süsteemi kutsete argumendi vale kontrollimisega, mis võib viia tuuma mälu juhuslike alade lugemise ja kirjutamiseni. Probleemid hõlmavad ka otseselt süsteemi kutsete töötlemise koodi - negatiivse kutse numbri kasutamine viib täisarvudega ülevooluni. Tuumas tuvastati ka probleemid ASLR (aadressiruumi randomiseerimise) kaitse rakendustesse ja kanarameede määramisprotsessi mehhanismides, muutes need mehhanismid ebatõhusaks.
Rohkem kui üks probleem mõjutab USB stakki ja individuaalseid draivereid. Näiteks USB mass storage'i probleem võimaldab bufrite ülevoolu ja koodi täitmise tuuma tasandil, kui seade on ühendatud pahatahtliku USB-hostiga. USB DFU haavatavus, draiver, mis võimaldab uusi püsivara uuendusi läbi USB, lubab laadida muudetud püsivara pilti süsteemi Flash-mikrokontrollerisse, kasutamata krüptimist ja mööda minnes turvasuundade valideerimisest digitaalse allkirjaga. Täiendavalt uuriti avatud laadijakoodi , kus leiti üks madala ohuastmega haavatavus,
mis võib põhjustada bufrite ülevoolu SMP (Simple Management Protocol) kaudu UART-i kasutamisel.
Käesolevaga tuletame meelde, et Zephyris antakse kõikide protsesside jaoks ainult üks globaalne jagatav virtuaalne aadressiruumi (SASOS, Üksik Aadressiruumi Operatsioonisüsteem). Rakendusele spetsiifiline kood segatakse konkreetse rakenduse tuumaga, luues monoliitse käivitatava faili sõidukisse laadimiseks ja käivitamiseks. Kõik süsteemi ressursid määratakse kompileerimise ajal, mis vähendab koodi suurust ja suurendab jõudlust. Süsteemi pildil võivad olla ainult need tuuma funktsioonid, mida rakendus vajab.
Oluline on märkida, et Zephyri peamiste eeliste seas on arendamine, mis arvestab turvalisusega. , et kõik arendusetapid läbivad kohustuslikud kodeerimise turvalisuse kontrollimise etapid: fuzzing-testi, staatiline analüüs, sisserändetõrje testid, koodile vihjeid analüüs, tagaukse analüüs ja ohuteooriate modelleerimine.
Allikas: opennet.ru
