25 ranljivosti v RTOS Zephyr, vključno s tistimi, ki so izkoriščene prek paketa ICMP

Raziskovalci iz skupine NCC objavljeno brezplačne rezultate revizije projekta Zephyr, razvoju operacijski sistem v realnem času (RTOS), namenjen opremljanju naprav, ki ustrezajo konceptu interneta stvari (IoT, Internet of Things). Med revizijo se je pokazalo 25 ranljivosti v Zephyrju in 1 ranljivost v MCUboot. Zephyr se razvija s sodelovanjem podjetij Intel.

Skupno je bilo ugotovljenih 6 ranljivosti v omrežnem skladu, 4 v jedru, 2 v ukazni lupini, 5 v obdelovalcih sistemskih klicev, 5 v podsistemu USB in 3 v mehanizmu za posodobitev vdelane programske opreme. Dve težavi sta ocenjeni kot kritični, dve sta visoki, 9 je zmerno, 9 nizko in 4 so v razmislek. Kritične težave vplivajo na sklad IPv4 in razčlenjevalnik MQTT, nevarne pa na masovni pomnilnik USB in gonilnike USB DFU. V času razkritja informacij so bili popravki pripravljeni samo za 15 najnevarnejših ranljivosti, težave, ki vodijo v zavrnitev storitve ali povezane z napakami v dodatnih zaščitnih mehanizmih jedra, ostajajo nepopravljene.

V skladu IPv4 platforme je bila ugotovljena ranljivost, ki jo je mogoče izkoristiti na daljavo, kar vodi do poškodb pomnilnika pri obdelavi paketov ICMP, spremenjenih na določen način. Druga resna težava je bila odkrita v razčlenjevalniku protokola MQTT, ki je posledica pomanjkanja ustreznega preverjanja dolžine polja glave in lahko povzroči oddaljeno izvajanje kode. Manj resne težave z zavrnitvijo storitve najdemo v skladu IPv6 in implementaciji protokola CoAP.

Druge težave je mogoče izkoristiti lokalno za povzročitev zavrnitve storitve ali izvajanje kode na ravni jedra. Večina teh ranljivosti je povezanih s pomanjkanjem ustreznih preverjanj argumentov sistemskega klica in lahko vodijo do pisanja in branja poljubnih območij pomnilnika jedra. Težave segajo tudi do same kode za obdelavo sistemskega klica – klicanje negativne številke sistemskega klica povzroči prekoračitev celega števila. Jedro je odkrilo tudi težave pri izvajanju zaščite ASLR (randomizacija naslovnega prostora) in mehanizma za nastavljanje kanarčkov na sklad, zaradi česar so ti mehanizmi neučinkoviti.

Številne težave vplivajo na sklad USB in posamezne gonilnike. Na primer, težave v masovnem pomnilniku USB lahko povzročijo prekoračitev medpomnilnika in izvajanje kode na ravni jedra, ko je naprava povezana z gostiteljem USB, ki ga nadzira napadalec. Ranljivost v USB DFU, gonilniku za nalaganje nove vdelane programske opreme prek USB-ja, vam omogoča nalaganje spremenjene slike vdelane programske opreme v notranji Flash mikrokrmilnika brez uporabe šifriranja in mimo načina varnega zagona s preverjanjem komponent z digitalnim podpisom. Poleg tega je bila proučena koda odprtega zagonskega nalagalnika MCUboot, v katerem je bila najdena ena benigna ranljivost,
kar lahko povzroči prepolnitev medpomnilnika pri uporabi protokola SMP (Simple Management Protocol) prek UART.

Spomnimo se, da je v Zephyrju za vse procese na voljo samo en globalni skupni navidezni naslovni prostor (SASOS, Single Address Space Operating System). Koda, specifična za aplikacijo, je združena z jedrom, specifičnim za aplikacijo, da tvori monolitno izvedljivo datoteko, ki jo je mogoče naložiti in izvajati na določeni strojni opremi. Vsi sistemski viri so določeni v času prevajanja, kar zmanjša velikost kode in poveča zmogljivost. Slika sistema lahko vključuje samo tiste funkcije jedra, ki so potrebne za zagon aplikacije.

Omeniti velja, da je med ključnimi prednostmi Zephyrja omenjeno razvoj z mislijo na varnost. Odobrenoda so vse faze razvoja podvržene obveznim fazam potrjevanja varnosti kode: fuzzing testiranje, statična analiza, penetracijsko testiranje, pregled kode, analiza backdoor implementacije in modeliranje groženj.

Vir: opennet.ru

Dodaj komentar