macOS System Extensions
Sisteemuitbreidings / Eindpuntsekuriteitsraamwerk
In teenstelling met Kerneluitbreidings, hardloop Sisteemuitbreidings in gebruikerspasie eerder as in die kernpasie, wat die risiko van 'n stelselstoring as gevolg van uitbreidingsfoute verminder.
Daar is drie tipes sisteemuitbreidings: DriverKit-uitbreidings, Netwerk-uitbreidings, en Eindpuntsekuriteit-uitbreidings.
DriverKit-uitbreidings
DriverKit is 'n vervanging vir kerneluitbreidings wat hardwaresondersteuning bied. Dit maak dit moontlik vir toestuurprogramme (soos USB, Seriële, NIC, en HID-toestuurprogramme) om in gebruikerspasie te hardloop eerder as in kernpasie. Die DriverKit-raamwerk sluit gebruikerspasie-weergawes van sekere I/O Kit-klasse in, en die kern stuur normale I/O Kit-gebeure na gebruikerspasie, wat 'n veiliger omgewing bied vir hierdie toestuurprogramme om te hardloop.
Netwerkuitbreidings
Netwerkuitbreidings bied die vermoë om netwerkgedrag aan te pas. Daar is verskeie tipes Netwerkuitbreidings:
Toepassingsproksi: Dit word gebruik om 'n VPN-klient te skep wat 'n vloeigeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van verbindings (of vloeie) eerder as individuele pakkette.
Pakketspoor: Dit word gebruik om 'n VPN-klient te skep wat 'n pakketgeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van individuele pakkette.
Filterdata: Dit word gebruik om netwerk "vloeie" te filter. Dit kan netwerkdata op vloeivlak monitor of wysig.
Filterpakkette: Dit word gebruik om individuele netwerkpakkette te filter. Dit kan netwerkdata op pakketvlak monitor of wysig.
DNS-proksi: Dit word gebruik om 'n aangepaste DNS-leweransier te skep. Dit kan gebruik word om DNS-versoeke en -antwoorde te monitor of wysig.
Eindpuntsekuriteitsraamwerk
Eindpuntsekuriteit is 'n raamwerk wat deur Apple in macOS voorsien word en 'n stel API's vir stelselsekuriteit bied. Dit is bedoel vir gebruik deur sekuriteitsvennote en ontwikkelaars om produkte te bou wat stelselaktiwiteit kan monitor en beheer om skadelike aktiwiteit te identifiseer en teen te beskerm.
Hierdie raamwerk bied 'n versameling API's om stelselaktiwiteit te monitor en te beheer, soos prosesuitvoerings, lêersisteemgebeure, netwerk- en kerngebeure.
Die kern van hierdie raamwerk word geïmplementeer in die kern, as 'n Kerneluitbreiding (KEXT) geleë by /System/Library/Extensions/EndpointSecurity.kext
. Hierdie KEXT bestaan uit verskeie sleutelkomponente:
EndpointSecurityDriver: Dit tree op as die "toegangspunt" vir die kernuitbreiding. Dit is die hoofpunt van interaksie tussen die OS en die Eindpuntsekuriteitsraamwerk.
EndpointSecurityEventManager: Hierdie komponent is verantwoordelik vir die implementering van kernhake. Kernhake maak dit moontlik vir die raamwerk om stelselgebeure te monitor deur stelseloproepe te onderskep.
EndpointSecurityClientManager: Dit bestuur die kommunikasie met gebruikerspasie-kliënte, hou by watter kliënte gekoppel is en gebeurteniskennisgewings moet ontvang.
EndpointSecurityMessageManager: Dit stuur boodskappe en gebeurteniskennisgewings na gebruikerspasie-kliënte.
Die gebeure wat die Eindpuntsekuriteitsraamwerk kan monitor, word gekategoriseer in:
Lêergebeure
Prosessgebeure
Sokketgebeure
Kerngebeure (soos die laai/ontlaai van 'n kernuitbreiding of die oopmaak van 'n I/O Kit-toestel)
Eindpuntsekuriteitsraamwerkargitektuur
Gebruikerspasie-kommunikasie met die Eindpuntsekuriteitsraamwerk gebeur deur die IOUserClient-klas. Twee verskillende subklasse word gebruik, afhangende van die tipe oproeper:
EndpointSecurityDriverClient: Dit vereis die
com.apple.private.endpoint-security.manager
toestemming, wat slegs deur die stelselprosesendpointsecurityd
besit word.EndpointSecurityExternalClient: Dit vereis die
com.apple.developer.endpoint-security.client
toestemming. Dit sou tipies deur derdeparty-sekuriteitsagteware gebruik word wat met die Eindpuntsekuriteitsraamwerk moet interaksieer.
Die Eindpuntsekuriteitsuitbreidings:libEndpointSecurity.dylib
is die C-biblioteek wat sisteemuitbreidings gebruik om met die kern te kommunikeer. Hierdie biblioteek gebruik die I/O Kit (IOKit
) om met die Eindpuntsekuriteits-KEXT te kommunikeer.
endpointsecurityd
is 'n sleutelstelseldaemon wat betrokke is by die bestuur en aanvang van eindpuntsekuriteitstelseluitbreidings, veral gedurende die vroeë opstartproses. Slegs stelseluitbreidings gemerk met NSEndpointSecurityEarlyBoot
in hul Info.plist
-lêer ontvang hierdie vroeë opstartbehandeling.
'n Ander stelseldaemon, sysextd
, valideer stelseluitbreidings en skuif hulle na die regte stelsellokasies. Dit vra dan die relevante daemon om die uitbreiding te laai. Die SystemExtensions.framework
is verantwoordelik vir die aktivering en deaktivering van stelseluitbreidings.
ESF-verbygaan
ESF word deur sekuriteitsgereedskap gebruik wat sal probeer om 'n rooi span-lid te identifiseer, dus enige inligting oor hoe dit vermy kan word, klink interessant.
CVE-2021-30965
Die ding is dat die sekuriteitsprogram Volle Skyf Toegang-toestemmings moet hê. Dus as 'n aanvaller dit kon verwyder, kon hy voorkom dat die sagteware hardloop:
Vir meer inligting oor hierdie omweg en verwante omwegte, kyk na die aanbieding #OBTS v5.0: "Die Achilleshiel van Eindpuntbeveiliging" - Fitzl Csaba
Aan die einde is hierdie probleem opgelos deur die nuwe toestemming kTCCServiceEndpointSecurityClient
te gee aan die beveiligingsprogram wat bestuur word deur tccd
sodat tccutil
nie sy toestemmings sal skoonmaak nie en dit verhoed om uit te voer.
Verwysings
Last updated