ethical.blue Magazine

// Cybersecurity clarified.

Bezpieczeństwo BIOS-u, UEFI oraz złośliwe oprogramowanie typu bootkit

...
Computer Viruses // // Dawid Farbaniec
Ostatnia modyfikacja:

Spis treści

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).

UEFI or Legacy
Ustawienia UEFI na ekranie konfiguracyjnym BIOS

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.

UEFI Boot
Etapy rozruchu (ang. boot) przy zastosowaniu rozwiązania 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.

Trusted Platform Module
Trusted Platform Module (TPM) jako oddzielny fizycznie układ
Trusted Platform Module
Podstawowe elementy Trusted Platform Module (TPM)

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.

Platform Trust Technology
Ustawienia Platform Trust Technology na ekranie konfiguracyjnym BIOS

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ń.

Trusted Platform Module (Windows)
Ustawienia Trusted Platform Module (TPM) w systemie Windows
Trusted Platform Module (Windows)
Szczegóły Trusted Platform Module (TPM) w systemie Windows

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.

Trusted Platform Module (Linux)
Ustawienia Trusted Platform Module (TPM) w systemie Linux (Ubuntu Desktop)

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. [1] https://www.iso.org/standard/65998.html [dostęp: 2025-01-05]
  2. [2] https://attack.mitre.org/techniques/T1542/003/ [dostęp: 2025-01-05]
  3. [3] https://trustedcomputinggroup.org/wp-content/uploads/Trusted-Platform-Module-Summary_04292008.pdf [dostęp: 2025-01-05]
  4. [4] https://learn.microsoft.com/en-us/windows/security/book/ [dostęp: 2025-01-05]
  5. [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. [6] https://trustedcomputinggroup.org/work-groups/trusted-platform-module/ [dostęp: 2025-01-05]
  7. [7] https://attack.mitre.org/tactics/TA0003/ [dostęp: 2025-01-05]
  8. [8] https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2019.pdf [dostęp: 2025-01-05]
  9. [9] Panaceum to nazwa lekarstwa na wszystkie choroby, którego poszukiwali alchemicy.