macOS Sandbox
Basic Information
MacOS Sandbox (aanvanklik Seatbelt genoem) beperk toepassings wat binne die sandbox loop tot die toegelate aksies gespesifiseer in die Sandbox-profiel waarmee die toepassing loop. Dit help om te verseker dat die toepassing slegs verwagte hulpbronne sal benader.
Enige toepassing met die regte com.apple.security.app-sandbox
sal binne die sandbox uitgevoer word. Apple-binaries word gewoonlik binne 'n Sandbox uitgevoer en om in die App Store te publiseer, is hierdie regte verpligtend. So die meeste toepassings sal binne die sandbox uitgevoer word.
Om te beheer wat 'n proses kan of nie kan doen nie, het die Sandbox haakplekke in alle syscalls regdeur die kern. Afhangende van die regte van die toepassing, sal die Sandbox sekere aksies toelaat.
Sommige belangrike komponente van die Sandbox is:
Die kernuitbreiding
/System/Library/Extensions/Sandbox.kext
Die privaat raamwerk
/System/Library/PrivateFrameworks/AppSandbox.framework
'n daemon wat in userland loop
/usr/libexec/sandboxd
Die houers
~/Library/Containers
Binne die houers-gids kan jy 'n gids vir elke toepassing wat sandboxed uitgevoer word vind met die naam van die bundel-id:
Binne elke bundel-id-gids kan jy die plist en die Data-gids van die App vind:
Let daarop dat selfs al is die symlinks daar om te "ontsnap" uit die Sandbox en ander mappen te benader, moet die App steeds toestemming hê om toegang daartoe te verkry. Hierdie toestemmings is binne die .plist
.
Alles wat deur 'n Sandboxed toepassing geskep/gewysig word, sal die kwarantyn-attribuut ontvang. Dit sal 'n sandbox ruimte voorkom deur Gatekeeper te aktiveer as die sandbox toepassing probeer om iets met open
uit te voer.
Sandbox Profiele
Die Sandbox profiele is konfigurasie lêers wat aandui wat in daardie Sandbox toegelaat/verbode gaan word. Dit gebruik die Sandbox Profiel Taal (SBPL), wat die Scheme programmeertaal gebruik.
Hier kan jy 'n voorbeeld vind:
Kontroleer hierdie navorsing om meer aksies te kontroleer wat toegelaat of geweier kan word.
Belangrike stelseldienste loop ook binne hul eie pasgemaakte sandbox soos die mdnsresponder
diens. Jy kan hierdie pasgemaakte sandbox-profiele binne kyk:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
Ander sandbox-profiele kan nagegaan word in https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles.
App Store toepassings gebruik die profiel /System/Library/Sandbox/Profiles/application.sb
. Jy kan in hierdie profiel kyk hoe regte soos com.apple.security.network.server
'n proses toelaat om die netwerk te gebruik.
SIP is 'n Sandbox-profiel genaamd platform_profile in /System/Library/Sandbox/rootless.conf
Sandbox Profiel Voorbeelde
Om 'n toepassing met 'n spesifieke sandbox-profiel te begin, kan jy gebruik:
Let daarop dat die Apple-geskrewe programmatuur wat op Windows loop nie addisionele sekuriteitsmaatreëls het nie, soos toepassingsandboxing.
Bypasses voorbeelde:
https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (hulle kan lêers buite die sandbox skryf waarvan die naam met
~$
begin).
MacOS Sandbox Profiele
macOS stoor stelselsandboxprofiele in twee plekke: /usr/share/sandbox/ en /System/Library/Sandbox/Profiles.
En as 'n derdeparty-toepassing die com.apple.security.app-sandbox regte het, pas die stelsel die /System/Library/Sandbox/Profiles/application.sb profiel op daardie proses toe.
iOS Sandbox Profiel
Die standaardprofiel word container genoem en ons het nie die SBPL teksverteenwoordiging nie. In geheue word hierdie sandbox verteenwoordig as 'n Toestaan/Weier binaire boom vir elke toestemming van die sandbox.
Debug & Bypass Sandbox
Op macOS, anders as iOS waar prosesse vanaf die begin deur die kern in 'n sandbox geplaas word, moet prosesse self in die sandbox optree. Dit beteken op macOS is 'n proses nie deur die sandbox beperk nie totdat dit aktief besluit om daarin te gaan.
Prosesse word outomaties in 'n sandbox geplaas vanaf gebruikersland wanneer hulle begin as hulle die regte het: com.apple.security.app-sandbox
. Vir 'n gedetailleerde verduideliking van hierdie proses kyk:
Kontroleer PID Regte
Volgens hierdie, kan die sandbox_check
(dit is 'n __mac_syscall
), kontroleer of 'n operasie toegelaat word of nie deur die sandbox in 'n sekere PID.
Die instrument sbtool kan kontroleer of 'n PID 'n sekere aksie kan uitvoer:
Custom SBPL in App Store apps
Dit kan moontlik wees vir maatskappye om hul toepassings te laat werk met pasgemaakte Sandbox-profiele (in plaas van met die standaard een). Hulle moet die regte com.apple.security.temporary-exception.sbpl
gebruik wat deur Apple goedgekeur moet word.
Dit is moontlik om die definisie van hierdie regte in /System/Library/Sandbox/Profiles/application.sb:
te kontroleer.
Dit sal die string na hierdie regte as 'n Sandbox-profiel evaluer.
Last updated