A Beginner’s Guide to Mac Management
Learn how Hexnode helps in efficiently managing Mac devices
Get fresh insights, pro tips, and thought starters–only the best of posts for you.
Jun 1, 2020
10 min read
Mac security threats are a top of mind concern for organizations as corporate employees are adopting Macs more and more to access the production infrastructure. Most of the Mac apps and installers use kernel extensions to extend the native capabilities of the OS effectively changing what happens deep inside it. But kernel extensions are dangerous in several ways as they lack sophisticated security protections. Apple, therefore, has taken strict measures to kick external agents out of doing nasty things at the kernel level. This blog post goes over how an MDM solution streamlines the process of whitelisting kernel extensions to ensure that all the provisions are in place for optimal Mac security and why system extensions are factoring out Mac kernel extensions for a better security posture.
Mac kernel extensions (KEXTs) provide the ability for developers to load modules of code at the macOS kernel level dynamically. They are fairly fundamental to extending the capabilities of Mac and deciding what Mac does for the smooth functioning of complex apps. For instance, some antivirus software needs access to the system memory and the computer hard disk. By allowing access to the internal kernel interfaces, Mac kernel extensions give provisions to modify the core operating system components which are required to run a specific app properly.
Many VPN clients, antivirus products, compliance software, DNS proxies, firewalls, audio software, USB drives, file syncing tools, communication software, and other Mac utilities use KEXTs. There are Mac kernel extensions to drive graphic cards, network connectivity, and many more great deals particularly used for security and management purposes. Once a KEXT is added, it grants access to every area of the Mac being a part of the kernel. There are some situations when an app won’t run properly if some extensions are not there and, in such cases, the app developers are compelled to write KEXTs for the apps. The scenarios include:

For device running macOS 10.13 or later, Apple has mandated explicit user consent for loading kernel extensions. This gave Mac users the entire control over deciding which extensions are allowed to run on their Macs preventing their machines from high-risk activities. With a goal to increase security, any newly installed KEXT needs to be authorized by an admin or non-admin user in order for it to load on the machine. If the user has not yet approved a kernel extension and if a request is made to load it, the load request will be denied and gives an error. This process of granting end users the full control to approve or deny extensions while installing software and thereby preventing kernel level attacks is known as User Approved Kernel Extension Loading (UAKEL).
There are some situations when the kernel extensions do not require approval which include:
When a user approves a kernel extension, some other associated kernel extensions also get whitelisted.
It’s important to note that the User Approved Kernel Extension Loading doesn’t guarantee that all the kernel extensions running on a machine are tamper-free and compatible. However, it will grant users more control to decide what all kernel extensions will load on a Mac and effectively reduce the chances for a system failure or malware attack.
There are two avenues to perform the kernel extensions’ approval. To get the kernel extensions whitelisted, you can either use an MDM or approve locally from the Mac device.

It’s not mandatory to enroll the Mac to an MDM to approve kernel extensions. The end users can easily approve them from the Mac system preferences when they are notified to do so while installing the application. The process is as below:
The method doesn’t require a third-party MDM and is simple if you have only a handful of devices to approve the kernel extensions to run on. But for enterprise deployments where it is necessary to manage approvals for a large fleet of devices a more scalable solution is required.
A Mac device enrolled in a Mobile Device Management (MDM) solution offers Mac kernel extension whitelisting functionality. To help organizations and schools managing Mac devices, Apple has provided the option to centrally approve kernel extensions orchestrated via an MDM policy using Apple’s MDM or a third-party MDM solution like Hexnode. This feature allows Mac admins to prevent loading third-party extensions on managed devices. Mac admins can use the Kernel extensions policy provided by Apple to:
Mac kernel extension policy applies to devices running macOS 10.13.2 and newer. Mac administrators can optionally allow users to override kernel extensions, add team identifiers, and whitelist kernel extensions. Apple has made different identifying criteria to help to whitelist kernel extensions easily. The two sets of identifying criteria include:
There are three ways to use these identifying parameters to allow KEXTs:
Kernel extensions must be bug-free as any errors occurring to it can affect the entire system. Considering this, Apple has started deprecating some kernel extensions including KAUTH, IOHIDFamily, IOUSBFamily, Network Filter, etc. With the release of macOS Catalina, Apple has introduced system extensions as the modern replacement to kernel extensions. In macOS Catalina 10.15, system extensions run alongside kernel extensions. However, with the release of 10.15.4, system extensions will completely replace kernel extensions and devices running macOS 10.15.4 will not be supporting kernel extensions.

Apple’s aim is to improve reliability, security and offer a modern approach to extension distribution. Though KEXTs still do work on macOS Catalina, Apple has deprecated some of the kernel extensions. So, developers should be aware of the transition and should work to move their kernel extensions to the available system extension frameworks.
One of the major benefits of system extensions over kernel extensions is that system extensions work in the user space in place of the kernel extensions which runs in the kernel space. System extensions give more security without requiring kernel-level access. This ensures that the system extensions don’t compromise the stability of macOS or jeopardize the built-in security of the Mac operating system meaning they are less harmful. System extensions with macOS Catalina can be of three types:
System extensions can be easily upgraded by updating the applications and removed by deleting the application from the device.
Mac administrators who install extensions for their apps and app developers who develop such extensions have to prepare for this change to Mac kernel extensions and the effective transition to system extensions which are a much secure alternative.