Firmware można rozumieć jako oprogramowanie sprzętowe (układowe), zainstalowane na stałe w urządzeniu i zapewniające realizację podstawowych procesów jego działania. Firmware można aktualizować, backupować, a nierzadko też samo w sobie stanowi o działaniu sprzętu w ogóle. Przykładem z obszaru bezpieczeństwa są urządzenia UTM, które oprócz aktualizacji (np. bazy sygnatur AV) muszą mieć cyklicznie wgrywane nowy firmware, żeby działać poprawnie. Z pewnością można stwierdzić, że dla każdego urządzenia prawidłowa konserwacja wbudowanego oprogramowania ma kolosalne znaczenie. Dziś przyjrzymy się temu jak hardening wpływa na bezpieczeństwo wbudowanego oprogramowania.

Na co dzień spotykamy się z koniecznością aktualizacji firmware np w naszych smartfonach.

W komputerach hardening jest zazwyczaj procesem zabezpieczania systemu poprzez niwelowanie powierzchni podatności. Takie działania mogą objąć zmianę domyślnych haseł, usunięcie niepotrzebnych kont użytkowników, wyłączenie niepotrzebnych programów i usług. Temat luk i podatności jest stale obecny w naszych artykułach nie bez powodu. Podczas gdy systemy wykonują coraz więcej funkcji, wspomniana powierzchnia ataku systematycznie się zwiększa. Zasadniczo system jednofunkcyjny jest bezpieczniejszy niż system wielofunkcyjny. Wydaje się, że jednak nie unikniemy wielozadaniowości w przypadku większości urządzeń. Nadal zostają wprawdzie specjalistyczne maszyny przeznaczone tylko do konkretnych działań. Ale nawet ich specyfika pracy ulega zmianie. Niegdyś zamknięte sieci przemysłowe otwierają się dziś na bezprzewodowość i komunikację w ramach Internet of Things.

Rootkity schodzą poziom niżej

Z pewnością cyberprzestepcom łatwiej jest sięgać po tak zwane „nisko wiszące owoce”. Czyli podczas hakowania systemu szukają jak najprostszych sposobów. Dawniej oznaczało to celowanie w aplikacje użytkownika oraz ewentualnie jądro systemu operacyjnego (OS) w celu uzyskania kontroli. Narzędziem pomocnym we włamaniach do systemów informatycznych jest rootkit. Historycznie rootkity były paczkami (ang. kit) zawierającymi zmodyfikowane kluczowe pliki binarne w systemach, które zastępowały oryginalne tuż po zhakowaniu. Dzięki tym modyfikacjom możliwe było np. uzyskanie najwyższych uprawnień do systemu. Rootkity mogą działać w trybie użytkownika (usermode) lub systemu operacyjnego (kernel-mode). Mogą również dostać się do komputera użytkownika wraz z aplikacją będącą w rzeczywistości koniem trojańskim.

Jednak wraz z rozwojem bezpieczeństwa systemów operacyjnych coraz trudniej jest je skompromitować jakimkolwiek trwałym rootkitem jądra. W rezultacie hakerzy (i badacze po drugiej stronie mocy) przeszli poniżej poziomu systemu OS. Obecnie na tapecie znajduje się oprogramowanie układowe vel sprzętowe czyli firmware. W szczególności Unified Extensible Firmware Interface lub UEFI (często dalej określany jako Basic Input Output System lub BIOS). Możemy pamiętać czasy, kiedy BIOS migał na ekranie startowym pulpitu jako program ładujący. To również jeden z pierwszych kodów firmware, które mają działać na platformie, wyliczając wszystkie dostępne komponenty urządzenia, pamięć itp. Zadanie BIOS można określić jako przygotowanie całości i przekazanie kontroli do systemu operacyjnego.

Obecnie większość standardowych platform korzysta z interfejsu UEFI, który został zaprojektowany w celu poprawy wielu niedostatków wydajności systemu BIOS. Został opracowany przez Intel, AMD, Microsoft i wielu innych producentów komputerów PC i jest obecnie utrzymywany przez Unified Extended Firmware Interface Forum. Do tej pory ataki oprogramowania układowego były nieliczne. Pierwszy znany atak BIOS, zwany Chernobyl Virus, miał miejsce w 1998 roku i został użyty do wymazania zawartości pamięci flash ROM BIOS na chipsetach. Dopiero odkrycia z początku XXI wieku rzuciły inne światło na ten problem.

UEFI to interfejs pomiędzy OS a firmware, opracowywany jako następca BIOS.

Black Hat, Fancy Bear, Shadow Brokers

Black Hat w 2006 roku zaprezentował kolejną lukę w BIOSie, kiedy to Johna Heasmana wykazał możliwość podniesienia uprawnień i czytania pamięci fizycznej. Ponownie w 2009 roku, Alfredo Ortega przedstawił trwałą infekcję BIOS-u (wstawianie złośliwego kodu do procedur dekompresyjnych) . Co więcej, w ciągu ostatniej dekady liczba luk w oprogramowaniu wbudowanym znacznie wzrosła. Mimo że zagrożenia te mają charakter głównie akademicki, nie pozostaną takimi na zawsze.

Przykładowo, LoJax był pierwszym dzikim rootkitem UEFI zidentyfikowanym w 2018 r. w kampanii prowadzonej przez rosyjskich cyberszpiegów Fancy Bear. Rootkit ten został znaleziony w pakiecie z zestawem narzędzi do łatania oprogramowania systemowego ofiary. Miał na celu zainstalowanie złośliwego oprogramowania na jak najgłębszym poziomie. W konsekwencji złośliwy kod miał zostać wykonany podczas procesu rozruchu systemu. Badacze wskazują też na problem z jego usunięciem. Nie pomoże tu ani reinstalacja systemu operacyjnego ani wymiana dysku twardego. Konieczna jest ingerencja w firmware o nie jest standardowym rozwiązaniem. Jeśli zagrożenie dotarłoby do globalnej organizacji o dużej skali działania, możemy mówić o sporych kłopotach.

Godny uwagi a raczej przypomnienia jest też przeciek odnośnie grupy hakerskiej Equation Group autorstwa Shadow Brokers, który ujawnił katalog narzędzi do ataku, w tym moduł BIOS. Ich działalność sklasyfikowano jako zaawasowane stałe zagrożenie (APT). Są także łączeni z twórcami słynnego Stuxnet (wspominaliśmy o nim w tym artykule). Możemy wywnioskować, że jakiekolwiek podatności firmware stanowią punkt zaczepienia dla hakerów „większego kalibru”. Na celowniku stoi nie od dziś przemysł czyli organizacje z branży produkcyjnej, paliwowej, energii elektrycznej. Wyścig o identyfikację nowych luk, zanim zrobią to przestępcy, ma kluczowe znaczenie.

Podatności UEFI / BIOS – gdzie jesteśmy dzisiaj?

W ciągu ostatnich kilku lat ataki trybu zarządzania systemem (System Management Mode – SMM) były najczęstszą podatnością w UEFI, ponieważ SMM współpracuje bezpośrednio z OS. Przykładowo, powszechny exploit polega na zainstalowaniu rootkita na poziomie jądra w SMM, który może dotrzeć do systemu operacyjnego. Ponieważ SMM działa w podzielonym na przedziały trybie działania, system operacyjny nie jest w stanie go „zobaczyć”. Ponadto SMM jest również jednym z zabezpieczeń stosowanych w celu uniemożliwienia użytkownikom ponownego przepisywania samego oprogramowania układowego UEFI. Jeśli atakujący chciałby zainstalować trwały rootkit w oprogramowaniu, atak SMM może być pierwszym krokiem do wykonania tego zadania.

Nieprawidłowe konfiguracje to kolejny duży problem, jeśli chodzi o luki w UEFI. Tradycyjnie kod źródłowy przekazuje się od producenta np. chipów do innych podmiotów. Partnerstwo OEM zakłada modyfikację wejściowego produktu – innymi słowy nakładane jest dodatkowe kodowanie. W trakcie tego procesu można celowo wygenerować luki. Na przykład nie przestrzegając wytycznych bezpieczeństwa, umieszczając podatny kod lub po prostu przypadkowo błędnie konfigurując bity. Nie tylko eksperci bezpieczeństwa i badacze podatności są w stanie je wychwycić. Wiemy dobrze, że to hakerzy są mistrzami w znajdowaniu wszelkiego rodzaju uchybień i błędów konfiguracji.

Nawet jeśli wejściowy produkt jest wolny od podatności, dodatkowe funkcje i moduły w który wyposażany jest na dalszym etapie produkcji, może przyczynić się do osłabienia bezpieczeństwa.

Istnieją setki różnych bitów, które muszą być poprawnie skonfigurowane, zanim system będzie gotowy do wydania. Jednym z przykładów typowej luki w zabezpieczeniach związanej z błędną konfiguracją są bity ochrony (pamięci) flash, które uniemożliwiają nieautoryzowaną modyfikację firmware. Aby się przed nią uchronić, wbudowane oprogramowanie musi wyczyścić bit „BIOS Write Enable”. Niestety, pojawia się pewien problem bowiem atakujący … sam może po prostu ustawić ten bit. Oczywiście istnieje ścieżka zapobiegawcza, jak np. „Blokada BIOS” ale i tutaj napastnicy znaleźli sposoby na obejście tego bitu, wyłączając wewnętrzne zdarzenia procesora.

Podczas gdy SMM i błędne konfiguracje to dwie najczęściej występujące podatności w UEFI, istnieją inne, w tym te, które wymagają dokładnych konfiguracji w trybie uśpienia i bezpiecznego rozruchu.

Narzędzia poprawy bezpieczeństwa firmware

Inwestycje w badania i rozwój bezpieczeństwa dowodzą, że i klienci i dostawcy rozwiązań security zdają sobie sprawę ze swojego położenia. Przede wszystkim obie strony muszą robić wszystko by w wyścigu z cyberprzestępcami znajdować się choć pół kroku wprzód. Nie zawsze tak się dzieje (jak można poczytać na naszym blogu) ale godne uwagi jest to, że rzeczywiście poczyniono postępy. Podjęto działania, aby znacznie zmniejszyć niektóre z najczęstszych ataków na oprogramowanie sprzętowe.

Fuzzing (rozmycie) jest powszechną techniką stosowaną przez hakerów w celu znalezienia luk w zabezpieczeniach. Polega ona na zautomatyzowanym wysyłaniu do programu różnego rodzaju losowych danych wejściowych i rejestrowaniu niepożądanych wydarzeń, takich jak crash, wycieki pamięci czy nieautoryzowany dostęp. Analizę rozmytą wykorzystuje się nie tylko przy badaniu podatności firmware, ale i w innych dziedzinach bezpieczeństwa. Z kolei wykonywanie symboliczne (także ocena symboliczna) jest sposobem analizowania programu w celu określenia, które wejścia powodują wykonanie każdej części programu. Podsumowując, z kodem źródłowym i informacjami o atakowanym oprogramowaniu można odwzorować awarie i błędy, aby ułatwić ich naprawianie.

Propozycje Intel

Projekt Excite firmy Intel łączy ocenę symboliczną, rozmycie i konkretne testy w jednym narzędziu, które pomaga zautomatyzować wykrywanie luk w zabezpieczeniach UEFI w SMM. Łącząc zestaw różnych narzędzi z różnych kategorii otrzymujemy rezultat niemożliwy do osiągnięcia przez samodzielne rozwiązania. Unikalne możliwości platform wirtualnych do przepływu danych wraz z wykonywaniem symbolicznym pozwalają na generowanie testów w kilku wymiarach. Dodając do tego fuzzing, rozszerzamy testowaną przestrzeń i zwiększamy powodzenie wykrycia podatności.

Koncepcja projektu Excite firmy Intel

Naukowcy pracują również nad analizą incydentów bezpieczeństwa z wbudowanym oprogramowaniem. Wykorzystując zautomatyzowane narzędzia do identyfikowania, gdzie atakujący mogą wprowadzić złośliwego wejścia, śledzą przepływ danych. Wszystko w celu zidentyfikowania kodu, który mógłby zostać „skażony” przez cyberprzestepców. Co więcej, dostępny jest oparty na hostach analizator oprogramowania (Host-Based Firmware Analyzer – HBFA), zautomatyzowane narzędzie o otwartym kodzie źródłowym. HBFA ma umożliwić programistom przeprowadzanie zaawansowanych testów sterowników UEFI i sterowników UEFI PI (Platform Initialization ) w środowisku systemu operacyjnego.

Jeśli chodzi o radzenie sobie z błędnymi konfiguracjami, dostępnych jest kilka narzędzi, takich jak projekt Chipsec z otwartym dostępem do Intela, czyli systemy skanowania błędnej konfiguracji. Chipsec umożliwia producentom OEM sprawdzenie poprawności konfiguracji wszystkich bitów systemowych w firmware. Przed powstaniem Chipsec Intel zaoferował przewodnik po programie BIOS Writers (i nadal oferuje podręczniki UEFI Writers Guides), który pomagały stworzyć prawidłowy kod BIOS / UEFI. Korzystanie z zaawansowanych, zautomatyzowanych narzędzi analitycznych stanowi ogromny krok naprzód w dziedzinie bezpieczeństwa oprogramowania układowego.

Na marginesie, niwelowanie podatności w obszarze firmware to nie jedyne działania Intel zmierzające do poprawy bezpieczeństwa ich produktów. Wspominaliśmy o tym, że uporali się z podatnościami w swoim narzędziu do diagnostyki procesorów.

Znaczenie hardeningu dla firmware

Pomimo tych wysiłków zawsze pojawią się błędy oprogramowania układowego. Zdając sobie z tego sprawę, naukowcy opracowują technologie hardeningu firmware dla UEFI, które poważnie ograniczą możliwości atakującego, nawet jeśli wykonają kod wewnątrz oprogramowania. Na przykład nowe technologie łagodzą skutki ataków SMM, uniemożliwiając wykonanie dowolnego kodu wewnątrz SMM i umożliwiając systemowi operacyjnemu weryfikację stanu SMM za pomocą bezpiecznych technik walidacji.

UEFI odgrywa nie tylko istotną rolę w bezpiecznym uruchamianiu systemów, ale oferuje również hakerom atrakcyjną powierzchnię ataku. Przede wszystkim wciąż pozostają jednym z potencjalnych wektorów ataku, na wypadek wojny cybernetycznej. Ataki sprzętowe takie jak RowHammer czy RAMBleed zmieniają postrzeganie sprzętowych podatności. Pora na zabranie się za luki w oprogramowaniu procesora. Tylko poprzez dalsze inwestowanie w badania, rozwój nowych zautomatyzowanych technologii i lepszą komunikację bariery wejścia dla hakerów pozostaną odporne.

https://www.zdnet.com/article/fancy-bear-lojax-campaign-reveals-first-documented-use-of-uefi-rootkit-in-the-wild

https://www.helpnetsecurity.com/2019/07/17/hardening-firmware-security

https://software.intel.com/en-us/articles/finding-bios-vulnerabilities-with-symbolic-execution-and-virtual-platforms

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *