Sanduku la MacOS (awali lililoitwa Seatbelt) linapunguza matumizi yanayoendesha ndani ya sanduku kwa vitendo vilivyoidhinishwa vilivyoelezwa katika wasifu wa Sanduku ambao programu inaendeshwa nao. Hii husaidia kuhakikisha kwamba programu itakuwa ikifikia rasilimali zinazotarajiwa tu.
Programu yoyote yenye haki ya com.apple.security.app-sandbox itatekelezwa ndani ya sanduku. Faili za Apple kawaida hutekelezwa ndani ya Sanduku na ili kuchapisha kwenye Duka la App, haki hii ni lazima. Kwa hivyo, programu nyingi zitatekelezwa ndani ya sanduku.
Ili kudhibiti kile mchakato unaweza au hauwezi kufanya, Sanduku lina kitanzi katika syscalls zote kwenye kernel. Kulingana na haki za programu, Sanduku itaruhusu vitendo fulani.
Tafadhali kumbuka kwamba hata kama viungo vya ishara vipo hapo ili "kutoroka" kutoka kwenye Sanduku la Mchanga na kupata ufikiaji wa folda zingine, Programu bado inahitaji kuwa na ruhusa ya kuzifikia. Ruhusa hizi zipo ndani ya .plist.
# Get permissionsplutil-convertxml1.com.apple.containermanagerd.metadata.plist-o-# Binary sandbox profile<key>SandboxProfileData</key><data>AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...# In this file you can find the entitlements:<key>Entitlements</key><dict><key>com.apple.MobileAsset.PhishingImageClassifier2</key><true/><key>com.apple.accounts.appleaccount.fullaccess</key><true/><key>com.apple.appattest.spi</key><true/><key>keychain-access-groups</key><array><string>6N38VWS5BX.ru.keepcoder.Telegram</string><string>6N38VWS5BX.ru.keepcoder.TelegramShare</string></array>[...]# Some parameters<key>Parameters</key><dict><key>_HOME</key><string>/Users/username</string><key>_UID</key><string>501</string><key>_USER</key><string>username</string>[...]# The paths it can access<key>RedirectablePaths</key><array><string>/Users/username/Downloads</string><string>/Users/username/Documents</string><string>/Users/username/Library/Calendars</string><string>/Users/username/Desktop</string><key>RedirectedPaths</key><array/>[...]
Kila kitu kilichoundwa/kibadilishwa na programu iliyowekwa kwenye Sandboksi kitapata sifa ya karantini. Hii itazuia nafasi ya sandboksi kwa kuzindua Gatekeeper ikiwa programu ya sandboksi inajaribu kutekeleza kitu na open.
Profaili za Sandboksi
Profaili za Sandboksi ni faili za usanidi ambazo zinaonyesha ni nini kitakachoruhusiwa/kukatazwa katika Sandboksi hiyo. Inatumia Lugha ya Profaili ya Sandboksi (SBPL), ambayo hutumia lugha ya programu ya Scheme.
Hapa unaweza kupata mfano:
(version 1) ; First you get the version(deny default) ; Then you shuold indicate the default action when no rule applies(allow network*) ; You can use wildcards and allow everything(allow file-read* ; You can specify where to apply the rule(subpath "/Users/username/")(literal "/tmp/afile")(regex #"^/private/etc/.*"))(allow mach-lookup(global-name "com.apple.analyticsd"))
Angalia utafitiili kuangalia hatua zaidi ambazo zinaweza kuruhusiwa au kukataliwa.
Huduma muhimu za mfumo pia zinaendeshwa ndani ya sandbox yao ya kawaida kama huduma ya mdnsresponder. Unaweza kuona maelezo ya sandbox maalum haya ndani ya:
Programu za Duka la App hutumia maelezo ya sandbox/System/Library/Sandbox/Profiles/application.sb. Unaweza kuangalia katika maelezo haya jinsi idhini kama vile com.apple.security.network.server inavyoruhusu mchakato kutumia mtandao.
SIP ni maelezo ya sandbox yanayoitwa platform_profile katika /System/Library/Sandbox/rootless.conf
Mifano ya Maelezo ya Sandbox
Ili kuanza programu na maelezo ya sandbox maalum, unaweza kutumia:
(version 1)(deny default)(allow file* (literal "/private/tmp/hacktricks.txt"))(allow process* (literal "/usr/bin/touch"))(allow file-read-data (literal "/")); This one will work
Tafadhali kumbuka kuwa programu iliyoundwa na Apple inayofanya kazi kwenye Windowshaina tahadhari za ziada za usalama, kama vile sandboxing ya programu.
macOS inahifadhi profaili za sandbox za mfumo katika maeneo mawili: /usr/share/sandbox/ na /System/Library/Sandbox/Profiles.
Na ikiwa programu ya mtu wa tatu ina kibali cha com.apple.security.app-sandbox, 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 maandishi wa SBPL. Kumbukumbu, sandbox hii inawakilishwa kama mti wa kibinari wa Ruhusu/Kataa kwa kila idhini kutoka kwenye sandbox.
Kuchunguza na Kuvuka Sandbox
Kwenye macOS, tofauti na iOS ambapo michakato inawekwa kwenye sandbox tangu mwanzo na kernel, michakato lazima ijiunge na sandbox yenyewe. Hii inamaanisha kuwa kwenye macOS, mchakato hauna kizuizi cha sandbox mpaka uamue kuingia ndani yake.
Michakato inawekwa kwenye Sandbox kiotomatiki kutoka kwa userland wanapoanza ikiwa wana kibali: com.apple.security.app-sandbox. Kwa maelezo zaidi juu ya mchakato huu angalia:
Kulingana na hii, sandbox_check (ni __mac_syscall), inaweza kuangalia kama operesheni inaruhusiwa au la na sandbox katika PID fulani.
Zana ya sbtool inaweza kuangalia ikiwa PID inaweza kutekeleza hatua fulani:
sbtool<pid>mach#Check mac-ports (got from launchd with an api)sbtool<pid>file/tmp#Check file accesssbtool<pid>inspect#Gives you an explaination of the sandbox profilesbtool<pid>all
SBPL ya kawaida katika programu za Duka la App
Inawezekana kwa makampuni kuunda programu zao zifanye kazi na maelezo ya SBPL ya kawaida (badala ya ile ya msingi). Wanahitaji kutumia ruhusa ya com.apple.security.temporary-exception.sbpl ambayo inahitaji idhini kutoka kwa Apple.
Inawezekana kuangalia ufafanuzi wa ruhusa hii katika /System/Library/Sandbox/Profiles/application.sb: