macOS Kernel Extensions
Osnovne informacije
Kernel ekstenzije (Kexts) su paketi sa ekstenzijom .kext
koji se direktno učitavaju u macOS kernel prostor, pružajući dodatne funkcionalnosti 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:
Prilikom ulaska u režim oporavka, kernel ekstenzije moraju biti dozvoljene za učitavanje:
Kernel ekstenzija mora biti potpisana kernel potpisnim sertifikatom, koji može dodeliti samo Apple. Ko će detaljno pregledati kompaniju i razloge zašto je potrebno.
Kernel ekstenzija takođe mora biti notarizovana, Apple će moći da je proveri na prisustvo malvera.
Zatim, root korisnik je taj koji može učitati kernel ekstenziju i fajlovi 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, prilikom pokušaja učitavanja, korisnik će dobiti zahtev za potvrdu i, ako se prihvati, računar mora biti restartovan da bi se učitao.
Proces učitavanja
U Catalina-i je bilo ovako: Zanimljivo je napomenuti da se proces 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 korišćenjem Mach servisa.
kextd
će proveriti nekoliko stvari, kao što je potpis
Razgovaraće sa
syspolicyd
-om da proveri da li se ekstenzija može učitati.
syspolicyd
će zatražiti od korisnika potvrdu ako ekstenzija prethodno nije učitana.
syspolicyd
će prijaviti rezultatkextd
-u
kextd
će na kraju moći da kaže kernelu da učita ekstenziju
Ako kextd
nije dostupan, kextutil
može obaviti iste provere.
References
Last updated