25 ranjivosti u RTOS Zephyr, uključujući one koje se koriste putem ICMP paketa

Istraživači iz NCC grupe objavljeno besplatni rezultati revizije projekta zefir, razvija operativni sistem u realnom vremenu (RTOS), koji ima za cilj opremanje uređaja koji su u skladu sa konceptom Interneta stvari (IoT, Internet of Things). Tokom revizije je otkriveno 25 ranjivosti u Zephyru i 1 ranjivost u MCUboot-u. Zephyr se razvija uz učešće Intelovih kompanija.

Ukupno je identifikovano 6 ranjivosti u mrežnom steku, 4 u kernelu, 2 u komandnoj ljusci, 5 u rukovaocima sistemskim pozivima, 5 u USB podsistemu i 3 u mehanizmu za ažuriranje firmvera. Dva pitanja su ocijenjena kao kritična, dva su visoka, 9 su umjerena, 9 su niska, a 4 su za razmatranje. Kritični problemi utiču na IPv4 stek i MQTT parser, opasni utiču na USB masovnu memoriju i USB DFU drajvere. U trenutku objavljivanja informacija, ispravke su bile pripremljene samo za 15 najopasnijih ranjivosti; problemi koji dovode do uskraćivanja usluge ili su povezani sa nedostacima u dodatnim mehanizmima zaštite kernela ostaju neispravljeni.

U IPv4 steku platforme identifikovana je ranjivost koja se može daljinski iskoristiti, što dovodi do oštećenja memorije prilikom obrade ICMP paketa modifikovanih na određeni način. Još jedan ozbiljan problem pronađen je u parseru MQTT protokola, koji je uzrokovan nedostatkom odgovarajuće provjere dužine polja zaglavlja i može dovesti do udaljenog izvršavanja koda. Manje ozbiljni problemi sa uskraćivanjem usluge nalaze se u IPv6 steku i implementaciji CoAP protokola.

Drugi problemi se mogu iskoristiti lokalno da izazovu uskraćivanje usluge ili izvršavanje koda na nivou kernela. Većina ovih ranjivosti povezana je s nedostatkom odgovarajućih provjera argumenata sistemskog poziva i može dovesti do proizvoljnih područja memorije kernela koji se upisuju i čitaju iz njih. Problemi se takođe protežu na sam kod za obradu sistemskog poziva—pozivanje negativnog broja sistemskog poziva rezultira prelivanjem celog broja. Kernel je takođe identifikovao probleme u implementaciji ASLR zaštite (randomizacija adresnog prostora) i mehanizma za postavljanje kanarinskih oznaka na stek, što ove mehanizme čini neefikasnim.

Mnogi problemi utiču na USB stog i pojedinačne drajvere. Na primjer, problemi u USB masovnoj memoriji mogu uzrokovati prelijevanje bafera i izvršavanje koda na nivou kernela kada je uređaj povezan na USB host koji kontrolira napadač. Ranjivost u USB DFU, drajveru za učitavanje novog firmvera putem USB-a, omogućava vam da učitate modificiranu sliku firmvera u interni Flash mikrokontrolera bez korištenja šifriranja i zaobilaženja načina sigurnog pokretanja uz verifikaciju komponenti pomoću digitalnog potpisa. Dodatno, proučavan je otvoreni kod pokretača MCUboot, u kojoj je pronađena jedna benigna ranjivost,
što može dovesti do prekoračenja bafera kada se koristi SMP (Simple Management Protocol) protokol preko UART-a.

Podsjetimo da je u Zephyru predviđen samo jedan globalni zajednički virtualni adresni prostor (SASOS, Single Address Space Operating System) za sve procese. Kôd specifičan za aplikaciju se kombinuje sa jezgrom specifičnim za aplikaciju kako bi se formirao monolitni izvršni fajl koji se može učitati i pokrenuti na određenom hardveru. Svi sistemski resursi se određuju u vrijeme kompajliranja, smanjujući veličinu koda i povećavajući performanse. Slika sistema može uključivati ​​samo one karakteristike kernela koje su potrebne za pokretanje aplikacije.

Važno je napomenuti da je među ključnim prednostima Zephyra spomenuto razvoj imajući na umu sigurnost. Odobrenoda sve faze razvoja prolaze obavezne faze potvrđivanja sigurnosti koda: fuzzing testiranje, statička analiza, testiranje penetracije, pregled koda, analiza backdoor implementacije i modeliranje prijetnji.

izvor: opennet.ru

Dodajte komentar