> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Legacy System Extensions Alerts

> Understand legacy system extension deprecation alerts in Iru Endpoint. Identify affected kernel extensions and plan migration to modern system extensions.

<Callout icon="apple" color="#B84A7A" iconType="regular">This article covers legacy system extensions on Mac computers</Callout>

### Changes in macOS Catalina Version 10.15.4

Starting with **macOS 10.15.4**, Apple has begun alerting end users if their Mac has a Kernel Extension that leverages deprecated KPIs (Kernel Programming Interfaces).

<Note>
  Apple has begun referring to deprecated Kernel Extensions as "**Legacy System Extensions**" in certain macOS interfaces and support documentation.
</Note>

An example of this alert can be seen below.

### Prevent this Alert

To prevent your users from seeing this notification you'll need to **allow any relevant Kernel Extension** via Iru.

<Steps>
  <Step title="Identify Kernel Extensions">
    Determine the Kernel Extension(s) causing the alerts and gather a list of all the developer names being presented to your end users.
  </Step>

  <Step title="Get Developer Information">
    Determine the Kernel Extension developer's Team ID (and optionally KEXT bundle ID). The following Iru Endpoint support article will walk you through collecting this information from a Mac receiving the alert, as well as how to create the required KEXT approval profile in Iru.
  </Step>

  <Step title="Work with Vendors">
    We also highly encourage you to work with any Software Vendors that are impacted by this change and request that they move their Kernel Extension to a System Extension equivalent.
  </Step>
</Steps>

### What is a Kernel Extension?

Essentially, KEXTs (Kernel Extensions) are bundles of code that let developers extend the capabilities of the kernel. These Kernel Extensions use Programming Interfaces, known as KPIs (Kernel Programming Interfaces). Because the kernel is in charge of everything on the system, and because all KEXTs are given kernel privileges, these extensions are very powerful. Due to this high level of privilege, these extensions can cause what is known as "Kernel Panics"; errors that occur in the macOS Kernel that are unrecoverable and require a system reboot.

### What is a System Extension?

Like KEXTs, System Extensions extend the functionality of the operating system. However, unlike KEXTs, System Extensions run in userland (Userspace), outside of the Kernel, thus free from many of the restrictions developers had to face while coding in the Kernel (many of which we'll discuss in the next section). This significant departure from KEXT development dramatically improves the reliability of macOS and nearly eliminates the chance of an unrecoverable error. System Extensions introduced in macOS Catalina replace certain types of Kernel Extensions and KPIs. Kernel Extensions that use one or more of the following KPIs that have System Extension equivalents will cause the aforementioned alert.

| **KPI**                 | **System Extension Replacement**                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| KAUTH                   | [EndpointSecurity](https://developer.apple.com/documentation/endpointsecurity)                                                                                                                               |
| Network Filter          | [NetworkExtension](https://developer.apple.com/documentation/networkextension)                                                                                                                               |
| IOHIDFamily             | [HIDDriverKit](https://developer.apple.com/documentation/hiddriverkit)                                                                                                                                       |
| IOUSBFamily             | [USBDriverKit](https://developer.apple.com/documentation/usbdriverkit)                                                                                                                                       |
| USB Networking          | [NetworkingDriverKit](https://developer.apple.com/documentation/networkingdriverkit)                                                                                                                         |
| USB Serial              | [USBSerialDriverKit](https://developer.apple.com/documentation/serialdriverkit)                                                                                                                              |
| USB Vendor Specific IPC | [USBDriverKit](https://developer.apple.com/documentation/usbdriverkit) / [IOUSBHost](https://developer.apple.com/documentation/iousbhost) / [DriverKit](https://developer.apple.com/documentation/driverkit) |

**About Legacy System Extensions**

[https://support.apple.com/en-us/HT210999](https://support.apple.com/en-us/HT210999)

**Additional information on deprecated Kernel Extensions**

[https://developer.apple.com/support/kernel-extensions/](https://developer.apple.com/support/kernel-extensions/)

**Additional information on System Extensions**

[https://developer.apple.com/system-extensions/](https://developer.apple.com/system-extensions/)
