macOS Kernel Extensions
Informazioni di base
Le estensioni del kernel (Kexts) sono pacchetti con estensione .kext
che vengono caricati direttamente nello spazio del kernel di macOS, fornendo funzionalità aggiuntive al sistema operativo principale.
Requisiti
Ovviamente, è così potente che è complicato caricare un'estensione del kernel. Questi sono i requisiti che una estensione del kernel deve soddisfare per essere caricata:
Quando si entra in modalità di ripristino, le estensioni del kernel devono essere autorizzate a essere caricate:
L'estensione del kernel deve essere firmata con un certificato di firma del codice del kernel, che può essere concesso solo da Apple. Chi esaminerà dettagliatamente l'azienda e i motivi per cui è necessario.
L'estensione del kernel deve anche essere notarizzata, Apple sarà in grado di controllarla per malware.
Quindi, l'utente root è l'unico che può caricare l'estensione del kernel e i file all'interno del pacchetto devono appartenere a root.
Durante il processo di caricamento, il pacchetto deve essere preparato in una posizione protetta non di root:
/Library/StagedExtensions
(richiede il permessocom.apple.rootless.storage.KernelExtensionManagement
).Infine, quando si tenta di caricarlo, l'utente riceverà una richiesta di conferma e, se accettata, il computer deve essere riavviato per caricarla.
Processo di caricamento
In Catalina era così: È interessante notare che il processo di verifica avviene in userland. Tuttavia, solo le applicazioni con il permesso com.apple.private.security.kext-management
possono richiedere al kernel di caricare un'estensione: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli avvia il processo di verifica per il caricamento di un'estensione
Parlerà con
kextd
inviando tramite un servizio Mach.
kextd
controllerà diverse cose, come la firma
Parlerà con
syspolicyd
per verificare se l'estensione può essere caricata.
syspolicyd
chiederà all'utente se l'estensione non è stata caricata in precedenza.
syspolicyd
riporterà il risultato akextd
kextd
potrà infine dire al kernel di caricare l'estensione
Se kextd
non è disponibile, kextutil
può eseguire gli stessi controlli.
References
Last updated