macOS Kernel Extensions
Grundlegende Informationen
Kernelerweiterungen (Kexts) sind Pakete mit der Erweiterung .kext
, die direkt in den macOS-Kernelraum geladen werden und dem Hauptbetriebssystem zusätzliche Funktionen bieten.
Anforderungen
Offensichtlich ist dies so mächtig, dass es kompliziert ist, eine Kernelerweiterung zu laden. Dies sind die Anforderungen, die eine Kernelerweiterung erfüllen muss, um geladen zu werden:
Beim Betreten des Wiederherstellungsmodus müssen Kernelerweiterungen zugelassen sein, um geladen zu werden:
Die Kernelerweiterung muss mit einem Kernelcodesignaturzertifikat signiert sein, das nur von Apple erteilt werden kann. Wer wird das Unternehmen und die Gründe, warum es benötigt wird, im Detail überprüfen.
Die Kernelerweiterung muss auch notariell beglaubigt sein, damit Apple sie auf Malware überprüfen kann.
Dann ist der Root-Benutzer derjenige, der die Kernelerweiterung laden kann und die Dateien innerhalb des Pakets müssen Root gehören.
Während des Upload-Vorgangs muss das Paket an einem geschützten Nicht-Root-Standort vorbereitet werden:
/Library/StagedExtensions
(erfordert die Berechtigungcom.apple.rootless.storage.KernelExtensionManagement
).Schließlich wird der Benutzer beim Versuch, sie zu laden, eine Bestätigungsanfrage erhalten und, wenn akzeptiert, muss der Computer neu gestartet werden, um sie zu laden.
Ladevorgang
In Catalina war es so: Es ist interessant festzustellen, dass der Überprüfungsprozess in Benutzerland stattfindet. Nur Anwendungen mit der Berechtigung com.apple.private.security.kext-management
können den Kernel auffordern, eine Erweiterung zu laden: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli startet den Überprüfungsprozess zum Laden einer Erweiterung
Es wird mit
kextd
sprechen, indem es einen Mach-Dienst verwendet.
kextd
wird verschiedene Dinge überprüfen, wie die Signatur
Es wird mit
syspolicyd
sprechen, um zu überprüfen, ob die Erweiterung geladen werden kann.
syspolicyd
wird den Benutzer auffordern, wenn die Erweiterung nicht zuvor geladen wurde.
syspolicyd
wird das Ergebnis ankextd
melden
kextd
kann schließlich den Kernel auffordern, die Erweiterung zu laden
Wenn kextd
nicht verfügbar ist, kann kextutil
die gleichen Überprüfungen durchführen.
Referenzen
Last updated