25 qelsiyên di RTOS Zephyr de, di nav de yên ku bi pakêtek ICMP ve têne bikar anîn

Lêkolînerên ji Koma NCC weşandin encamên kontrolkirina projeya belaş Zephyr, pêşdikeve pergalek xebitandinê ya rast-ê (RTOS), ku armanc ew e ku amûrên ku bi têgîna Înternetê ya Tiştan (IoT, Înterneta Tiştan) re tevdigerin. Di dema kontrolê de derket holê 25 qelsî li Zephyr û 1 xirapbûn di MCUboot de. Zephyr bi beşdariya şîrketên Intel tê pêşxistin.

Bi tevayî, 6 qelsî di stûna torê de, 4 di kernelê de, 2 di qalika fermanê de, 5 di rêwerzên banga pergalê de, 5 di binpergala USB de û 3 jî di mekanîzmaya nûvekirina firmware de hatine nas kirin. Du mijar krîtîk têne nirxandin, du zêde ne, 9 nerm in, 9 kêm in û 4 jî ji bo nirxandinê ne. Pirsgirêkên krîtîk bandorê li staka IPv4 û parsera MQTT dikin, yên xeternak bandorê li hilanîna girseyî ya USB û ajokarên USB DFU dikin. Di dema eşkerekirina agahiyê de, rastkirin tenê ji bo 15 lawaziyên herî xeternak hatine amadekirin; Pirsgirêkên ku rê li ber redkirina karûbarê vedigirin an jî bi xeletiyên di mekanîzmayên parastina kernel ên zêde de têkildar in, nehatine rastkirin.

Di stûna IPv4 ya platformê de qelsiyek ji dûr ve hatî bikar anîn hate nas kirin, ku dema ku pakêtên ICMP-ê yên ku bi rengekî hatine guheztin têne xebitandin dibe sedema xerabûna bîranînê. Pirsgirêkek din a ciddî di parsera protokola MQTT de hate dîtin, ku ji ber nebûna kontrolkirina dirêjahiya qada sernavê ya rast çêdibe û dikare bibe sedema darvekirina kodê ji dûr ve. Kêmtir redkirina pirsgirêkên karûbarê di stûna IPv6 û pêkanîna protokola CoAP de têne dîtin.

Pirsgirêkên din dikarin bi herêmî werin bikar anîn da ku bibe sedema redkirina karûbarê an jî kodê di asta kernel de bicîh bikin. Piraniya van qelsiyan bi nebûna kontrolên rast ên argumanên bangewaziya pergalê ve girêdayî ne, û dikarin bibin sedema ku qadên kêfî yên bîranîna kernelê werin nivîsandin û xwendin. Pirsgirêk di heman demê de koda pêvajoyê ya bangewaziya pergalê bixwe jî dirêj dibin - gazîkirina jimareyek bangek pergalê ya neyînî dibe sedema hejmarek zêde. Kernel di heman demê de pirsgirêkên di pêkanîna parastina ASLR-ê de (randomkirina cîhê navnîşan) û mekanîzmaya danîna nîşaneyên kanaryayê li ser stikê jî destnîşan kir, ku van mekanîzmayan bêbandor dike.

Gelek pirsgirêk bandorê li stacka USB û ajokarên kesane dikin. Mînakî, pirsgirêkên di hilanîna girseyî ya USB-ê de dema ku cîhaz bi mêvandarek USB-ya ku ji hêla êrîşker ve tê kontrol kirin ve girêdayî ye, dibe sedema zêdebûnek tampon û kodê di asta kernelê de bicîh bike. Zehfek di USB DFU de, ajokerek ji bo barkirina firmware-ya nû bi USB-ê, dihêle hûn wêneyek firmware-ya guhertî li Flash-ya navxweyî ya mîkrokontrolerê bar bikin bêyî ku şîfrekirinê bikar bînin û moda bootê ya ewledar bi verastkirina pêkhateyan bi karanîna îmzeyek dîjîtal re derbas bikin. Wekî din, koda bootloader vekirî hate lêkolîn kirin MCUboot, ku tê de yek lawazbûnek belengaz hate dîtin,
ku dema ku protokola SMP (Protokola Rêvebiriya Hêsan) li ser UART-ê bikar tîne, dikare bibe sedema zêdebûna tamponê.

Bînin bîra xwe ku li Zephyr, tenê cîhek navnîşana virtual ya hevpar a gerdûnî (SASOS, Pergala Xebatê ya Cihê Navnîşana Yekane) ji bo hemî pêvajoyan tê peyda kirin. Koda-taybetî ya serîlêdanê bi kernelek-taybetî-serîlêdanê re tête hev kirin da ku hilberek yekparêz a ku dikare li ser hardware taybetî were barkirin û xebitandin ava bike. Hemî çavkaniyên pergalê di dema berhevkirinê de têne destnîşankirin, mezinahiya kodê kêm dikin û performansê zêde dikin. Wêneya pergalê dikare tenê wan taybetmendiyên kernel ên ku ji bo xebitandina serîlêdanê hewce ne pêk bîne.

Hêjayî gotinê ye ku ji avantajên sereke yên Zephyr behs kirin pêşveçûna bi ewlehî di hişê. Pejirandinku hemî qonaxên pêşkeftinê di qonaxên mecbûrî yên piştrastkirina ewlehiya kodê re derbas dibin: ceribandina fuzzing, analîza statîk, ceribandina penetkirinê, vekolîna kodê, analîzkirina bicîhkirina paşverû û modela xetereyê.

Source: opennet.ru

Add a comment