25 mau haʻahaʻa ma RTOS Zephyr, me nā mea i hoʻohana ʻia ma o kahi pā ICMP

Nā mea noiʻi mai ka hui NCC paʻi ʻia nā hualoaʻa loiloi papahana manuahi Zephyr, e ulu ana he ʻōnaehana hana manawa maoli (RTOS), i manaʻo ʻia e hoʻolako i nā hāmeʻa e hoʻokō me ka manaʻo Internet of Things (IoT, Internet of Things). I ka wā o ka loiloi i hōʻike ʻia 25 nawaliwali i Zephyr a me 1 vulnerability i MCUboot. Ke hoʻomohala ʻia nei ʻo Zephyr me ke komo ʻana o nā hui Intel.

I ka huina, ua ʻike ʻia nā vulnerabilities 6 i ka waihona pūnaewele, 4 i ka kernel, 2 i ka shell command, 5 i nā mea kelepona kelepona, 5 i ka USB subsystem a me 3 i ka mīkini hoʻololi firmware. Ua helu ʻia ʻelua pilikia, ʻelua kiʻekiʻe, 9 haʻahaʻa, 9 haʻahaʻa, a me 4 no ka noʻonoʻo ʻana. Hoʻopilikia nā pilikia koʻikoʻi i ka waihona IPv4 a me ka parser MQTT, pili nā pilikia pilikia i ka waihona nui USB a me nā mea hoʻokele USB DFU. I ka manawa o ka hōʻike ʻana i ka ʻike, ua hoʻomākaukau ʻia nā hoʻoponopono no 15 wale nō o nā mea nāwaliwali loa; nā pilikia e alakaʻi ana i ka hōʻole ʻana i ka lawelawe a i ʻole nā ​​​​pilikia me nā hemahema i loko o nā mīkini pale kernel ʻē aʻe e hoʻoponopono ʻole ʻia.

Ua ʻike ʻia kahi nāwaliwali hiki ke hoʻohana mamao ʻia ma ka waihona IPv4 o ka paepae, e alakaʻi ana i ka palaho hoʻomanaʻo i ka wā e hoʻoponopono ai i nā ʻeke ICMP i hoʻololi ʻia i kekahi ala. Ua loaʻa kekahi pilikia koʻikoʻi ma ka MQTT protocol parser, ʻo ia ke kumu o ka hemahema o ka nānā ʻana i ka lōʻihi o ke poʻo poʻo a hiki ke alakaʻi i ka hoʻokō code mamao. Loaʻa ka hōʻole koʻikoʻi o nā pilikia lawelawe ma ka IPv6 stack a me ka hoʻokō protocol CoAP.

Hiki ke hoʻohana ʻia nā pilikia ʻē aʻe ma ka ʻāina e hōʻole i ka lawelawe a i ʻole ka hoʻokō code ma ka pae kernel. ʻO ka hapa nui o kēia mau haʻahaʻa pili i ka nele o ka nānā pono ʻana i nā ʻōlelo hoʻopaʻapaʻa kelepona ʻōnaehana, a hiki ke alakaʻi i nā wahi ʻole o ka hoʻomanaʻo kernel e kākau ʻia a heluhelu ʻia mai. Hoʻopili pū ʻia nā pilikia i ka code processing call system pono'ī—ke kāhea ʻana i kahi helu kelepona ʻōnaehana maikaʻi ʻole e hopena i kahi kahe integer. Ua ʻike pū ka kernel i nā pilikia i ka hoʻokō ʻana i ka pale ASLR (address space randomization) a me ke ʻano hana no ka hoʻonohonoho ʻana i nā kaha canary ma ka puʻu, no laila ʻaʻole pono kēia mau hana.

Nui nā pilikia e pili ana i ka waihona USB a me nā mea hoʻokele pākahi. No ka laʻana, hiki i nā pilikia i ka waihona nui USB ke hoʻoulu i ka buffer a hoʻokō i ke code ma ka pae kernel ke hoʻopili ʻia ka hāmeʻa i kahi host USB i mālama ʻia e ka mea hoʻouka. ʻO kahi nāwaliwali i ka USB DFU, kahi mea hoʻokele no ka hoʻouka ʻana i ka firmware hou ma o USB, hiki iā ʻoe ke hoʻouka i kahi kiʻi firmware i hoʻololi ʻia i loko o ka Flash kūloko o ka microcontroller me ka ʻole o ka hoʻohana ʻana i ka encryption a me ke kāʻei ʻana i ke ʻano boot paʻa me ka hōʻoia o nā ʻāpana me ka hoʻohana ʻana i kahi pūlima kikohoʻe. Eia kekahi, ua aʻo ʻia ka code bootloader wehe MCUboot, kahi i loaʻa ai hoʻokahi nāwaliwali maikaʻi,
hiki ke alakaʻi i ka hoʻoulu ʻana i ka hoʻohana ʻana i ka protocol SMP (Simple Management Protocol) ma luna o ka UART.

E hoʻomanaʻo, aia ma Zephyr, hoʻokahi wale nō wahi kikoʻī pili honua (SASOS, Single Address Space Operating System) i hāʻawi ʻia no nā kaʻina hana āpau. Hoʻohui ʻia ke code kikoʻī noiʻi me kahi kernel kikoʻī noiʻi e hana i kahi monolithic executable hiki ke hoʻouka ʻia a holo ma luna o nā lako kikoʻī. Hoʻoholo ʻia nā kumuwaiwai ʻōnaehana āpau i ka manawa hōʻuluʻulu, e hōʻemi ana i ka nui code a me ka hoʻonui ʻana i ka hana. Hiki i ke kiʻi ʻōnaehana ke hoʻokomo wale i kēlā mau hiʻohiʻona kernel i koi ʻia e holo i ka noi.

He mea pono ia i waena o nā pono nui o Zephyr i oleloia ka hoʻomohala ʻana me ka noʻonoʻo palekana. AponoiaʻO nā ʻanuʻu āpau o ka hoʻomohala ʻana e loaʻa i nā pae koi o ka hōʻoia ʻana i ka palekana o ke code: ka hoʻāʻo fuzzing, ka nānā ʻana static, ka hoʻāʻo ʻana, ka loiloi code, ka nānā ʻana o ka hoʻokō backdoor a me ka hoʻohālike hoʻoweliweli.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka