Proces uruchamiania systemu (Boot Process)

Example

Opis jak iPhone, iPad (lub inne urządzenie Apple z iOS) uruchamia system operacyjny krok po kroku. To tzw. Secure Boot Chain – krytyczny element bezpieczeństwa, który zapewnia, że każdy etap uruchamiania pochodzi z zaufanego źródła (Apple) i nie został zmodyfikowany. Secure Boot Chain gwarantuje, że każdy kolejny komponent uruchamiany podczas bootowania jest:

  • kryptograficznie podpisany przez Apple,
  • zweryfikowany przez poprzedni komponent.

M1 logo

Boot ROM (pamięć tylko do odczytu)

To pierwszy kod uruchamiany zaraz po włączeniu urządzenia. Jest zapisany na stałe w chipie procesora i nie może być zmieniony. Sprawdza autentyczność następnego kroku: LLB (Low-Level Bootloader). Z punktu widzenia exploitacji: błędy w BootROM są niełatalne (np. checkm8 dla A5–A11), bo ROM jest niemodyfikowalny. Dlatego BootROM to święty Graal jailbreaków.


M1 logo

Low Level Bootloader (LLB)

Pierwszy komponent uruchamiany z zewnętrznej pamięci NAND (ale zweryfikowany przez Boot ROM). Ten kod weryfikuje podpisy kryptograficzne i dba o bezpieczeństwo kolejnego etapu. Może aktywować DFU (Device Firmware Upgrade) – tryb awaryjny, jeśli coś pójdzie nie tak. LLB w starszych urządzeniach był czasem celem exploitów (np. w limera1n), ale teraz jest mocno zabezpieczony.


M1 logo

iBoot

Główna funkcja: załadować i zweryfikować jądro iOS (czyli system operacyjny). To najważniejszy element uruchamiania – jeśli wszystko się zgadza, przechodzi do iOS. iBoot również bywał celem ataków (np. exploitów tfp0, jailbreaks), ale Apple poprawiło sandboxing i łatanie.


M1 logo

iOS (System Operacyjny)

Jeśli wszystkie składniki systemu zostały poprawnie zweryfikowane kryptograficznie w łańcuchu rozruchowym (Secure Boot Chain), iBoot ładuje podpisany obraz jądra systemu (kernelcache) i rozpoczyna właściwe uruchamianie systemu operacyjnego iOS.

W pierwszej kolejności uruchamiany jest kernel XNU – jądro systemu Apple, które odpowiada za zarządzanie pamięcią, procesami, dostępem do sprzętu oraz kontrolą uprawnień. Po zainicjowaniu podstawowych mechanizmów (m.in. sandbox, AMFI, KTRR), kernel uruchamia proces launchd – główny init systemu iOS (odpowiednik systemowego „PID 1”).
Następnie uruchamiane są kolejne procesy systemowe (demonki, np. installd, mobiled, powerd) oraz interfejs graficzny użytkownika poprzez proces SpringBoard. Dopiero po tej fazie możliwe jest uruchamianie aplikacji użytkownika.
Cały system działa w środowisku zbudowanym na:
  • sandboxie aplikacyjnym (każda aplikacja działa w osobnym kontenerze),
  • AMFI (Apple Mobile File Integrity – egzekwowanie podpisów kodu),
  • KTRR / PAC / PPL / JOP/ROP mitigations – ochrona pamięci, wskaźników, przestrzeni kernela,
  • entitlements – deklaratywne uprawnienia aplikacji (np. dostęp do kamery, Bluetooth, itd.),
  • mechanizmach userlandowych (SpringBoard, UIKit, TCC) kontrolujących GUI i dostęp do zasobów użytkownika.


M1 logo

Secure Enclave (SEP) – niezależny współprocesor

To specjalny, odseparowany koprocesor bezpieczeństwa. Przechowuje klucze, dane Face ID, Touch ID, szyfrowanie itp. Działa niezależnie od głównego systemu i jest odporny na wiele ataków. Ataki typu SEPROM, SEP exploits są bardzo zaawansowane i rzadkie – ale były wykorzystywane np. w Pegasusie (NSO Group). Działa równolegle, ale niezależnie od CPU głównego o obsługuje: Touch ID / Face ID, Szyfrowanie danych (np. FileVault, iMessage), Klucze prywatne (Secure Key Store).

System podpisów Apple (SEP + Bootchain) opiera się na hierarchii kluczy prywatnych niedostępnych nigdzie poza Apple. Nawet Apple nie może odczytać danych z Secure Enclave jeśli nie znasz hasła (co było kluczowe np. w sprawach FBI vs Apple).


Tryby specjalne

DFU Mode - Gdy BootROM nie może zweryfikować LLB lub na żądanie użytkownika (np. kombinacja klawiszy).
Recovery Mode - Gdy iBoot nie może załadować iOS lub aktualizacji.


References

  • Bezpieczeństwo aplikacji mobilnych (iOS) - Sekurak.Academy