MacOS Untrusted Kexts, Fehler und Erklärungen
Wie im letzten Beitrag bereits beschrieben habe ich momentan leider Ärger mit meiner Mojave Installation und wühle mich durch Unmengen an möglichen Fehlerquellen und Logeinträgen.
Dabei bin ich u.a. auf die das Problem Untrusted kexts are not allowed
gestossen und konnte ein wenig über den Umgang mit Kexts (MacOS Kernel Extensions) lernen.
Um welche Fehler geht es?
Untrusted kexts are not allowed
Kext with invalid signature (-67062) denied: /Library/StagedExtensions/System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/14E59974-99C3-4F32-9E41-2AA9634A7F8B.kext
Bundle (/System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HuaweiDataCardECMControl.kext) failed to validate, deleting: /Library/StagedExtensions/System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/14E59974-99C3-4F32-9E41-2AA9634A7F8B.kext
Unable to stage kext (/System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HuaweiDataCardECMControl.kext) to secure location.
Dieser Untrusted kexts are not allowed
Fehler wiederholt sich bei mir für ein gutes dutzend verschiedene Files,
welche scheinbar alle nicht korrekt signiert oder in meinem Falle nicht freigegeben worden sind bzw. für eine mittlerweile veraltete MaxOS Version erstellt worden sind.
Diese nicht geladenen Kernel Erweiterungen werden von MacOS in den Ordner /Library/StagedExtensions/
verschoben.
$ ls -la /Library/StagedExtensions/System/Library/Extensions
total 0
drwxr-xr-x@ 3 root wheel 96B 22 Nov 2010 BJUSBLoad.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 HuaweiDataCardDriver.kext
drwxr-xr-x@ 3 root wheel 96B 28 Jan 2013 IceraUSBMassStorageBypass.kext
drwxr-xr-x@ 3 root wheel 96B 22 Mai 2012 JMicronATA.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 NMHuaweiPhonesVTPCDC_106.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 NMSamsungDriver_106.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 NovatelWireless3G.kext
drwxr-xr-x@ 3 root wheel 96B 28 Jan 2013 NovatelWirelessUSBCDCECMControl.kext
drwxr-xr-x@ 3 root wheel 96B 28 Jan 2013 RIMBBUSB.kext
drwxr-xr-x@ 3 root wheel 96B 28 Jan 2013 RIMBBVSP.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 Vodafone.kext
drwxr-xr-x@ 3 root wheel 96B 26 Mär 2013 heimdall.kext
drwxr-xr-x 3 root wheel 96B 3 Aug 14:29 ssuddrv.kext
Sie können durch Installation von Software dort landen, bei mir waren es Überbleibsel vergangener Installationen, die nicht korrekt bzw. vollständig deinstalliert wurden, denn das verschieben der App in den Papierkorn löscht leider nicht alle dazugehörigen Abhängigkeiten.
Wegen solcher Probleme hatte ich Mojave komplett neu installiert und NUR meine Benutzerdaten aus dem TimeMachine Backup wiederhergestellt. Licht und Schatten solcher Wollmilcheierlegenden-Superlösungen wie Time-Machine… sie wurden wieder mit hergestellt.
Ein gute Erläuterung zu der Meldung Untrusted kexts are not allowed liefert dieser Forum-Beitrag:
The first time an attempt is made to load the kext, macOS should present the user with a popup informing them that it was blocked. The user then needs to go to System Preferences > Security & Privacy in order to approve the kext. Note that the approval needs to happen within 30 minutes of the load attempt or it will disappear. Subsequent load attempts will be rejected silently but will reactivate the prompt within “Security & Privacy” – giving the user another chance to approve the kext.
Dummerweise habe ich diese Dialoge nach einem Restore aus einem Time-Machine Backup genau einmal bei Booten gesehen und erstmal weggeklickt.
Aber man kann, wenn es denn gewünscht sein sollte, diese immer noch wieder aktivieren in dem man die Systemeinstellungen und dort zu Sicherheit/Allgemein wechselt. Achtung: das muss innerhalb von 30 Minuten nach Reboot gemacht werden, ansonsten verschwindet die Meldung Das laden einer Systemsoftware wurde blockiert und mann kan den Erlauben … Dialog nicht öffnen:
Ich vermute (ungetestet) das “Haken setzen” und “Neustarten” diese Kernel Erweiterungen laden. Empfehlen würde ich es nicht, macht lieber ein Update auf die neueste Version der betroffenen Software. Die liefert dann hoffentlich auch ein kompatibles .kext mit.
Kext Infos einsehen
Interesse an mehr technischen Informationen vorhanden? Gut, denn man kann sich weitere Informationen über Kernel Extensions anschauen mit:
sudo kextutil -tn /Library/StagedExtensions/System/Library/Extensions/*.kext
Da findet man Informationen wie:
Code Signing Failure: not code signed
Dependency Resolution Failures:
Only incompatible kexts found for these libraries:
com.rim.driver.BlackBerryUSBDriverInt
Diagnostics for /Library/StagedExtensions/System/Library/Extensions/RIMBBVSP.kext:
Dependency Resolution Failures:
Only incompatible kexts found for these libraries:
com.rim.driver.BlackBerryUSBDriverInt
kext file:///Library/StagedExtensions/System/Library/Extensions/heimdall.kext/ is in hash exception list, allowing to load
Kext rejected due to system policy: <OSKext 0x7fb2ef491410 [0x7fff8a14c8e0]> { URL = "file:///Library/StagedExtensions/System/Library/Extensions/heimdall.kext/", ID = "au.com.glassechidna.heimdall_usb_shield" }
Code Signing Failure: not code signed
Warnings:
Personality CFBundleIdentifier differs from containing kext's (not necessarily a mistake, but rarely done):
GalaxyS
GalaxyS2
DroidCharge
Diagnostics for /Library/StagedExtensions/System/Library/Extensions/heimdall.kext:
Warnings:
Personality CFBundleIdentifier differs from containing kext's (not necessarily a mistake, but rarely done):
GalaxyS
GalaxyS2
DroidCharge
oder auch
Memory allocation failure.
/Library/StagedExtensions/System/Library/Extensions/70F75E81-D822-4E69-9103-8CD2A0EAE699.kext does not appear in strict exception list for architecture: x86_64
Untrusted kexts are not allowed
Nachdem ich mich ein wenig umgeschaut habe, war klar: weg mit den Kexts, werden nicht benötigt.
Kernel Extensions löschen
Will man diese Kexts also nicht nutzen und loswerden, dann stößt man auf ein Problem: aufgrund der SIP können diese nicht einfach gelöscht werden.
Aber dafür gibt es dankenswerterweise ein binary von Apple:
sudo kextcache --clear-staging
Und schwupps ist der Ordner leer. Toll! Reboot und was sehe ich da: alles wieder wie vorher… Kopf => Wand. Okay das war noch nicht die Lösung, der Ordner wird bei jedem Reboot wiederhergestellt.
Dann ein Stück tiefer graben und rausfinden, dass Kexts in den folgenden Ordnern gespeichert werden :
- /System/Library/Extensions
- /Library/Extensions
Neu installierte Kexts werden also zunächst in /Library/StagedExtensions
gespeichert und nach Freigabe durch den Benutzer in einen der Ordner verschoben.
Wurde dies unter einer alten MacOS Version gemacht, so kann es sein das bei einem Neustart der Kernel auf diese Dateien trifft, sie aber ablehnt da sie nicht mit den neuesten Sicherheitsrichtlinien kompatibel sind.
In solch einem Fall werden sie ungekehrt wieder nach /Library/StagedExtensions
kopiert.
Wie werden wir sie also dauerhaft los?
Spannenderweise kann man mit sudo
Berechtigung Kexts auf dem Ordner /System/Library/Extensions
löschen.
Also neuer Versuch:
sudo rm -rf /System/Library/Extensions/heimdall.kext
Das ganze wiederholen für alle überflüssigen Kexts und dann
sudo kextcache --clear-staging
Jetzt noch ein finaler Reboot … UND: die kexts sind wirklich weg!
Und wer jetzt heiß ist auf noch mehr technische Informationen, dem sei der Blogbeitrag Secure Kernel Extension Loading ans Herz gelegt!