Kernel-Erweiterung
Einleitung zu KEXTs für macOS
KEXTs (Kernel Extensions) sind Module, die tief in das macOS-Betriebssystem integriert werden, um dessen Funktionalität zu erweitern oder spezielle Hardware- und Systemanforderungen zu unterstützen. Sie agieren auf Kernel-Ebene – dem „Nervensystem“ des Betriebssystems – und ermöglichen dadurch den Zugriff auf Ressourcen und Funktionen, die auf Benutzerebene (Userspace) nicht direkt erreichbar sind.
Wofür benötigt man KEXTs?
- Unterstützung für nicht-native Hardware, z. B. spezielle Grafikkarten, Netzwerkkarten oder externe Speichergeräte.
- Implementierung von Dateisystemen (z. B. NTFS, FUSE), die standardmäßig in macOS nicht verfügbar sind.
- Erweiterung der Netzwerkfunktionen, etwa für VPN-Protokolle oder virtuelle Netzwerkschnittstellen.
- Integration von Sicherheitslösungen und -prüfungen auf Kernel-Ebene.
- Entwicklung von Virtualisierungsplattformen und deren Interaktion mit dem Kernel.
Vorteile von KEXTs
- Tiefer Systemzugriff: Ermöglicht Funktionen, die ohne direkten Kernel-Zugriff nicht realisierbar wären.
- Hardware-Kompatibilität: Geräte und Funktionen, die von macOS nicht standardmäßig unterstützt werden, können durch KEXTs vollständig integriert werden.
- Flexible Erweiterbarkeit: Entwickler können maßgeschneiderte Lösungen für spezifische Anforderungen erstellen.
Konfiguration und Anwendung der Richtlinie
Allgemein
Folgende Konfigurationsoptionen stehen in der Richtlinie zur Verfügung:
[ ] Benutzern ohne Administratorrechte erlauben, Kernel-Erweiterungen in den Einstellungen für Sicherheit und Datenschutz zu genehmigen
[ ] Benutzer kann zusätzliche Kernel-Erweiterungen genehmigen
[ ] Alle Kernel-Erweiterungen erlauben, die mit den folgenden Teamkennungen signiert sind
Grundsätzlich können alle KEXTs mit derselben Teamkennung erlaubt werden. Alternativ können im nächsten Abschnitt einzelne Erweiterungen explizit mit einer bestimmten Teamkennung freigegeben werden.
Erlaubte Kernel-Erweiterungen
| Teamkennung | Bundle-ID |
|---|---|
| 3T5GSNBU6W | com.github.osxfuse.filesystems.osxfuse |

Teamkennung und Bundle-ID auslesen
Die Teamkennung kann im folgenden Beispiel aus der heruntergeladenen Datei macfuse-5.1.1.dmg ausgelesen werden:
codesign -d --verbose=2 macfuse-5.1.1.dmg 2>&1 | grep -i teamidentifier
Ausgabe:
TeamIdentifier=3T5GSNBU6W
Die Bundle-ID kann bei einer manuell installierten KEXT (z. B. macFUSE) wie folgt ermittelt werden:
kextstat | grep -i fuse
Ausgabe:
Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
265 0 0 0x1830 0x1830 io.macfuse.filesystems.macfuse.25 (5.1.1) 67A4F7E1-82FE-30A4-A3B3-B6E8722C287A <9 7 6 5 3>
Damit ist io.macfuse.filesystems.macfuse.25 die benötigte Bundle-ID.
Hinweis
Unter Erlaubte Kernel-Erweiterungen können zu einer Teamkennung mehrere Bundle-IDs hinzugefügt werden – entweder beim Hinzufügen einer neuen oder beim Bearbeiten einer bestehenden Konfiguration über das Dreipunkte-Menü.