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

TeamkennungBundle-ID
3T5GSNBU6Wcom.github.osxfuse.filesystems.osxfuse

picture


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ü.

Apple KEXT →