På WWDC-konferencen sidste år annoncerede Apple planer om at afvikle macOS “kernel extensions” (KEXTs) og erstatte dem med en ny mekanisme kaldet “system extensions.”
Det første skridt i retning af denne annoncering blev taget med udgivelsen af macOS Catalina (10.15.0) i september 2019, hvor system extensions blev indført sammen med kernel extensions.
Det sidste skridt i Apples plan vil træde i kraft i de kommende uger med den kommende udgivelse af macOS Catalina 10.15.4.
Ifølge Apple vil der fra macOS 10.15.4, vil brugen af kerneudvidelser udløse en meddelelse til brugeren om, at softwaren indeholder en forældet API, og brugeren vil blive bedt om at kontakte udvikleren for at få alternativer.
Hvad er forskellen på de to?
Både kerneudvidelser og systemudvidelser tjener det samme formål. De giver brugerne mulighed for at installere apps, der udvider de oprindelige funktioner i macOS-operativsystemet.
Apps installerer kerne-/systemudvidelser, der giver dem mulighed for at udføre operationer, som macOS ikke har nogen oprindelige funktioner eller egenskaber til.
Mac-antivirussoftware, firewalls, VPN-klienter, DNS-proxies, USB-drivere og andre gør alle brug af kerneudvidelser.
Skellen mellem disse to nye udvidelsessystemer er, at de ældre kerneudvidelser udfører deres kode på macOS-kernelniveau, mens de nyere systemudvidelser kører i et mere stramt kontrolleret user-space.
Stort skridt for sikkerheden
“Fra Apples synspunkt er dette et stort skridt i retning af at forbedre sikkerheden i macOS,” sagde Patrick Wardle, Principal Security Researcher hos Jamf og en kendt macOS-sikkerhedsekspert, til ZDNet i et interview i denne uge.
“Tredjeparts kerneudvidelser udgør en saftig angrebsvektor for angribere, der er rettet mod macOS,” tilføjede han. “Især hvis du som angriber kan udnytte en kerneudvidelse eller indlæse din egen (forudsat at den er signeret).”
Og angreb, der involverer KEXTs, er sket tidligere.
“Det er virkelig game over for macOS,” sagde Wardle. “Mange mange mange sikkerhedsmekanismer er implementeret/forceret i kernen.”
Wardle siger, at et angreb som dette ikke ville fungere med systemudvidelser, da de kører i brugertilstand.
“Da de ikke kører i kernen, giver en udnyttelse dig ikke længere adgang til kernetilstand, som det gjorde med en KEXT-udnyttelse,” sagde Wardle.
“Så Apple ønsker dybest set at smide alle ud , hovedsagelig af sikkerhedshensyn.”
Potentielle ulemper
Men Wardle siger, at der også er en ulempe ved dette skridt.
Den første er, at ved at smide app-udviklere ud af kernen, får Apple også meget mere kontrol over macOS, svarende til den kontrol, de har over iOS.
Hertil har macOS været et fristed for udviklere og dets brugere. Hvis macOS ikke havde en bestemt funktion, kunne udviklere bare oprette en app og udnytte en kerneudvidelse til at tilføje de funktioner, de havde brug for.
Den anden ulempe er, at mange sikkerhedsværktøjer selv, har været stærkt afhængige af og er blevet bygget op omkring den fulde adgang, som kerneudvidelser giver til en brugers Mac. Man kan argumentere for, at Apples skridt i retning af systemudvidelser kan ende med at unutere sikkerhedsprodukterne, som undervejs vil miste noget af deres evne til at opdage og stoppe malware.
Men Wardle, der er forfatter til mange gratis macOS-sikkerhedsværktøjer, siger dog, at Apple har leveret “nogle gode rammer for brugertilstand, der giver tredjeparts sikkerhedsværktøjer de muligheder, de har brug for,” så det ser ud til, at Apple ikke har skåret grenen væk under fødderne endnu.
Men indtil videre er det uklart, om systemudvidelser vil give den samme alsidighed og kodefrihed som kerneudvidelser. Dette er endnu uvist – og et emne til en anden artikel – da vi har brug for mere tid for macOS-udviklere til langsomt at skifte til systemudvidelser fremover.
Men Wardle påpeger dog, at skiftet er godt for macOS-sikkerheden generelt set, uanset andre mulige årsager til Apples skridt.