Sikker udvidelse af kernen i macOS
Fra macOS 11 gælder, at hvis kerneudvidelser fra tredjeparter (kext'er) er slået til, kan de ikke indlæses i kernen efter behov. De lægges i stedet i en sekundær kernesamling (AuxKC – Auxiliary Kernel Collection), som indlæses under starten. På en Mac med Apple Silicon er AuxKC-målingen indsat i LocalPolicy (på Mac-computere med tidligere hardware er AuxKC placeret på dataenheden). Genopbyggelse af AuxKC kræver brugerens godkendelse og genstart af macOS for at indlæse ændringerne i kernen. Genopbyggelse kræver også, at sikker start er indstillet til Reduceret sikkerhed.
Vigtigt: Kext'er anbefales ikke længere til macOS. Kext’er udgør en sikkerhedsrisiko for operativsystemets integritet og stabilitet, og Apple anbefaler, at brugerne vælger løsninger, der ikke indebærer kerneudvidelser.
Kerneudvidelser på en Mac med Apple Silicon
Kext’er skal slås til manuelt på en Mac med Apple Silicon, ved at brugeren holder afbryderknappen nede under starten, så 1TR-funktionen (One True Recovery) aktiveres, nedgraderer sikkerheden til Reduceret sikkerhed og vælger afkrydsningsfeltet, der slår kerneudvidelser til. Under processen skal brugeren skrive en administrators adgangskode for at godkende nedgraderingen. Kombinationen af 1TR og kravet om adgangskode gør det svært for softwarehackere, der begynder inde fra macOS, at skyde kext'er ind i macOS, som de derefter kan udnytte til at opnå kernerettigheder.
Når en bruger har godkendt, at kext'er må indlæses, bruges processen Indlæsning af brugergodkendte kerneudvidelser, der er beskrevet ovenfor, til at godkende installeringen af kext'er. Den godkendelse, som bruges til ovennævnte forløb, bruges også til at registrere en SHA384 hash-værdi til den brugergodkendte kext-liste (UAKL) i LocalPolicy. Kerneadministrations-daemonen (kmd
) er derefter ansvarlig for at kontrollere de kext'er, som findes i UAKL, med henblik på at inkludere dem i AuxKC.
Hvis Beskyttelse af systemets integritet (SIP) er slået til, kontrolleres hver kexts signatur, før den inkluderes i AuxKC.
Hvis SIP er slået fra, håndhæves kext-signaturen ikke.
Denne fremgangsmåde giver udviklere eller kunder, som ikke deltager i Apple Developer Program, mulighed for at bruge forløb med Tolerant sikkerhed til at teste kext'er, før de signeres.
Når AuxKC er oprettet, sendes dens måling til Secure Enclave til signering, og den inkluderes i en Image4-datastruktur, som kan evalueres af iBoot under starten. Under opbygningen af AuxKC genereres der også en kext-kvittering. Kvitteringen indeholder den liste med kext'er, som ender med at blive inkluderet i AuxKC, hvilket kan være en delmængde af UAKL, hvis der blev opdaget sortlistede kext'er. En SHA384 hash-værdi for AuxKC Image4-datastrukturen og kext-kvitteringen inkluderes i LocalPolicy. Hash-værdien for AuxKC Image4-arkivet bruges til, at iBoot kan foretage en udvidet godkendelse under starten for at bidrage til at sikre, at det ikke er muligt at starte et ældre Secure Enclave-signeret AuxKC Image4-arkiv med en nyere LocalPolicy. Kext-kvitteringen bruges af subsystemer som Apple Pay til at afgøre, om der er nogen kext'er, der er indlæst i øjeblikket, som kan underminere tilliden til macOS. Hvis det er tilfældet, kan Apple Pay-funktionerne blive slået fra.
Systemudvidelser
macOS 10.15 sætter udviklerne i stand til at udvide funktionerne i macOS ved at installere og administrere systemudvidelser, der afvikles i brugerområdet i stedet for på kerneniveau. Når systemudvidelserne afvikles i brugerområdet, øges macOS-systemets stabilitet og sikkerhed. Selvom fuld adgang til hele operativsystemet er indbygget i kext’er, får udvidelser, der afvikles i brugerområdet, kun de rettigheder, der er nødvendige, for at de kan udføre deres specifikke funktion.
Udviklere kan bruge frameworks som DriverKit, EndpointSecurity og NetworkExtension til at skrive USB-drivere og drivere til brugergrænsefladen, slutpunktssikkerhedsværktøjer (f.eks. agenter, der kan forhindre datatab, og andre slutpunktsagenter), VPN- og netværksværktøjer – alt sammen uden at skulle skrive kext’er. Sikkerhedsagenter fra tredjeparter bør kun bruges, hvis de udnytter disse API’er eller har faste planer for, hvordan de vil gå over til dem og væk fra kerneudvidelser.
Indlæsning af brugergodkendte kerneudvidelser
For at forbedre sikkerheden kræver det brugerens samtykke at indlæse kerneudvidelser, der er installeret sammen med eller efter installering af macOS 10.13. Denne proces kaldes indlæsning af brugergodkendte kerneudvidelser. Det kræver administratorrettigheder at godkende en kerneudvidelse. Kerneudvidelser kræver ikke tilladelse, hvis de:
Var installeret på en Mac med macOS 10.12 eller en tidligere version
Erstatter tidligere godkendte udvidelser
Har tilladelse til at blive indlæst uden brugersamtykke ved brug af kommandolinjeværktøjet
spctl
, der er tilgængeligt, når en Mac startes fra macOS-gendannelse.Har tilladelse til at blive indlæst ved brug af MDM-konfigurationen (Mobile Device Management)
Fra og med macOS 10.13.2 kan brugere benytte MDM til at danne en liste med kerneudvidelser, der må indlæses uden brugerens samtykke. Denne mulighed kræver en Mac-computer med macOS 10.13.2, som er tilmeldt MDM – enten via Apple School Manager, Apple Business Manager eller brugerens egen tilmelding til MDM.