25 nga mga kahuyangan sa RTOS Zephyr, lakip ang mga gipahimuslan pinaagi sa usa ka pakete sa ICMP

Mga tigdukiduki gikan sa NCC Group gipatik libre nga mga resulta sa pag-audit sa proyekto Zephyr, pagpalambo usa ka real-time nga operating system (RTOS), nga nagtumong sa pagsangkap sa mga himan nga nagsunod sa konsepto sa Internet of Things (IoT, Internet of Things). Atol sa pag-audit kini gibutyag 25 mga kahuyang sa Zephyr ug 1 vulnerability sa MCUboot. Ang Zephyr gipalambo uban sa pag-apil sa mga kompanya sa Intel.

Sa kinatibuk-an, 6 nga mga kahuyangan ang giila sa network stack, 4 sa kernel, 2 sa command shell, 5 sa system call handler, 5 sa USB subsystem ug 3 sa firmware update mechanism. Duha ka isyu ang gihatagan og grado nga kritikal, duha ang taas, 9 ang kasarangan, 9 ang ubos, ug 4 ang alang sa konsiderasyon. Ang mga kritikal nga problema makaapekto sa IPv4 stack ug sa MQTT parser, ang mga delikado makaapekto sa USB mass storage ug USB DFU drivers. Sa panahon sa pagbutyag sa impormasyon, ang mga pag-ayo giandam lamang alang sa 15 sa labing delikado nga mga kahuyangan; ang mga problema nga mosangpot sa pagdumili sa serbisyo o nalangkit sa mga sayup sa dugang nga mga mekanismo sa pagpanalipod sa kernel nagpabilin nga wala matul-id.

Ang usa ka layo nga mapahimuslan nga kahuyangan nahibal-an sa IPv4 stack sa plataporma, nga mosangpot sa pagkadunot sa memorya kung ang pagproseso sa mga pakete sa ICMP nga giusab sa usa ka paagi. Laing seryoso nga problema ang nakit-an sa MQTT protocol parser, nga tungod sa kakulang sa tukma nga pagsusi sa gitas-on sa field sa header ug mahimong mosangpot sa remote code execution. Ang dili kaayo grabe nga pagdumili sa mga isyu sa serbisyo makita sa IPv6 stack ug ang pagpatuman sa CoAP protocol.

Ang ubang mga problema mahimong mapahimuslan sa lokal aron mahimong hinungdan sa pagdumili sa serbisyo o pagpatuman sa code sa lebel sa kernel. Kadaghanan niini nga mga kahuyangan nalangkit sa kakulang sa tukma nga pagsusi sa mga argumento sa tawag sa sistema, ug mahimong mosangpot sa arbitraryong mga bahin sa memorya sa kernel nga gisulatan ug gibasa. Ang mga problema moabot usab sa sistema sa pagproseso sa code sa tawag mismoβ€”ang pagtawag sa negatibong numero sa tawag sa sistema moresulta sa integer overflow. Giila usab sa kernel ang mga problema sa pagpatuman sa proteksyon sa ASLR (address space randomization) ug ang mekanismo sa pagpahimutang sa mga marka sa canary sa stack, nga naghimo niini nga mga mekanismo nga dili epektibo.

Daghang mga problema ang makaapekto sa USB stack ug indibidwal nga mga drayber. Pananglitan, ang mga problema sa USB mass storage mahimong hinungdan sa usa ka buffer overflow ug ipatuman ang code sa lebel sa kernel kung ang aparato konektado sa usa ka USB host nga kontrolado sa tig-atake. Ang usa ka kahuyang sa USB DFU, usa ka drayber alang sa pag-load sa bag-ong firmware pinaagi sa USB, nagtugot kanimo sa pag-load sa usa ka giusab nga imahe sa firmware ngadto sa internal nga Flash sa microcontroller nga walay paggamit sa encryption ug pag-bypass sa luwas nga boot mode uban ang pag-verify sa mga sangkap gamit ang digital nga pirma. Dugang pa, gitun-an ang open bootloader code MCUboot, diin usa ka dili maayo nga pagkahuyang ang nakit-an,
nga mahimong mosangpot sa usa ka buffer overflow kon gamiton ang SMP (Simple Management Protocol) protocol sa UART.

Hinumdomi nga sa Zephyr, usa lamang ka global shared virtual address space (SASOS, Single Address Space Operating System) ang gihatag para sa tanang proseso. Ang code nga espesipiko sa aplikasyon gikombinar sa usa ka kernel nga espesipiko sa aplikasyon aron maporma ang usa ka monolithic executable nga mahimong ikarga ug ipadagan sa piho nga hardware. Ang tanan nga mga kapanguhaan sa sistema gitino sa oras sa pag-compile, pagkunhod sa gidak-on sa code ug pagdugang sa pasundayag. Ang imahe sa sistema mahimong maglakip lamang sa mga bahin sa kernel nga gikinahanglan sa pagpadagan sa aplikasyon.

Mamatikdan nga taliwala sa mga yawe nga bentaha sa Zephyr gihisgutan kalamboan uban sa kaluwasan sa hunahuna. Giaprobahannga ang tanan nga mga yugto sa kalamboan moagi sa mandatory nga mga yugto sa pagkumpirma sa seguridad sa code: fuzzing testing, static analysis, penetration testing, code review, analysis sa backdoor nga pagpatuman ug threat modeling.

Source: opennet.ru

Idugang sa usa ka comment