Utvide kjernen på en sikker måte i macOS
Fra og med macOS 11, hvis kjerneutvidelser fra tredjeparter aktiveres, kan de ikke lastes inn i kjernen ved behov. I stedet slås de sammen i en Auxiliary Kernel Collection (AuxKC) som lastes under oppstartsprosessen. For Macer med Apple-chip signeres målingen av AuxKC inn i LocalPolicy, mens for tidligere maskinvare befinner AuxKC seg på datavolumet. Ombygging av AuxKC krever brukerens godkjenning og at macOS må startes på nytt for å laste endringene inn i kjernen, og det krever at sikker oppstart konfigureres til Redusert sikkerhet.
Viktig: Kjerneutvidelser anbefales ikke lenger for macOS. Kjerneutvidelser utsetter integriteten og påliteligheten til operativsystemet for risiko, og Apple anbefaler at brukere velger løsninger som ikke krever utvidelse av kjernen.
Kjerneutvidelser på Macer med Apple-chip
Kjerneutvidelser må eksplisitt aktiveres for Macer med Apple-chip ved å holde inne av/på-knappen ved oppstart for å gå inn i One True Recovery-modus (1TR) og deretter nedgradere til Redusert sikkerhet og merke av i ruten for å aktivere kjerneutvidelser. Denne handlingen krever også at det skrives inn et administratorpassord for å godkjenne nedgraderingen. Kombinasjonen av 1TR og passordkravet gjør det vanskelig for en som kun angriper programvare fra innsiden av macOS, å legge inn kjerneutvidelser i macOS, som de deretter kan utnytte for å oppnå kjernerettigheter.
Etter at en bruker godkjenner lasting av kjerneutvidelser, brukes den ovennevnte flyten for brukergodkjent lasting av kjerneutvidelse til å godkjenne installasjonen av kjerneutvidelser. Godkjenningen som brukes for den ovennevnte flyten, brukes også til å fange opp en SHA384-hash av den brukerautoriserte kjerneutvidelseslisten (UAKL) i LocalPolicy. Kjernestyringsdaemonen (kmd
) er deretter ansvarlig for å validere kun de kjerneutvidelsene som finnes i UAKL, for inkludering inn i AuxKC.
Hvis System Integrity Protection (SIP) aktiveres, verifiseres signaturen til hver kjerneutvidelse før de inkluderes i AuxKC.
Hvis SIP deaktiveres, håndheves ikke kjerneutvidelsessignaturen.
Denne tilnærmingen muliggjør Middels sikkerhet-flyter der utviklere eller brukere som ikke er en del av Apple Developer-programmet, tester kjerneutvidelser før de signeres.
Når AuxKC er opprettet, sendes den tilhørende målingen til Secure Enclave for å bli signert og inkludert i en Image4-datastruktur som kan evalueres av iBoot ved oppstart. Det genereres også en kjerneutvidelseskvittering som en del av AuxKC-konstruksjonen. Denne kvitteringen inneholder listen over kjerneutvidelser som faktisk ble inkludert i AuxKC, fordi settet kunne være et undersett av UAKL hvis det forekom forbudte kjerneutvidelser. En SHA384-hash av AuxKC Image4-datastrukturen og kjerneutvidelseskvitteringen inkluderes i LocalPolicy. AuxKC Image4-hash brukes for ekstra verifisering av iBoot ved oppstart for å bidra til å sikre at det ikke er mulig å starte opp en eldre Secure Enclave-signert AuxKC Image4-fil med en nyere LocalPolicy. Kjerneutvidelseskvitteringen brukes av undersystemer som Apple Pay for å bestemme om det for øyeblikket er lastet noen kjerneutvidelser som kan påvirke integriteten til macOS. Hvis det er det, kan Apple Pay-funksjoner deaktiveres.
Systemutvidelser
Fra macOS 10.15 kan utviklere utvide funksjonaliteten til macOS ved å installere og administrere systemutvidelser som kjører i brukerområdet i stedet for på kjernenivået. Ved å kjøre i brukerområdet, forbedrer systemutvidelser stabiliteten og sikkerheten til macOS. Selv om kjerneutvidelser i utgangspunktet har full tilgang til hele operativsystemet, tilordnes utvidelser som kjører i brukerområdet, kun de rettighetene som er nødvendige for utføring av de angitte funksjonene.
Utviklere kan bruke rammeverk som DriverKit, EndpointSecurity og NetworkExtension til å skrive USB- og grensesnittdrivere, endepunktsikkerhetsverktøy (som forhindring av tap av data eller andre endepunktagenter) og VPN- og nettverksverktøy helt uten å måtte skrive kjerneutvidelser. Tredjepartssikkerhetsagenter bør kun brukes hvis de bruker disse API-ene eller har et robust veikart for en overgang til dem og bort fra kjerneutvidelser.
Brukergodkjent lasting av kjerneutvidelse
For å forbedre sikkerheten kreves brukergodkjenning for å laste inn kjerneutvidelser som installeres med eller etter installering av macOS 10.13. Denne prosessen kalles brukergodkjent innlasting av kjerneutvidelser. Administratorrettigheter kreves for å godkjenne en kjerneutvidelse. Kjerneutvidelser krever ikke godkjenning hvis de:
ble installert på en Mac når den kjører macOS 10.12 eller eldre
erstatter tidligere godkjente utvidelser
kan lastes inn uten brukergodkjenning ved hjelp av
spctl
-kommandolinjeverktøyet som er tilgjengelig når en Mac ble startet fra recoveryOSkan lastes inn med en MDM-konfigurasjon
Fra macOS 10.13.2 kan brukere bruke MDM til å spesifisere en liste med kjerneutvidelser som lastes inn uten brukergodkjenning. Dette valget krever en Mac som kjører macOS 10.13.2 som er registrert i MDM via Apple School Manager, Apple Business Manager eller MDM-registrering som utføres av brukeren.