Cyberprzestępcy planując atak przeważnie szukają najprostszej ścieżki i wybierają cele, które są najbardziej odsłonięte oraz których przejęcie da im najwięcej korzyści. Dlatego od wielu lat najbardziej narażone są aplikacje dla użytkowników końcowych oraz sam system operacyjny, które zawierają wiele podatności, ukrytych furtek i bugów.
Działa to analogicznie. Jeśli hackerzy jako cel chętnie wybierają software, to i bezpieczeństwo skupia się głównie na zabezpieczeniu wysokopoziomowym. W ten sposób warstwy poniżej systemu operacyjnego są zaniedbywane, zarówno przez producentów sprzętu komputerowego, jak i przez twórców narzędzi i technologii cyberbezpieczeństwa.

Pierwszy znany atak na BIOS miał miejsce już w 1998 roku, a sam wirus nazwano „Chernobyl Virus”. Miał rozmach. Wymazywał dane z pamięci ROM BIOSu niszcząc tym samym zainfekowane urządzenia. Szacuje się, że dotkniętych zostało ponad 60 milionów urządzeń na całym świecie, a całość kampanii przyniosła ponad miliard dolarów strat.


Czym jest Firmware?

W ramach wprowadzenia w zagadnienie wyjaśnijmy najpierw, co właściwie kryje się pod nazwą firmware.
Firmware to nic innego jak niskopoziomowe oprogramowanie, które fabrycznie zaimplementowane jest na każdym sprzęcie znajdującym się w komputerze. Zainstalowane jest przez producentów na chipsecie każdego hardware’u i pozwala na komunikację systemu operacyjnego z poszczególnymi komponentami. Główną funkcją firmware jest więc dostarczenie API, które pozwala software’owi na wykonywanie poleceń urządzeniom takim jak mikrofon, kamera, dysk czy płyta główna.

Każdemu z nas firmware kojarzy się bezpośrednio z systemem BIOS. Akronim ten stoi za stwierdzeniem „Basic Input/Output System” i w urządzeniach komputerowych jest to podstawowy firmware odpowiedzialny za rozruch całego hardware po naciśnięciu przycisku „Power”. To jego zadaniem jest wyzwolenie wszystkich komponentów, sprawdzenie czy działają poprawnie i następnie przekazanie kontroli nad nimi systemowi operacyjnemu. Dzisiaj BIOS uznawany jest już za archaizm i istnieje wbudowany w laptopy i PC pod nazwą Legacy BIOS. Jego rolę przejął standard UEFI (Unified Extensible Firmware Interface) zaprojektowany i stworzony przez współprace Intela, AMD, Microsoftu i wielu innych producentów sprzętu komputerowego. Nowy standard miał znacząco poprawić wydajność wszystkich produkowanych komputerów, a także usunąć istniejące podatności w BIOS zaprezentowane podczas konferencji Black Hat w 2006 roku przez John’a Heasman’a. Błędy w architekturze BIOSu dawały możliwość podwyższenia uprawnień i czytania zawartości fizycznej pamięci przez zwykłego użytkownika.


Dlaczego bezpieczeństwo niskopoziomowe ma znaczenie?

BIOS czy UEFI to podstawowe i można by rzec, najważniejsze oprogramowanie firmware znajdujące się w naszych urządzeniach. Istnieje jednak dużo więcej kodu wpisanego przez producentów poszczególnych komponentów na ich wbudowaną pamięć. Każda karta graficzna, karta dźwiękowa, kamera, bateria zawiera swój własny firmware, którego struktura nie jest znana bez rozebrania komponentu i specjalistycznej analizy zawartości chipsetu.

Niestety firmware zazwyczaj projektowany jest bez wiedzy o bezpieczeństwie i bez brania pod uwagę aspektów związanych z próbą wstrzyknięcia czy manipulacji jego kodu.

Istnieją malware, które za pomocą infiltracji ukrywają się w kodzie firmware i nie są wykrywane nawet przez lata. Wszystko dlatego, że kod ten nie jest w żaden sposób weryfikowany za pomocą podpisu cyfrowego czy sumy kontrolnej.

Udane dostarczenie malware do kodu niskopoziomowego może spowodować, że na komputerze ofiary atakujący będą w stanie:

  • Szpiegować i monitorować aktywność użytkownika
  • Przechwytywać wpisywane znaki z klawiatury (key logger)
  • Wyciągać dane z pamięci systemu (eksfiltracja)
  • Zdalnie kontrolować komponenty urządzenia, a nawet system operacyjny
  • Zniszczyć urządzenie powodując, że nie będziemy w stanie jego uruchomić

Z poziomu infekcji firmware złośliwym oprogramowaniem najłatwiejsze jest zmienienie kodu w taki sposób, aby urządzenie nie bootowało się, czyli po prostu nie dało się go uruchomić. Sięgając do historii. Atak taki na skalę masową miał miejsce na Ukrainie, gdzie zarażone zostały konwertery sieciowe (serial-to-ethernet) w rozdzielniach dostarczających prąd do małych miast. Skutkiem ataku była 2 dniowa przerwa w dostawie prądu dla ponad 230 000 mieszkańców. Wszystko przez źle napisany firmware na mało znaczących urządzeniach sieciowych, co jak się okazało było dość znaczące dla działania całej sieci energetycznej.


Jakich podatności możemy się spodziewać?

Na przestrzeni ostatnich kilku lat najpopularniejszą podatnością UEFI stał się System Management Mode (SMM). Głównie dlatego, że komponent ten ma bezpośredni dostęp do systemu operacyjnego. Co ciekawe, SMM jest uruchamiany w trybie dzielącym go na sekcje, także jedna z nich interferuje z systemem operacyjnym, jednak z poziomu OS nie ma możliwości zobaczenia co dzieje się wewnątrz SMM. Wszystkie systemy AV, EDR czy inne działające na urządzeniach nie są więc w stanie wykryć zagrożeń związanych z infekcją SMM. Czyni go to idealnym celem ataków hackerskich i poszukiwaczy podatności.
Warto zaznaczyć również to, do czego implementacja SMM ma w ogóle służyć. Otóż jest to nic innego jak ochrona samego firmware UEFI. Zapobiega ona nadpisaniu przez użytkownika lub programu z poziomu OS kodu UEFI. Znaczy to tyle, że jeśli malware zechce ukryć się w kodzie firmware i przetrwać reinstalację systemu operacyjnego, SMM nie pozwoli mu na to. Między innymi to właśnie dlatego, SMM jest najczęstszym wektorem ataku na oprogramowanie sprzętowe na komputerach klasy PC i laptopach. Wiele ataków na firmware udaje się również ze względu na błędy w konfiguracji. Możecie powiedzieć, że w każdej domenie bezpieczeństwa konfiguracja systemów i “best practices” mają ogromne znaczenie. Jednak w firmware jest to kluczowe, gdyż pierwsza rzeczą jaką sprawdzają hackerzy są wpisy w rejestrze ustawiające poszczególne bity w konfiguracji UEFI. Dla przeciętnego użytkownika komputera, a nawet i dla administratorów, konfiguracja UEFI to czarna magia i nikt nigdy do niej nie zagląda. Problemem są podatności powstające przy okazji nowych wydań, gdzie producent sprzętu przekazując kod do innych vendorów, nie stosuje się do dobrych praktyk i nie sprawdza całej konfiguracji. W chipsecie UEFI istnieją setki bitów, które muszą być ustawione na poprawne wartości, aby cały system był odpowiednio zabezpieczony i odizolowany.
Dla przykładu. Aby chronić firmware przed napisaniem producent po wypuszczeniu kodu na rynek musi ustawić bit „BIOS Write Enable” na 0 w celu ochrony przed szkodliwą modyfikacją. Niestety, hackerzy mając odpowiednie narzędzia mogą ustawić ten bit na 1 samemu. Dlatego, dodatkowo istnieje kolejny bit „BIOS Lock Enable”, który musi być przez twórcę kodu poprawnie ustawiony i chronić dostęp do niskopoziomowej konfiguracji. Na to również hackerzy znaleźli bypass wyłączając chwilowo wewnętrzny procesor UEFI. Wprowadzono więc nowe ustawienie… itd.
Widać, dlaczego tak łatwo pomylić się w konfiguracji UEFI i jakie może przynieść to skutki.


Jak możemy się zabezpieczyć?

Zanim dojdziemy do kilku porad (jest ich naprawdę niewiele) musimy wyjaśnić jedną kwestię. Bezpieczeństwo Firmware to kwestia przede wszystkim producentów sprzętu komputerowego. Rolą przemysłu jest zaprojektowanie i stworzenie swoich produktów tak, aby były bezpieczne. Niestety producenci nie zawsze są w stanie sprostać temu zadaniu.

To co możemy zrobić, jako użytkownicy i administratorzy urządzeń komputerowych to:

  • Wyszukiwać aktualizacje oprogramowania firmware i aplikować je na swoje urządzenia. Producenci wypuszczają nowe wersje, aby załatać podatności albo po prostu zwiększyć wydajność i niezawodność. Problem w tym, że zazwyczaj nie powiadamiają o tym użytkowników, tylko podmioty OEM, które są ostatnim dostawcą sprzętu do klienta. W organizacji można jednak wprowadzić politykę sprawdzającą na stronie twórcy firmware najnowsze aktualizacje i instalować je samemu.
  • Nie używać hardware oraz urządzeń USB od niezaufanego dostawcy. Tyczy się to wszelkich komponentów podłączanych do komputera. Niektóre organizacje decydują się nawet na zakaz używania jakiegokolwiek urządzenia USB i fizycznie usuwają porty USB z komputerów.
  • Zakup sprzęt z wbudowaną dodatkową ochroną przeciwko szkodliwemu firmware. Istnieją na rynku urządzenia (nie chcemy promować producentów), które zawierają fabrycznie dodatkową ochronę, która w czasie uruchamiania BIOS/UEFI sprawdza jego obraz z oficjalnym hashem przetrzymywanym na serwerach producenta. Zapobiega to nieautoryzowanej modyfikacji kodu.
  • Sprawdzenie błędów w konfiguracji UEFI za pomocą darmowego oprogramowania Chipsec. Jest to projekt open-source prowadzony przez Intel.
  • Jeśli znamy się trochę na programowaniu to warto pobrać darmowe narzędzie Host Based Firmware Analyzer. Pozwala ono na przeprowadzenie testów penetracyjnych na wszelkiego rodzaju sterowniki, UEFI i rejestr systemowy.

Podsumowanie

Jeśli nie jesteśmy producentem sprzętu komputerowego, niewiele możemy zrobić w kwestii zabezpieczenia się przed atakami na firmware. Paradoksalnie, fakt, że na Świecie słychać o coraz to nowych atakach związanych z infekcją firmware, napawa optymizmem. Być może giganci tacy jak Intel, AMD, IBM czy Microsoft zainwestują w rozwój nowych technologii i wezmą pod uwagę bezpieczeństwo niskopoziomowe.