Search K
Appearance
Appearance
Kernel extensions (Kexts) are packages with a .kext
extension that are loaded directly into the macOS kernel space, providing additional functionality to the main operating system.
Obviously, this is so powerful that it is complicated to load a kernel extension. These are the requirements that a kernel extension must meet to be loaded:
/Library/StagedExtensions
(requires the com.apple.rootless.storage.KernelExtensionManagement
grant).In Catalina it was like this: It is interesting to note that the verification process occurs in userland. However, only applications with the com.apple.private.security.kext-management
grant can request the kernel to load an extension: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli starts the verification process for loading an extension kextd
by sending using a Mach service.kextd
will check several things, such as the signaturesyspolicyd
to check if the extension can be loaded.syspolicyd
will prompt the user if the extension has not been previously loaded. syspolicyd
will report the result to kextd
kextd
will finally be able to tell the kernel to load the extensionIf kextd
is not available, kextutil
can perform the same checks.