iBoot

iBoot
Deweloperzy Apple Inc.
System operacyjny Darwina , macOS , iPadOS i iOS
Platforma x86 , ARM
Typ Program rozruchowy
Licencja Własne oprogramowanie

iBoot to bootloader etapu 2 dla wszystkich produktów Apple . Zastępuje stary program ładujący, BootX . W porównaniu ze swoim poprzednikiem iBoot poprawia uwierzytelnianie przeprowadzane w łańcuchu rozruchowym.

W przypadku x86 macOS proces rozruchu rozpoczyna się od uruchomienia kodu zapisanego w zabezpieczonej pamięci rozruchowej UEFI ROM (pierwszy etap). Boot ROM ma dwa podstawowe zadania: zainicjować sprzęt systemowy i wybrać system operacyjny do uruchomienia ( POST i UEFI). W przypadku ARM macOS Boot ROM nie jest komponentem UEFI.

W przypadku systemu iOS proces rozruchu rozpoczyna się od uruchomienia kodu Boot ROM urządzenia. W systemach z procesorami S1 lub A9 lub wcześniejszymi procesorami z serii A, Boot ROM ładuje program ładujący niskiego poziomu (LLB), który ładuje iBoot. W systemach z nowszymi procesorami Boot ROM ładuje sam iBoot. Jeśli wszystko pójdzie dobrze, iBoot przystąpi do ładowania jądra iOS, a także reszty systemu operacyjnego. Jeśli LLB lub iBoot nie załaduje systemu iOS lub nie zweryfikuje systemu iOS, program ładujący przeskoczy do trybu DFU ( Aktualizacja oprogramowania układowego urządzenia ) ; w przeciwnym razie ładuje pozostałe jądra .

W systemie macOS x86 iBoot znajduje się w /System/Library/CoreServices/boot.efi . Po załadowaniu jądra i wszystkich sterowników niezbędnych do rozruchu program ładujący rozpoczyna procedurę inicjalizacji jądra. W tym momencie załadowana jest wystarczająca liczba sterowników, aby jądro mogło znaleźć urządzenie root.

Bezpieczeństwo pamięci

Firma Apple zmodyfikowała zestaw narzędzi kompilatora C , który jest używany do budowania iBoot, aby zwiększyć bezpieczeństwo pamięci od czasu iOS 14 . To ulepszenie ma na celu złagodzenie całych klas typowych luk w zabezpieczeniach związanych z uszkodzeniem pamięci, takich jak przepełnienie bufora , wykorzystanie sterty , luki w zabezpieczeniach związane z pomieszaniem typów i ataki typu „use-after-free” . Modyfikacje te mogą potencjalnie uniemożliwić atakującym pomyślne zwiększenie ich uprawnień w celu uruchomienia złośliwego kodu, takiego jak atak polegający na wykonaniu dowolnego kodu .

Linki zewnętrzne