Systeem- en kernelextensies in macOS
In macOS 10.15 of nieuwer kunnen ontwikkelaars de mogelijkheden van macOS uitbreiden door systeemextensies te installeren en te beheren die in de gebruikersruimte in plaats van in de kernel worden uitgevoerd. Daarmee worden de stabiliteit en veiligheid van macOS verbeterd. Waar kexts per definitie volledige toegang hebben tot het hele besturingssysteem, krijgen extensies die in de gebruikersruimte worden uitgevoerd alleen de bevoegdheden die voor het uitvoeren van de extensie vereist zijn.
Via MDM is uitgebreid beheer van systeemextensies mogelijk. Je kunt bijvoorbeeld toestaan dat alle extensies van een specifieke ontwikkelaar of een specifiek type (zoals netwerkextensies) kunnen worden geladen zonder dat hiervoor de tussenkomst van de gebruiker nodig is. Ook kun je in MDM opgeven dat gebruikers het laden van hun eigen systeemextensies niet mogen goedkeuren.
Als in macOS 11.3 tot en met macOS 11.6.4 het profiel van een systeemextensie wordt gewijzigd, heeft dit direct effect op de status van de extensie. Als een extensie bijvoorbeeld nog moet worden goedgekeurd en een configuratieprofiel naar de computer wordt gepusht waarin de extensie wordt toegestaan, mag de extensie worden geladen. Wordt een goedkeuring daarentegen ingetrokken, dan wordt de systeemextensie ontladen en bij de volgende herstart van de Mac verwijderd. Als een systeemextensie zichzelf probeert te ontladen, verschijnt een interactief authenticatievenster waarin de inloggegevens van een beheerder moeten worden ingevoerd om het ontladen te autoriseren.
In macOS 12.0.1 of nieuwer kunnen MDM-beheerders met het woordenboek RemovableSystemExtensions
in de payload 'Systeemextensies' opgeven welke apps hun eigen systeemextensies mogen verwijderen. Er is geen authenticatie door een lokale beheerder vereist om de systeemextensies te verwijderen. Dit is met name handig voor leveranciers die geautomatiseerde verwijderprogramma's voor hun apps aanbieden.
Kernel extensions
Als kernelextensies (kexts) van derden worden ingeschakeld, kunnen deze in macOS 11 of nieuwer niet op aanvraag in de kernel worden geladen. Er is goedkeuring van de gebruiker vereist en macOS moet opnieuw worden opgestart om de wijzigingen in de kernel te laden. Bovendien moet op een Mac met Apple silicon het beleid voor veilig opstarten zijn ingesteld op 'Verminderde beveiliging'.
Ontwikkelaars kunnen frameworks zoals DriverKit en NetworkExtension gebruiken voor het schrijven van USB- en HID-besturingsbestanden (Human Interface Drivers). Ook kunnen ze gebruikmaken van endpointbeveiligingstools (zoals tools die gegevensverlies voorkomen of andere endpointagents) en VPN- en netwerktools, allemaal zonder daarvoor kexts te hoeven schrijven. Beveiligingsagents van derden moeten alleen worden gebruikt als ze deze API's toepassen of gegarandeerd overstappen van kernelextensies naar deze API's.
Belangrijk: Het wordt aangeraden om geen kexts meer te gebruiken voor macOS. Kexts vormen een risico voor de integriteit en betrouwbaarheid van het besturingssysteem. Gebruikers kunnen daarom beter voor een oplossing zonder kernelextensies kiezen en in plaats daarvan systeemextensies gebruiken.
Kexts toevoegen op een Intel-Mac of een Mac met Apple silicon met macOS 11 of nieuwer
Als het gebruik van kernelextensies noodzakelijk is, neem dan de goedkeuringsmethoden op basis van inschrijvingstype door.
Type MDM-inschrijving | Goedkeuringsmethode | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Niet ingeschreven Gebruikersinschrijving | Wanneer een nieuwe kext wordt geïnstalleerd en er wordt geprobeerd om deze te laden, moet de gebruiker een herstart uitvoeren vanuit het waarschuwingsvenster in:
Dit zorgt ervoor dat de AuxKC opnieuw wordt opgebouwd voordat de kernel wordt opgestart. | ||||||||||
Apparaatinschrijving Automatische apparaatinschrijving | Telkens wanneer een nieuwe kext wordt geïnstalleerd en geprobeerd wordt om deze te laden, moet een herstart worden uitgevoerd door:
Opmerking: Er moet door de MDM-oplossing eerst een profiel met een lijst met toegestane kexts worden geïnstalleerd waarin de kext is opgegeven. In macOS 11.3 of nieuwer kan via MDM een melding naar de gebruiker worden gestuurd met het verzoek om de computer opnieuw op te starten op een voor de gebruiker geschikt moment. |
Aanvullende stappen voor het toevoegen van kexts op een Mac met Apple silicon
Als je kernelextensies toevoegt aan een Mac met Apple silicon, zijn extra stappen noodzakelijk.
Type MDM-inschrijving | Goedkeuringsmethode | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Niet ingeschreven | Als de gebruiker de kexts beheert, is opnieuw opstarten met recoveryOS vereist om de beveiligingsinstellingen te downgraden. De gebruiker moet de aan/uit-knop ingedrukt houden om op te starten met recoveryOS en moet zich als beheerder authenticeren. De Secure Enclave accepteert alleen wijzigingen in het beveiligingsbeleid als recoveryOS wordt gestart door de aan/uit-knop ingedrukt te houden. De gebruiker moet vervolgens het aankruisvak 'Verminderde beveiliging' en de optie 'Sta gebruikersbeheer van kernelextensies van geïdentificeerde ontwikkelaars toe' inschakelen en de Mac opnieuw opstarten. | ||||||||||
Gebruikersinschrijving | De gebruiker moet opnieuw opstarten met recoveryOS om de beveiligingsinstellingen te downgraden. De gebruiker moet de aan/uit-knop ingedrukt houden om op te starten met recoveryOS en moet zich als lokale beheerder authenticeren. De Secure Enclave accepteert alleen wijzigingen in het beveiligingsbeleid als recoveryOS wordt gestart door de aan/uit-knop ingedrukt te houden. De gebruiker moet vervolgens 'Verminderde beveiliging' selecteren, 'Sta gebruikersbeheer van kernelextensies van geïdentificeerde ontwikkelaars toe' inschakelen en de Mac opnieuw opstarten. | ||||||||||
Apparaatinschrijving | De MDM-oplossing moet de gebruiker laten weten dat opnieuw opstarten met recoveryOS vereist is om de beveiligingsinstellingen te downgraden. De gebruiker moet de aan/uit-knop ingedrukt houden om op te starten met recoveryOS en moet zich als beheerder authenticeren. De Secure Enclave accepteert alleen wijzigingen in het beveiligingsbeleid als recoveryOS wordt gestart door de aan/uit-knop ingedrukt te houden. De gebruiker moet vervolgens 'Verminderde beveiliging' selecteren, 'Sta extern beheer van kernelextensies en automatische software-updates toe' inschakelen en de Mac opnieuw opstarten. Als je wilt weten of deze functie voor jouw apparaten wordt ondersteund, raadpleeg je de documentatie van je MDM-leverancier. | ||||||||||
Automatische apparaatinschrijving (Het serienummer van de Mac moet voorkomen in Apple School Manager, Apple Business Manager of Apple Business Essentials en de Mac moet zijn ingeschreven bij een MDM-oplossing die aan de voorziening is gekoppeld.) | MDM-oplossingen kunnen dit automatisch beheren. Als je wilt weten of deze functie voor jouw apparaten wordt ondersteund, raadpleeg je de documentatie van je MDM-leverancier. |
Kernelextensies en System Integrity Protection
Als System Integrity Protection (SIP) is ingeschakeld, wordt van elke kext de handtekening geverifieerd voordat de kext in de AuxKC wordt opgenomen.
Als SIP is uitgeschakeld, wordt ondertekening van kexts niet afgedwongen.
Ontwikkelaars of gebruikers die niet aan het Apple Developer Program deelnemen, kunnen daardoor de modus 'Lichte beveiliging' gebruiken om kexts te testen die nog niet zijn ondertekend.