25 RTOS Zephyr ievainojamības, tostarp tās, kuras tiek izmantotas, izmantojot ICMP paketi

Pētnieki no NCC grupas publicēta bezmaksas projektu audita rezultāti Zefīrs, attīstot reāllaika operētājsistēma (RTOS), kuras mērķis ir aprīkot ierīces, kas atbilst lietiskā interneta (IoT, Internet of Things) koncepcijai. Revīzijas laikā tas atklājās 25 ievainojamības Zephyr un 1 ievainojamība MCUboot. Zephyr tiek izstrādāts, piedaloties Intel uzņēmumiem.

Kopumā tika identificētas 6 ievainojamības tīkla kaudzē, 4 kodolā, 2 komandu apvalkā, 5 sistēmas zvanu apstrādātājos, 5 USB apakšsistēmā un 3 programmaparatūras atjaunināšanas mehānismā. Divi jautājumi ir novērtēti kā kritiski, divi ir augsti, 9 ir vidēji, 9 ir zemi un 4 ir jāapsver. Kritiskas problēmas ietekmē IPv4 steku un MQTT parsētāju, bīstamas – USB lielapjoma atmiņu un USB DFU draiverus. Informācijas izpaušanas brīdī labojumi bija sagatavoti tikai 15 visbīstamākajām ievainojamībām; problēmas, kas izraisa pakalpojuma atteikumu vai saistītas ar papildu kodola aizsardzības mehānismiem, joprojām nav novērstas.

Platformas IPv4 stekā ir konstatēta attālināti izmantojama ievainojamība, kas, apstrādājot noteiktā veidā modificētas ICMP paketes, izraisa atmiņas bojājumus. Vēl viena nopietna problēma tika konstatēta MQTT protokola parsētājā, ko izraisa pareiza galvenes lauka garuma pārbaudes trūkums un kas var izraisīt attālinātu koda izpildi. Mazāk nopietnas pakalpojumu liegšanas problēmas ir sastopamas IPv6 stekā un CoAP protokola ieviešanā.

Citas problēmas var izmantot lokāli, lai izraisītu pakalpojuma atteikumu vai izpildītu kodu kodola līmenī. Lielākā daļa šo ievainojamību ir saistītas ar sistēmas izsaukuma argumentu pareizu pārbaužu trūkumu un var izraisīt patvaļīgu kodola atmiņas apgabalu ierakstīšanu un lasīšanu no tiem. Problēmas attiecas arī uz pašu sistēmas zvanu apstrādes kodu — negatīva sistēmas izsaukuma numura izsaukšana izraisa vesela skaitļa pārpildīšanu. Kodols arī identificēja problēmas ASLR aizsardzības (adrešu telpas randomizācijas) ieviešanā un mehānismā kanārijas zīmju iestatīšanai uz steka, padarot šos mehānismus neefektīvus.

Daudzas problēmas ietekmē USB steku un atsevišķus draiverus. Piemēram, problēmas USB lielapjoma atmiņā var izraisīt bufera pārpildīšanu un izpildīt kodu kodola līmenī, kad ierīce ir pievienota USB resursdatoram, ko kontrolē uzbrucējs. USB DFU ievainojamība, kas ir draiveris jaunas programmaparatūras ielādei, izmantojot USB, ļauj ielādēt modificētu programmaparatūras attēlu mikrokontrollera iekšējā zibspuldzē, neizmantojot šifrēšanu un apejot drošo sāknēšanas režīmu, pārbaudot komponentus, izmantojot digitālo parakstu. Turklāt tika pētīts atvērtā sāknēšanas ielādētāja kods MCUboot, kurā tika atrasta viena labdabīga ievainojamība,
kas var izraisīt bufera pārpildīšanu, izmantojot SMP (Simple Management Protocol) protokolu, izmantojot UART.

Atgādiniet, ka Zephyr visiem procesiem ir nodrošināta tikai viena globāla koplietojama virtuālā adrešu telpa (SASOS, Single Address Space Operating System). Lietojumprogrammai specifisks kods tiek apvienots ar lietojumprogrammas kodolu, lai izveidotu monolītu izpildāmo failu, ko var ielādēt un palaist uz noteiktas aparatūras. Visi sistēmas resursi tiek noteikti kompilēšanas laikā, samazinot koda lielumu un palielinot veiktspēju. Sistēmas attēlā var būt iekļauti tikai tie kodola līdzekļi, kas nepieciešami lietojumprogrammas palaišanai.

Jāatzīmē, ka viena no galvenajām Zephyr priekšrocībām minēts attīstību, paturot prātā drošību. Apstiprinātska visos izstrādes posmos tiek veiktas obligātas koda drošības apstiprināšanas stadijas: izplūdes pārbaude, statiskā analīze, iespiešanās pārbaude, koda pārskatīšana, aizmugures durvju ieviešanas analīze un draudu modelēšana.

Avots: opennet.ru

Pievieno komentāru