Sichere Erweiterung des Kernels in macOS
Wenn Kernel-Erweiterungen von Drittanbietern aktiviert werden, können sie ab macOS 11 nicht „on demand“ in den Kernel geladen werden. Sie werden vielmehr in einer Auxiliary Kernel Collection (AuxKC) zusammengeführt, die im Zuge des Startvorgangs geladen wird. Bei einem Mac mit Apple Chips wird die Kennzahl der AuxKC in die LocalPolicy-Datei eingetragen und signiert (bei früherer Hardware residiert die AuxKC auf dem Datenvolume). Ein AuxKC-Neuaufbau setzt die Genehmigung durch den Benutzer und den Neustart von macOS voraus, damit die Änderungen in den Kernel geladen werden. Außerdem setzt er voraus, dass der sichere Startvorgang für den Modus „Reduzierte Sicherheit“ konfiguriert ist.
Wichtig: Kernel-Erweiterungen werden für macOS nicht mehr empfohlen. Kernel-Erweiterungen stellen ein Risiko für die Integrität und Zuverlässigkeit des Betriebssystems dar. Daher empfiehlt Apple den Benutzern, Lösungen ohne Erweiterungen des Kernels vorzuziehen.
Kernel-Erweiterungen auf einem Mac mit Apple Chips
Kernel-Erweiterungen müssen für einen Mac mit Apple Chips explizit aktiviert werden. Dazu muss beim Starten die Taste „Ein/Aus“ gedrückt werden, um in den Modus 1TR (One True Recovery) zu wechseln. Danach muss die Herabstufung auf „Reduzierte Sicherheit“ vorgenommen und die Option zum Aktivieren von Kernel-Erweiterungen aktiviert werden. Für diese Aktion muss außerdem ein Administratorpasswort eingegeben werden, um die Herabstufung zu autorisieren. Die Kombination aus 1TR-Modus und obligatorischer Passworteingabe erschwert es Angreifern, die allein auf die Software abzielen, von einem Punkt innerhalb von macOS Kernel-Erweiterungen in macOS einzuschleusen, die sie dahingehend ausnutzen können, sich Kernel-Berechtigungen anzueignen.
Nachdem ein Benutzer das Laden von Kernel-Erweiterungen autorisiert hat, wird der oben beschriebene Arbeitsablauf „Laden vom Benutzer genehmigter Kernel-Erweiterungen“ verwendet, um die Installation der Kernel-Erweiterungen zu autorisieren. Die für den obigen Arbeitsablauf verwendete Autorisierung wird auch verwendet, um einen SHA-384-Hash-Wert der UAKL (User-authorized Kext List) in der LocalPolicy-Datei zu erfassen. Der Daemon für die Kernel-Verwaltung (kmd
) ist in der Folge dafür zuständig, dass nur solche Kernel-Erweiterungen, die in der UAKL enthalten sind, für die Aufnahme in die AuxKC validiert werden.
Wenn SIP (System Integrity Protection) aktiviert ist, wird die Signatur jeder Kernel-Erweiterung verifiziert, bevor sie in die AuxKC aufgenommen wird.
Wenn SIP deaktiviert ist, wird das Signieren von Kernel-Erweiterungen nicht erzwungen.
Dies ermöglicht den Arbeitsablauf „Permissive Sicherheit“, mit dem Entwickler und Kunden, die nicht am Apple Developer Program teilnehmen, Kernel-Erweiterungen testen können, ehe sie signiert werden.
Nachdem die AuxKC erstellt wurde, wird ihre Kennzahl an die Secure Enclave gesendet, um signiert und in die Image4-Datenstruktur einbezogen zu werden, die während des Startvorgangs durch iBoot evaluiert werden kann. Im Zuge des AuxKC-Aufbaus wird auch ein KEXT-Beleg generiert. Dieser Beleg umfasst eine Liste der Kernel-Erweiterungen, die tatsächlich in die AuxKC aufgenommen wurden, da es sich dabei um eine Untermenge der UAKL handeln kann, wenn verbotene Kernel-Erweiterungen erkannt werden. Ein SHA-384-Hash-Wert der Image4-Datenstruktur der AuxKC und der KEXT-Beleg werden in die LocalPolicy-Datei aufgenommen. Der Hash-Wert der Image4-Struktur der AuxKC wird von iBoot beim Starten für eine zusätzliche Verifizierung verwendet, um auszuschließen, dass eine von der Secure Enclave signierte ältere Image4-Datei der AuxKC mit einer neueren LocalPolicy-Datei gestartet wird. Der KEXT-Beleg wird von Subsystemen wie Apple Pay verwendet, um festzustellen, ob aktuell irgendwelche Kernel-Erweiterungen geladen sind, die die Vertrauenswürdigkeit von macOS beeinträchtigen könnten. Ist dies der Fall, können Apple Pay-Funktionen möglicherweise deaktiviert werden.
Systemerweiterungen
macOS 10.15 erlaubt Entwicklern, das Funktionsspektrum von macOS zu erweitern. Entwickler können hierzu Systemerweiterungen installieren und verwalten, die statt auf Kernel-Ebene im User Space ausgeführt werden. Systemerweiterungen steigern die Stabilität und Sicherheit von macOS dadurch, dass sie im User Space laufen. Auch wenn Kernel-Erweiterungen grundsätzlich vollen Zugriff auf das gesamte Betriebssystem haben, werden Erweiterungen, die im User Space ausgeführt werden, nur die Berechtigungen erteilt, die für die Ausführung ihrer speziellen Funktion erforderlich sind.
Entwickler können Frameworks wie DriverKit, EndpointSecurity und NetworkExtension nutzen, um USB-Treiber und Treiber für Benutzeroberflächen, Tools für die Endgerätesicherheit (wie Prävention von Datenverlusten und andere Endgeräte-Agenten) sowie VPN- und Netzwerktools zu schreiben, ohne Kernel-Erweiterung schreiben zu müssen. Sicherheitsagenten anderer Anbieter sollten nur dann verwendet werden, wenn sie die Vorteile dieser APIs nutzen oder einen soliden Plan haben, wie sie diese übernehmen und auf Kernel-Erweiterungen verzichten können.
Laden vom Benutzer genehmigter Kernel-Erweiterungen
Zur Verbesserung der Sicherheit ist die Einwilligung des Benutzers erforderlich, um Kernel-Erweiterungen zu laden, die mit oder nach der Installation von macOS 10.13 installiert werden. Dieser Prozess wird auch als „Laden von Kernel-Erweiterungen nach Benutzereinwilligung“ bezeichnet. Für die Einwilligung in eine Kernel-Erweiterung ist eine Administratorautorisierung erforderlich. Kernel-Erweiterungen setzen keine Autorisierung voraus, wenn sie:
auf einem Mac mit macOS 10.12 (oder älter) installiert wurden,
zuvor bewilligte Erweiterungen ersetzen,
durch Verwendung des Befehlszeilenprogramms
spctl
, das beim Starten über recoveryOS bereitgestellt wird, ohne Benutzereinwilligung geladen werden dürfen,mittels einer MDM-Konfiguration (Mobile Device Management) geladen werden dürfen.
Ab macOS 10.13.2, können Benutzer MDM verwenden, um eine Liste von Kernel-Erweiterungen festzulegen, die ohne Benutzereinwilligung geladen werden. Diese Option erfordert einen Mac mit macOS 10.13.2, der in Apple School Manager, Apple Business Manager oder Apple Business Manager oder in einer MDM-Lösung durch den Benutzer registriert wird.