macOS Kernel Extensions
Osnovne informacije
Kernel ekstenzije (Kexts) su paketi sa .kext
ekstenzijom koji se učitavaju direktno u macOS kernel prostor, pružajući dodatnu funkcionalnost glavnom operativnom sistemu.
Zahtevi
Očigledno, ovo je toliko moćno da je komplikovano učitati kernel ekstenziju. Ovo su zahtevi koje kernel ekstenzija mora ispuniti da bi bila učitana:
Kada se ulazi u režim oporavka, kernel ekstenzije moraju biti dozvoljene za učitavanje:
Kernel ekstenzija mora biti potpisana sa sertifikatom za potpisivanje kernel koda, koji može biti dodeljen samo od strane Apple-a. Ko će detaljno pregledati kompaniju i razloge zašto je to potrebno.
Kernel ekstenzija takođe mora biti notarizovana, Apple će moći da je proveri na malver.
Zatim, root korisnik je taj koji može učitati kernel ekstenziju i datoteke unutar paketa moraju pripadati root-u.
Tokom procesa učitavanja, paket mora biti pripremljen na zaštićenoj lokaciji koja nije root:
/Library/StagedExtensions
(zahtevacom.apple.rootless.storage.KernelExtensionManagement
dozvolu).Na kraju, kada se pokuša učitati, korisnik će dobiti zahtev za potvrdu i, ako bude prihvaćen, računar mora biti ponovo pokrenut da bi se učitao.
Proces učitavanja
U Catalina je to bilo ovako: Zanimljivo je napomenuti da se proceso verifikacije dešava u userland-u. Međutim, samo aplikacije sa com.apple.private.security.kext-management
dozvolom mogu zatražiti od kernela da učita ekstenziju: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli pokreće proces verifikacije za učitavanje ekstenzije
Razgovaraće sa
kextd
slanjem putem Mach servisa.
kextd
će proveriti nekoliko stvari, kao što su potpis
Razgovaraće sa
syspolicyd
da bi proverio da li se ekstenzija može učitati.
syspolicyd
će pitati korisnika ako ekstenzija nije prethodno učitana.
syspolicyd
će izvestiti rezultatkextd
kextd
će konačno moći da kaže kernelu da učita ekstenziju
Ako kextd
nije dostupan, kextutil
može izvršiti iste provere.
Reference
Last updated