Bezpieczeństwo BIOS-u, UEFI oraz złośliwe oprogramowanie typu bootkit
Spis treści
- Podstawowy system wejścia/wyjścia (ang. Basic Input/Output System, BIOS)
- Unified Extensible Firmware Interface (UEFI)
- Trusted Platform Module (TPM)
- Platform Trust Technology (PTT) i Firmware Trusted Platform Module (fTPM)
- Ustawienia Trusted Platform Module (TPM) w systemie Windows
- Ustawienia Trusted Platform Module (TPM) w systemie Linux
- Złośliwe programy typu bootkit
Podstawowy system wejścia/wyjścia (ang. Basic Input/Output System, BIOS)
Podstawowym obowiązkiem BIOS jest inicjalizacja komponentów sprzętowych oraz wczytanie systemu operacyjnego. Oprogramowanie układowe BIOS należy do kategorii programów typu firmware. Programy tego rodzaju są dedykowane do obsługi określonych komponentów sprzętowych. Kod systemu BIOS przechowywany jest na pamięci typu EEPROM lub Flash.
Istnieje klasyczny BIOS (przeważnie 16-bitowy) oraz jego następca nazywany UEFI działający w trybie chronionym (32 lub 64-bitowym).
Rozruch w trybie zgodności (ang. legacy) rozpoczyna się przez wykonanie małego bloku kodu typu firmware, który jest logicznie oddzielony od pozostałych modułów BIOS. Blok początkowy odpowiada za weryfikację integralności pozostałej części, którą wczytuje i uruchamia. Dalej następuje Power-On-Self-Test (POST) podczas którego inicjalizowane są podstawowe komponenty sprzętowe takie jak m.in. procesor czy pamięć.
Po inicjalizacji podstawowych elementów następują próby wykrycia urządzeń peryferyjnych, aby załadować i uruchomić moduły BIOS odpowiadające za ich obsługę.
Dalej następuje skanowanie w poszukiwaniu nośników danych, które mogą zawierać mały program typu bootloader. Jeśli sektor zerowy dysku, nazywany też Master Boot Record (MBR), zawiera poprawny program rozruchowy, to jego kod zostaje wykonany.
Po inicjalizacji wstępnej jądra systemu przez bootloader następuje przekazanie sterowania do systemu operacyjnego.
Unified Extensible Firmware Interface (UEFI)
Uruchomienie urządzenia posiadającego UEFI z perpektywy wysokiego poziomu abstrakcji można podzielić na pięć etapów.
- SEC (Security) — uruchomienie fragmentu kodu, który weryfikuje integralność i przez to działa jako źródło zaufania (ang. root of trust) w systemie komputerowym.
- PEI (Pre–EFI) — inicjalizacja kluczowych komponentów takich jak m.in. procesor czy płyta główna.
- DXE (Driver eXecution Environment) — wyszukiwanie i inicjalizacja sterowników sprzętu, aby był on dostępny już podczas rozruchu.
- BDS (Boot Device Selection) — inicjalizacja systemu wejścia/wyjścia (np. konsoli tekstowej) oraz uruchomienie programu rozruchowego (ang. bootloader) z sektora zerowego dysku (Master Boot Record) lub nośnika zawierającego tablicę partycji GUID (GPT).
- RT (Run Time) — przekazanie sterowania do systemu operacyjnego. Tutaj system operacyjny ma dostęp do UEFI.
Trusted Platform Module (TPM)
Źródło zaufania (ang. root of trust) w systemie komputerowym można porównać do leśnego źródła z wodą w którym znajduje się martwe i chore stworzenie lub niebezpieczna substancja. Wszyscy czerpiący niżej źródła są narażeni na infekcję lub chorobę. Mogą próbować oczyszczać wodę, ale będzie to trudne, ponieważ nie wiedzą dokładnie co jest w źródle. BIOS/UEFI jest uruchamiane z wysokimi uprawnieniami oraz przed głównym systemem operacyjnym. Właśnie z tego powodu bardzo ważna jest weryfikacja integralności kodu, który ma zostać wykonany.
TPM to komponent, którego stan jest odizolowany od systemu operacyjnego gospodarza. Jeśli TPM jest pojedynczym układem, to komunikacja pomiędzy TPM, a systemem operacyjnym następuje przez interfejs LPC. TPM posiada własny procesor oraz pamięć RAM, ROM i Flash.
Platform Trust Technology (PTT) i Firmware Trusted Platform Module (fTPM)
TPM nie zawsze jest fizycznie oddzielnym komponentem w urządzeniu. Rozwiązanie PTT/fTPM to umieszczenie modułu zabezpieczeń w firmware. Pozwala to na korzystanie z funkcjonalności TPM na urządzeniach, które nie mogą posiadać fizycznego, osobnego komponentu z przyczyn technicznych. W tego rodzaju implementacjach w celu skorzystania z TPM procesor przechodzi w specjalny stan.
Ustawienia Trusted Platform Module (TPM) w systemie Windows
W celu sprawdzenia ustawień TPM w systemie Windows należy przejść do Ustawienia » Prywatność i zabezpieczenia » Zabezpieczenia Windows » Zabezpieczenia urządzenia » Procesor zabezpieczeń.
Ustawienia Trusted Platform Module (TPM) w systemie Linux
W celu instalacji narzędzi TPM w systemie Linux (Ubuntu Desktop) można użyć polecenia sudo apt install tpm-tools
.
Później w celu weryfikacji dostępności TPM można użyć polecenia tpm_version
.
Złośliwe programy typu bootkit
Implant w kodzie wykonywanym przed załadowaniem systemu operacyjnego określany jest terminem bootkit. Program rozruchowy jest źródłem zaufania (ang. root of trust) całego systemu komputerowego. Infekcja na wczesnym etapie mocno utrudnia wykrycie złośliwego kodu, a rezultaty prezentowane przez zwykłe aplikacje uruchamiane przez użytkownika nie są godne zaufania w takiej sytuacji. Infekcja firmware może też spowodować, że podmioty zagrażające (ang. threat actor) zachowają trwały dostęp (ang. persistence) do urządzenia nawet w przypadku ponownej instalacji systemu operacyjnego. Warto dodać, że infekowany może być nie tylko program rozruchowy, ale też firmware urządzeń peryferyjnych.
Nie mniej ważne jest zapewnienie bezpieczeństwa fizycznego, aby zminimalizować ryzyko ataku typu evil maid (pol. złośliwa pokojówka), który może skutkować podmianą programu rozruchowego na zainfekowany, aby np. zdobyć hasło do zaszyfrowanego dysku twardego.
Przedstawione rozwiązania mogą pomóc podnieść poziom zabezpieczeń Twojego urządzenia, ale nie są one żadnym panaceum[9] (łac. panacea).
Wykaz literatury
- [1] https://www.iso.org/standard/65998.html [dostęp: 2025-01-05]
- [2] https://attack.mitre.org/techniques/T1542/003/ [dostęp: 2025-01-05]
- [3] https://trustedcomputinggroup.org/wp-content/uploads/Trusted-Platform-Module-Summary_04292008.pdf [dostęp: 2025-01-05]
- [4] https://learn.microsoft.com/en-us/windows/security/book/ [dostęp: 2025-01-05]
- [5] https://learn.microsoft.com/en-us/windows/security/operating-system-security/system-security/secure-the-windows-10-boot-process [dostęp: 2025-01-05]
- [6] https://trustedcomputinggroup.org/work-groups/trusted-platform-module/ [dostęp: 2025-01-05]
- [7] https://attack.mitre.org/tactics/TA0003/ [dostęp: 2025-01-05]
- [8] https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2019.pdf [dostęp: 2025-01-05]
- [9] Panaceum to nazwa lekarstwa na wszystkie choroby, którego poszukiwali alchemicy.