25 luk w zabezpieczeniach w RTOS Zephyr, w tym wykorzystywanych przez pakiety ICMP.

Badacze z firmy NCC Group opublikowali wyniki audytu wolnego projektu Zephyr, rozwijającego system operacyjny czasu rzeczywistego (RTOS), zaprojektowany z myślą o urządzeniach w koncepcji «Internet rzeczy» (IoT, Internet of Things). Podczas audytu zidentyfikowano 25 luk w Zephyr oraz 1 luka w MCUboot. Rozwój Zephyr odbywa się przy udziale firm Intel.

W sumie zidentyfikowano 6 luk w stosie sieciowym, 4 w jądrze, 2 w powłoce, 5 w obsłudze wywołań systemowych, 5 w podsystemie USB oraz 3 w mechanizmie aktualizacji oprogramowania. Dwie z problemów mają krytyczny poziom zagrożenia, dwie — wysoki, 9 — umiarkowany, 9 — niski i 4 — do rozważenia. Krytyczne problemy dotyczą stosu IPv4 oraz parsera MQTT, niebezpieczne — sterowników USB mass storage oraz USB DFU. W momencie ujawnienia informacji poprawki były przygotowane tylko dla 15 najniebezpieczniejszych luk, a problemy prowadzące do odmowy usługi lub związane z niedostatkami w mechanizmach dodatkowej ochrony jądra pozostają niezałatane.

W stosie IPv4 platformy zidentyfikowano lukę, którą można wykorzystać zdalnie, prowadzącą do uszkodzenia pamięci podczas przetwarzania specjalnie zmodyfikowanych pakietów ICMP. Kolejny poważny problem wystąpił w parserze protokołu MQTT, spowodowany brakiem odpowiedniej weryfikacji długości pól w nagłówku, co może prowadzić do zdalnego wykonania kodu. Mniej poważne problemy, prowadzące do odmowy usługi, znaleziono w stosie IPv6 oraz w implementacji protokołu CoAP.

Pozostałe problemy mogą być wykorzystywane lokalnie do wywołania odmowy usługi lub wykonania kodu na poziomie jądra. Większość z tych luk jest związana z brakiem odpowiednich weryfikacji argumentów wywołań systemowych, co może prowadzić do zapisu i odczytu z dowolnych obszarów pamięci jądra. Problemy dotyczą także samego kodu obsługi wywołań systemowych — odwołanie do ujemnego numeru wywołania systemowego prowadzi do przepełnienia całkowitego. W jądrze zidentyfikowano również problemy w implementacji ochrony ASLR (losowanie przestrzeni adresowej) oraz mechanizmu ustawiania znaczników kanarkowych w stosie, co czyni te mechanizmy nieskutecznymi.

Wiele problemów dotyczy stosu USB oraz poszczególnych sterowników. Na przykład, problem z pamięcią masową USB może spowodować przepełnienie bufora i wykonanie kodu na poziomie jądra, gdy urządzenie jest podłączone do kontrolowanego przez atakującego hosta USB. Wada w USB DFU, sterowniku do ładowania nowego oprogramowania przez USB, pozwala na załadowanie zmodyfikowanego obrazu oprogramowania do wewnętrznej pamięci Flash mikrokontrolera bez stosowania szyfrowania i obejścia trybu bezpiecznego uruchamiania z weryfikacją komponentów za pomocą podpisu cyfrowego. Dodatkowo badano kod otwartego bootloadera MCUboot, w którym znaleziono jedną niegroźną lukę,
która może prowadzić do przepełnienia bufora przy użyciu protokołu SMP (Simple Management Protocol) przez UART.

Przypominamy, że w Zephyrze wszystkie procesy mają tylko jedną globalną współdzieloną przestrzeń adresową (SASOS, Single Address Space Operating System). Specyficzny dla aplikacji kod jest łączony z jądrami dostosowanymi do konkretnego zastosowania i tworzy monolitowy plik wykonywalny do załadowania i uruchomienia na określonym sprzęcie. Wszystkie zasoby systemowe są definiowane na etapie kompilacji, co zmniejsza rozmiar kodu i zwiększa wydajność. Do obrazu systemowego mogą być dołączane tylko te funkcje jądra, które są potrzebne do uruchomienia aplikacji.

Warto zauważyć, że wśród kluczowych zalet Zephyr wspomniano o rozwoju z uwzględnieniem bezpieczeństwa. Podobno, wszystkie etapy rozwoju przechodzą obowiązkowe etapy weryfikacji bezpieczeństwa kodu: testy fuzzingowe, analiza statyczna, testy penetracyjne, przegląd kodu, analiza wprowadzania backdoorów oraz modelowanie zagrożeń.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster