macOS Sandbox
Basic Information
MacOS Sandbox (awali ilijulikana kama Seatbelt) inaweka mipaka kwa programu zinazotembea ndani ya sandbox kwa vitendo vilivyokubaliwa vilivyobainishwa katika profaili ya Sandbox ambayo programu inatumia. Hii husaidia kuhakikisha kwamba programu itakuwa ikipata rasilimali zinazotarajiwa tu.
Programu yoyote yenye entitlement com.apple.security.app-sandbox
itatekelezwa ndani ya sandbox. Mifumo ya Apple kwa kawaida hutekelezwa ndani ya Sandbox na ili kuchapishwa ndani ya App Store, entitlement hii ni ya lazima. Hivyo, programu nyingi zitatekelezwa ndani ya sandbox.
Ili kudhibiti kile mchakato unaweza au hawezi kufanya, Sandbox ina vidokezo katika syscalls zote kupitia kernel. Kulingana na entitlements za programu, Sandbox it aruhusu vitendo fulani.
Baadhi ya vipengele muhimu vya Sandbox ni:
kiongezeo cha kernel
/System/Library/Extensions/Sandbox.kext
mfumo wa faragha
/System/Library/PrivateFrameworks/AppSandbox.framework
daemon inayotembea katika userland
/usr/libexec/sandboxd
mifuko
~/Library/Containers
Ndani ya folda ya mifuko unaweza kupata folda kwa kila programu inayotekelezwa sandboxed yenye jina la bundle id:
Ndani ya kila folda ya bundle id unaweza kupata plist na Data directory ya App:
Kumbuka kwamba hata kama symlinks zipo ili "kutoroka" kutoka Sandbox na kufikia folda nyingine, App bado inahitaji kuwa na ruhusa za kuzifikia. Ruhusa hizi ziko ndani ya .plist
.
Kila kitu kilichoundwa/kilibadilishwa na programu ya Sandboxed kitapata sifa ya karantini. Hii itazuia nafasi ya sandbox kwa kuanzisha Gatekeeper ikiwa programu ya sandbox inajaribu kutekeleza kitu kwa open
.
Profaili za Sandbox
Profaili za Sandbox ni faili za usanidi zinazoonyesha kile kitakachokuwa kuruhusiwa/kukatazwa katika hiyo Sandbox. Inatumia Sandbox Profile Language (SBPL), ambayo inatumia lugha ya programu ya Scheme.
Hapa unaweza kupata mfano:
Check this research ili kuangalia vitendo zaidi ambavyo vinaweza kuruhusiwa au kukataliwa.
Mifumo muhimu ya huduma pia inafanya kazi ndani ya sandbox yake maalum kama huduma ya mdnsresponder
. Unaweza kuona hizi profiles za sandbox maalum ndani ya:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
Profiles nyingine za sandbox zinaweza kuangaliwa katika https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles.
Programu za App Store zinatumia profile /System/Library/Sandbox/Profiles/application.sb
. Unaweza kuangalia katika profile hii jinsi haki kama com.apple.security.network.server
inavyoruhusu mchakato kutumia mtandao.
SIP ni profile ya Sandbox inayoitwa platform_profile katika /System/Library/Sandbox/rootless.conf
Mifano ya Profile ya Sandbox
Ili kuanzisha programu na profile maalum ya sandbox unaweza kutumia:
Kumbuka kwamba programu iliyoundwa na Apple inayofanya kazi kwenye Windows haina tahadhari za ziada za usalama, kama vile sandboxing ya programu.
Mifano ya kupita:
https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (wanaweza kuandika faili nje ya sandbox ambayo jina lake linaanza na
~$
).
Profaili za Sandbox za MacOS
macOS inahifadhi profaili za sandbox za mfumo katika maeneo mawili: /usr/share/sandbox/ na /System/Library/Sandbox/Profiles.
Na ikiwa programu ya upande wa tatu ina com.apple.security.app-sandbox haki, mfumo unatumia profaili ya /System/Library/Sandbox/Profiles/application.sb kwa mchakato huo.
Profaili ya Sandbox ya iOS
Profaili ya chaguo-msingi inaitwa container na hatuna uwakilishi wa maandiko ya SBPL. Katika kumbukumbu, sandbox hii inawakilishwa kama mti wa binary wa Ruhusu/Kataa kwa kila ruhusa kutoka kwenye sandbox.
Debug & Bypass Sandbox
Katika macOS, tofauti na iOS ambapo michakato inasandboxed tangu mwanzo na kernel, michakato lazima ijitolee kwenye sandbox yenyewe. Hii inamaanisha katika macOS, mchakato haujawekewa vizuizi na sandbox hadi uamuzi wa kuingia ndani yake ufanyike.
Michakato inasandboxed kiotomatiki kutoka kwa userland wanapoanza ikiwa wana haki: com.apple.security.app-sandbox
. Kwa maelezo ya kina kuhusu mchakato huu angalia:
Angalia Haki za PID
Kulingana na hii, sandbox_check
(ni __mac_syscall
), inaweza kuangalia kama operesheni inaruhusiwa au la na sandbox katika PID fulani.
chombo sbtool kinaweza kuangalia ikiwa PID inaweza kufanya kitendo fulani:
Custom SBPL in App Store apps
Inawezekana kwa kampuni kufanya programu zao zifanye kazi na wasifu wa Sandbox wa kawaida (badala ya ule wa kawaida). Wanahitaji kutumia haki com.apple.security.temporary-exception.sbpl
ambayo inahitaji kuidhinishwa na Apple.
Inawezekana kuangalia ufafanuzi wa haki hii katika /System/Library/Sandbox/Profiles/application.sb:
Hii itafanya eval string baada ya haki hii kama profaili ya Sandbox.
Last updated