macOS Sandbox
Basic Information
MacOS Sandbox (शुरुआत में Seatbelt कहा जाता था) सैंडबॉक्स के अंदर चलने वाले अनुप्रयोगों को सैंडबॉक्स प्रोफ़ाइल में निर्दिष्ट अनुमत क्रियाओं तक सीमित करता है जिसके साथ ऐप चल रहा है। यह सुनिश्चित करने में मदद करता है कि अनुप्रयोग केवल अपेक्षित संसाधनों तक पहुँच रहा होगा।
कोई भी ऐप जिसमें अधिकार com.apple.security.app-sandbox
है, सैंडबॉक्स के अंदर चलाया जाएगा। एप्पल बाइनरी आमतौर पर सैंडबॉक्स के अंदर चलाए जाते हैं और ऐप स्टोर में प्रकाशित करने के लिए, यह अधिकार अनिवार्य है। इसलिए अधिकांश अनुप्रयोग सैंडबॉक्स के अंदर चलाए जाएंगे।
यह नियंत्रित करने के लिए कि एक प्रक्रिया क्या कर सकती है या नहीं कर सकती है, सैंडबॉक्स में सभी syscalls के लिए हुक होते हैं। ऐप के अधिकारों के आधार पर, सैंडबॉक्स कुछ क्रियाओं को अनुमति देगा।
सैंडबॉक्स के कुछ महत्वपूर्ण घटक हैं:
कर्नेल एक्सटेंशन
/System/Library/Extensions/Sandbox.kext
निजी ढांचा
/System/Library/PrivateFrameworks/AppSandbox.framework
एक डेमन जो उपयोगकर्ता भूमि में चल रहा है
/usr/libexec/sandboxd
कंटेनर
~/Library/Containers
कंटेनर फ़ोल्डर के अंदर आप प्रत्येक ऐप के लिए एक फ़ोल्डर पा सकते हैं जो सैंडबॉक्स में चलाया गया है जिसका नाम बंडल आईडी है:
प्रत्येक बंडल आईडी फ़ोल्डर के अंदर आप plist और ऐप का Data directory पा सकते हैं:
ध्यान दें कि भले ही symlinks "Sandbox" से "भागने" और अन्य फ़ोल्डरों तक पहुँचने के लिए हैं, ऐप को अभी भी उन्हें एक्सेस करने के लिए अनुमतियाँ होनी चाहिए। ये अनुमतियाँ .plist
के अंदर हैं।
एक Sandboxed एप्लिकेशन द्वारा बनाई गई/संशोधित हर चीज़ को quarantine attribute मिलेगा। यह sandbox स्पेस को Gatekeeper को ट्रिगर करके रोक देगा यदि sandbox ऐप कुछ open
के साथ निष्पादित करने की कोशिश करता है।
Sandbox Profiles
Sandbox प्रोफाइल कॉन्फ़िगरेशन फ़ाइलें हैं जो यह संकेत देती हैं कि उस Sandbox में क्या अनुमति/प्रतिबंधित होगा। यह Sandbox Profile Language (SBPL) का उपयोग करता है, जो Scheme प्रोग्रामिंग भाषा का उपयोग करता है।
यहाँ एक उदाहरण है:
Check this research यहाँ अधिक क्रियाएँ देखने के लिए जो अनुमति दी जा सकती हैं या अस्वीकृत की जा सकती हैं।
महत्वपूर्ण सिस्टम सेवाएँ अपने स्वयं के कस्टम सैंडबॉक्स के अंदर चलती हैं जैसे कि mdnsresponder
सेवा। आप इन कस्टम सैंडबॉक्स प्रोफाइल को देख सकते हैं:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
अन्य सैंडबॉक्स प्रोफाइल को https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles पर चेक किया जा सकता है।
ऐप स्टोर ऐप्स प्रोफाइल /System/Library/Sandbox/Profiles/application.sb
का उपयोग करते हैं। आप इस प्रोफाइल में देख सकते हैं कि कैसे अधिकार जैसे com.apple.security.network.server
एक प्रक्रिया को नेटवर्क का उपयोग करने की अनुमति देते हैं।
SIP एक सैंडबॉक्स प्रोफाइल है जिसे /System/Library/Sandbox/rootless.conf में platform_profile कहा जाता है।
सैंडबॉक्स प्रोफाइल उदाहरण
एक विशिष्ट सैंडबॉक्स प्रोफाइल के साथ एक एप्लिकेशन शुरू करने के लिए आप उपयोग कर सकते हैं:
ध्यान दें कि Apple द्वारा लिखित सॉफ़्टवेयर जो Windows पर चलता है, उसमें अतिरिक्त सुरक्षा उपाय नहीं हैं, जैसे कि एप्लिकेशन सैंडबॉक्सिंग।
बायपास के उदाहरण:
https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (वे
~$
से शुरू होने वाले नाम के साथ सैंडबॉक्स के बाहर फ़ाइलें लिखने में सक्षम हैं)।
MacOS सैंडबॉक्स प्रोफाइल
macOS सिस्टम सैंडबॉक्स प्रोफाइल को दो स्थानों पर संग्रहीत करता है: /usr/share/sandbox/ और /System/Library/Sandbox/Profiles।
और यदि कोई तृतीय-पक्ष एप्लिकेशन com.apple.security.app-sandbox अधिकार रखता है, तो सिस्टम उस प्रक्रिया पर /System/Library/Sandbox/Profiles/application.sb प्रोफाइल लागू करता है।
iOS सैंडबॉक्स प्रोफाइल
डिफ़ॉल्ट प्रोफाइल को container कहा जाता है और हमारे पास SBPL पाठ प्रतिनिधित्व नहीं है। मेमोरी में, इस सैंडबॉक्स को सैंडबॉक्स से प्रत्येक अनुमति के लिए Allow/Deny बाइनरी ट्री के रूप में दर्शाया गया है।
डिबग और बायपास सैंडबॉक्स
macOS पर, iOS के विपरीत जहां प्रक्रियाएँ शुरू से ही कर्नेल द्वारा सैंडबॉक्स की जाती हैं, प्रक्रियाओं को स्वयं सैंडबॉक्स में शामिल होना चाहिए। इसका मतलब है कि macOS पर, एक प्रक्रिया तब तक सैंडबॉक्स द्वारा प्रतिबंधित नहीं होती जब तक कि वह सक्रिय रूप से इसमें प्रवेश करने का निर्णय नहीं लेती।
यदि प्रक्रियाओं के पास अधिकार है: com.apple.security.app-sandbox
, तो वे उपयोगकर्ता भूमि से स्वचालित रूप से सैंडबॉक्स की जाती हैं जब वे शुरू होती हैं। इस प्रक्रिया के विस्तृत विवरण के लिए देखें:
PID विशेषाधिकार जांचें
इसके अनुसार, sandbox_check
(यह एक __mac_syscall
है), यह जांच सकता है कि किसी ऑपरेशन की अनुमति है या नहीं किसी निश्चित PID द्वारा सैंडबॉक्स में।
उपकरण sbtool यह जांच सकता है कि क्या एक PID एक निश्चित क्रिया कर सकता है:
Custom SBPL in App Store apps
यह संभव है कि कंपनियाँ अपने ऐप्स को कस्टम सैंडबॉक्स प्रोफाइल के साथ चलाएँ (डिफ़ॉल्ट प्रोफाइल के बजाय)। उन्हें एप्पल द्वारा अधिकृत com.apple.security.temporary-exception.sbpl
अधिकार का उपयोग करने की आवश्यकता है।
इस अधिकार की परिभाषा की जाँच करना संभव है /System/Library/Sandbox/Profiles/application.sb:
यह इस अधिकार के बाद के स्ट्रिंग को एक Sandbox प्रोफ़ाइल के रूप में eval करेगा।
Last updated