System- und Kernel-Erweiterungen in macOS
macOS 10.15 (oder neuer) ermöglicht es Entwicklern die Fähigkeiten von macOS zu erweitern, indem Systemerweiterungen, die im Benutzerspeicherplatz anstatt auf Kernel-Ebene ausgeführt werden, installiert und verwaltet werden. Durch die Ausführung im Benutzerspeicherplatz erhöhen Systemerweiterungen die Stabilität und Sicherheit von macOS. Obwohl kexts per se vollen Zugriff auf das gesamte Betriebssystem haben, werden Erweiterungen, die im Benutzerspeicherplatz laufen, nur die Zugriffsrechte gewährt, die sie zum Ausführen ihrer angegebenen Funktion benötigen.
Systemerweiterungen unterstützen eine zuverlässige Verwaltung via MDM, darunter die Fähigkeit, das Laden aller Erweiterungen eines bestimmten Entwicklers oder eines bestimmten Typs (etwa Netzwerkerweiterungen) ohne Eingreifen des Benutzers zu erlauben. Optional kann die MDM-Lösung es Benutzern untersagen, das Laden ihrer eigenen Systemerweiterungen zuzulassen.
Von macOS 11.3 bis macOS 11.6.4 wirken sich Änderungen an einem Systemerweiterungsprofil direkt auf den Status einer Erweiterung aus. Wenn beispielsweise die Erlaubnis für eine Erweiterung aussteht und ein Konfigurationsprofil, das die Erweiterung erlaubt, gepusht wird, darf diese Erweiterung geladen werden. Wird im umgekehrten Fall eine Erlaubnis entzogen, wird das Laden der Systemerweiterung widerrufen und sie wird markiert, um beim nächsten Neustart des Mac gelöscht zu werden. Wenn eine Systemerweiterung versucht, den Ladevorgang selbst rückgängig zu machen, erscheint ein interaktives Dialogfenster für die Authentifizierung, das die Eingabe der Anmeldedaten eines Administrators erfordert, damit das Widerrufen des Ladevorgangs autorisiert werden kann.
In macOS 12.0.1 (oder neuer) ermöglicht ein Datenverzeichnis namens RemovableSystemExtensions
in der Payload „Systemerweiterungen“ MDM-Administratoen festzulegen, welche Apps ihr eigenen Systemerweiterungen entfernen können. Die Systemerweiterungen können ohne lokale Administrator-Authentifizierung entfernt werden. Dies ist besonders nützlich für Hersteller, die automatisierte Deinstallationsprogramme für ihre Apps bereitstellen.
Kernel-Erweiterungen
In macOS 11 (oder neuer) können Kernel-Erweiterungen (kexts) anderer Anbieter nach Aktivierung nicht bei Bedarf in den Kernel geladen werden. Sie erfordern die Benutzereinwilligung und den Neustart des macOS, um die Änderungen in den Kernel zu laden, und sie setzen auch voraus, dass das sichere Starten mit „Reduzierte Sicherheit“ auf einem Mac mit Apple Chips konfiguriert wird.
Entwickler können Frameworks verwenden, einschließlich DriverKit und NetworkExtension, um USB-Treiber und Treiber für Bedienoberflächen, Tools für die Endpunktsicherheit (etwa Agents zum Verhindern von Datenverlusten oder andere Endpunkt-Agents) sowie VPN- und Netzwerktools, ohne für diese kexts schreiben zu müssen. Sicherheits-Agents anderer Anbieter sollten nur dann verwendet werden, wenn sie sich diese APIs zunutze machen oder über einen festen Plan für die Überleitung und Abkehr von Kernel-Erweiterungen verfügen.
Wichtig: Kexts werden für macOS nicht mehr empfohlen. Kexts gefährden die Integrität und Zuverlässigkeit des Betriebssystems. Deshalb sollten Benutzer Lösungen vorziehen, die keine Erweiterung des Kernels erfordern, und stattdessen Systemerweiterungen verwenden.
Kexts auf einem Intel-basierten Mac oder einem Mac mit Apple Chips und macOS 11 (oder neuer) hinzufügen
Wenn du Kernel-Erweiterungen verwenden musst, überprüfe die Genehmigungsmethoden basierend auf dem Registrierungstyp.
MDM-Registrierungstyp | Einwilligungsmethode | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Nicht registriert Benutzerregistrierung | Wenn eine neue kext installiert wird und versucht wird, sie zu laden, muss der Benutzer im Warnfenster an folgender Stelle einen Neustart einleiten:
Dieser Neustart leitet die Neuerstellung der AuxKC ein, bevor der Kernel gestartet wird. | ||||||||||
Geräteregistrierung Automatische Geräteregistrierung | Immer wenn eine neue kext installiert wird und versucht wird sie zu laden, muss mit einer dieser beiden Methoden ein Neustart initiiert werden:
Hinweis: Zuerst muss von der MDM-Lösung ein Profil mit einer kext-Erlaubnisliste installiert werden, in der die kext angegeben ist. macOS 11.3 (oder neuer) erlaubt es der MDM-Lösung optional, dem Benutzer mitzuteilen, dass er den Neustart bei Gelegenheit vollständig ausführen kann. |
Weitere Schritte, um Kexts auf einem Mac mit Apple Chips hinzuzufügen
Beim Hinzufügen von Kernel-Erweiterungen auf einem Mac mit Apple Chips müssen weitere Schritte durchgeführt werden.
MDM-Registrierungstyp | Einwilligungsmethode | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Nicht registriert | Die kext-Verwaltung durch den Benutzer erfordert einen Neustart im RecoveryOS, damit die Sicherheitseinstellungen herabgestuft werden können. Der Benutzer muss den Ein-/Ausschalter gedrückt halten, um einen Neustart im RecoveryOS auszuführen und sich als Administrator zu authentifizieren. Nur wenn das RecoveryOS durch Drücken des Ein-/Ausschalters gestartet wird, akzeptiert die Secure Enclave die Änderung der Richtlinie. Der Benutzer muss dann das Feld „Reduzierte Sicherheit“ und die Option „Verwaltung von Kernel-Erweiterungen verifizierter Entwickler durch Benutzer erlauben“ aktivieren und den Mac erneut starten. | ||||||||||
Benutzerregistrierung | Der Benutzer muss einen Neustart im RecoveryOS ausführen, um die Sicherheitseinstellungen herabstufen zu können. Der Benutzer muss den Ein-/Ausschalter gedrückt halten, um einen Neustart im RecoveryOS auszuführen und sich als lokaler Administrator zu authentifizieren. Nur wenn das RecoveryOS durch Drücken des Ein-/Ausschalters gestartet wird, akzeptiert die Secure Enclave die Änderung der Richtlinie. Der Benutzer muss dann „Reduzierte Sicherheit“ auswählen, die Option „Verwaltung von Kernel-Erweiterungen verifizierter Entwickler durch Benutzer erlauben“ aktivieren und den Mac erneut starten. | ||||||||||
Geräteregistrierung | Die MDM-Lösung sollte den Benutzer informieren, dass er einen Neustart im RecoveryOS ausführen muss, um die Sicherheitseinstellungen herabstufen zu können. Der Benutzer muss den Ein-/Ausschalter gedrückt halten, um einen Neustart im RecoveryOS auszuführen und sich als Administrator zu authentifizieren. Nur wenn das RecoveryOS durch Drücken des Ein-/Ausschalters gestartet wird, akzeptiert die Secure Enclave die Änderung der Richtlinie. Der Benutzer muss dann „Reduzierte Sicherheit“ auswählen, die Option „Fernverwaltung von Kernel-Erweiterungen und automatische Softwareupdates erlauben“ aktivieren und den Mac erneut starten. In der Herstellerdokumentation zur jeweiligen MDM-Lösung wird beschrieben, ob diese Funktion für die verwendeten Geräte unterstützt wird. | ||||||||||
Automatische Geräteregistrierung (Die Mac-Seriennummer muss in Apple School Manager, Apple Business Manager oder Apple Business Essentials erscheinen und der Mac muss bei einer MDM-Lösung registriert sein, die mit dem Dienst verknüpft ist.) | MDM-Lösungen können dies automatisch verwalten. In der Herstellerdokumentation zur jeweiligen MDM-Lösung wird beschrieben, ob diese Funktion für die verwendeten Geräte unterstützt wird. |
Kernel-Erweiterungen mit Systemintegritätsschutz
Wenn der Systemintegritätsschutz (SIP) aktiviert ist, wird die Signatur jeder kext überprüft, bevor sie in die AuxKC integriert wird.
Wenn SIP deaktiviert ist, wird die kext-Signatur nicht erzwungen.
Dieser Ansatz erlaubt Abläufe mit permissiver Sicherheit für Entwickler oder Benutzer, die nicht am Apple Developer-Programm teilnehmen, um kexts zu testen, bevor sie signiert werden.