UNTRUSTEDCODE/etccredsnetSANDBOXno access outside

सैंडबॉक्सिंग

10 मिनट पढ़ासुरक्षा

सैंडबॉक्सिंग एक सुरक्षा पैटर्न है जो आपके ब्राउज़र को किसी भी साइट से जावास्क्रिप्ट चलाने देता है, आपके फ़ोन को किसी भी डेवलपर के ऐप्स चलाने देता है, और आपके लैपटॉप को ईमेल अटैचमेंट खोलने देता है - यह सब उन प्रोग्रामों के बिना आपकी बैंक खाता फ़ाइल को पढ़ने में सक्षम होता है। यह प्रौद्योगिकी परत है जिसने अविश्वसनीय कोड को भेद्यता से एक सुविधा में बदल दिया है।

संपूर्ण लेख का मुख्य भाग नीचे अंग्रेजी में दिया गया है।

Sandboxing एक प्रतिबंधित वातावरण के अंदर कोड चलाने का अभ्यास है जो इसे अपनी सीमा के बाहर संसाधनों तक पहुंचने से रोकता है। सैंडबॉक्स सीमित करता है कि वह कौन सी फ़ाइलें पढ़ सकता है, वह कौन से नेटवर्क कनेक्शन बना सकता है, वह किन अन्य प्रक्रियाओं के साथ संचार कर सकता है, और कौन सी सिस्टम कॉल लागू कर सकता है। यदि कोड दुर्भावनापूर्ण या खराब निकला, तो नुकसान निहित है।

सैंडबॉक्सिंग क्यों मायने रखती है सत्यापित)
  • ब्राउज़र एक्सटेंशन, IDE प्लगइन्स, आपके कोड में निर्भरताएँ सैंडबॉक्सिंग वह है जो मॉडल को काम करने देती है।

    सैंडबॉक्स कैसे बनाए जाते हैं ब्राउज़र कर्नेल मध्यस्थता करता है कि प्रक्रिया को क्या करने की अनुमति है। लिनक्स पर

  • seccomp-bpf - कर्नेल-प्रवर्तन फ़िल्टर जिस पर सिस्टम कॉल एक प्रक्रिया कर सकता है। सैंडबॉक्स उन सिस्कॉल की घोषणा करता है जिनकी उसे आवश्यकता है (पढ़ें, लिखें, एमएमएपी, आदि) और कर्नेल बाकी सभी चीजों को अस्वीकार कर देता है। लिनक्स पर
  • नामस्थान और क्षमताएं - फ़ाइल सिस्टम, प्रक्रियाओं, नेटवर्क, और इसी तरह के अलग-अलग दृश्य। कंटेनर इन प्राइमिटिव्स से बनाए गए हैं। MacOS/iOS पर
  • App सैंडबॉक्स - घोषणात्मक अधिकार जो बताते हैं कि ऐप को किन क्षमताओं की आवश्यकता है (कैमरा एक्सेस, नेटवर्क, विशिष्ट पथ)। बिना पात्रता वाले ऐप्स उन सुविधाओं तक नहीं पहुंच सकते। पाया गया। ब्राउज़र कर्नेल एक विश्वसनीय प्रक्रिया के रूप में चलता है। प्रत्येक रेंडरर प्रक्रिया - प्रति टैब एक या अधिक - न्यूनतम क्षमताओं के साथ एक अविश्वसनीय प्रक्रिया के रूप में चलती है। रेंडरर यह कर सकता है: नहीं कर सकते:

    • इसके सैंडबॉक्स निर्देशिका के बाहर फ़ाइलें खोलें सैंडबॉक्स-एस्केप कमजोरियाँ। क्रोम पर सबसे आकर्षक एकल इनाम ($200,000 से अधिक) एक पूरी श्रृंखला के लिए जाता है जो सैंडबॉक्स से बच जाती है। आईओएस पर यूआरएल योजनाएं और ऐप एक्सटेंशन)। ओएस रनटाइम पर उपयोगकर्ता को क्षमता-शैली अनुमतियों (कैमरा, माइक्रोफ़ोन, संपर्क) के लिए संकेत देता है। परिणाम: फ़ोन पर मैलवेयर डेस्कटॉप की तुलना में कहीं अधिक मजबूती से समाहित होता है। WASM मॉड्यूल की अपनी कोई सिस्टम कॉल नहीं होती है; सब कुछ होस्ट वातावरण द्वारा प्रदान किया जाना चाहिए (सिस्टम-कॉल-शैली एपीआई के लिए WASI, ब्राउज़र में वेब एपीआई)। यह WASM को विश्वसनीय अनुप्रयोगों के अंदर अविश्वसनीय प्लगइन्स चलाने के लिए एक मजबूत उम्मीदवार बनाता है - एक ऐसा उपयोग मामला जिसके लिए पहले भारी प्रक्रिया अलगाव की आवश्यकता होती है। wasmtime और wasmer जैसे उपकरण इस मॉडल का उपयोग करते हैं। आवर्ती विफलता मोड:

      • कर्नेल सतह में कीड़े। मेल्टडाउन ने दिखाया कि सीपीयू अनुकूलन प्रक्रिया सीमाओं के पार डेटा लीक कर सकता है। आधुनिक सैंडबॉक्स इसे कम करते हैं लेकिन अंतर्निहित समस्या हार्डवेयर-स्तर की चिंता बनी हुई है।
      • सैंडबॉक्स प्रोफ़ाइल गलतियाँ। गहराई में रक्षा सैंडबॉक्सिंग को अन्य उपायों (स्मृति-सुरक्षित भाषाएं, सैनिटाइज़र, हमले-सतह में कमी) के साथ जोड़ती है। व्यावहारिक निहितार्थ: ब्राउज़र और ओएस को अद्यतन रखें, क्योंकि सैंडबॉक्स एस्केप सर्वोच्च प्राथमिकता वाले सुरक्षा समाधान हैं। जब तक आप परिणामों को नहीं समझ लेते, तब तक सैंडबॉक्स सुविधाओं को अक्षम करने से बचें (कुछ लिनक्स उपयोगकर्ता seccomp प्रोफाइल को बंद कर देते हैं, कुछ पावर उपयोगकर्ता Chrome के सैंडबॉक्स फ़्लैग को अक्षम कर देते हैं)। ब्राउज़र डिफ़ॉल्ट रूप से सख्त हो जाते हैं; लगभग सभी उपयोगकर्ताओं के लिए डिफ़ॉल्ट सही है.

  • अक्सर पूछे जाने वाले प्रश्नों

    क्या सैंडबॉक्सिंग वर्चुअलाइजेशन के समान है?
    वे ओवरलैप करते हैं लेकिन समान नहीं हैं। वर्चुअलाइजेशन एक एमुलेटर के अंदर संपूर्ण ऑपरेटिंग सिस्टम चलाता है; अलगाव हार्डवेयर-वर्चुअलाइजेशन स्तर पर है। सैंडबॉक्सिंग आमतौर पर कर्नेल-लागू प्रतिबंधों के साथ एक ही ओएस के अंदर प्रक्रियाएं चलाता है। वर्चुअलाइजेशन भारी है लेकिन मजबूत अलगाव प्रदान करता है; आधुनिक डिज़ाइन अक्सर दोनों को जोड़ते हैं (सर्वर रहित के लिए फायरक्रैकर वीएम, कंटेनर के लिए जीवीज़र)।
    क्या सैंडबॉक्सिंग से चीज़ें धीमी हो जाती हैं?
    मामूली ओवरहेड - आमतौर पर सिस्कल फ़िल्टरिंग के लिए एकल-अंकीय प्रतिशत, प्रक्रिया अलगाव के लिए थोड़ा अधिक। हार्डवेयर समर्थन (इंटेल सीईटी, एआरएम पीएसी) के माध्यम से प्रदर्शन लागत को सक्रिय रूप से कम कर दिया गया है, इसलिए आधुनिक सैंडबॉक्स अधिकांश कार्यभार के लिए अनिवार्य रूप से निःशुल्क हैं।
    क्या कोई वीपीएन अपने सैंडबॉक्स से बच सकता है?
    वीपीएन क्लाइंट सॉफ़्टवेयर को आमतौर पर सैंडबॉक्स वाले ऐप्स की तुलना में अधिक विशेषाधिकारों की आवश्यकता होती है - वे रूटिंग और नेटवर्क इंटरफेस को कॉन्फ़िगर करते हैं। MacOS और iOS पर वे इसे सुरक्षित रूप से करने के लिए विशिष्ट API (नेटवर्कएक्सटेंशन फ्रेमवर्क) का उपयोग करते हैं। वीपीएन क्लाइंट स्वयं विशेषाधिकार प्राप्त है; इसके माध्यम से प्रवाहित होने वाला डेटा अन्य ऐप्स के लिए अपारदर्शी है।
    क्या डॉकर कंटेनर में कोड चलाना सैंडबॉक्सिंग के समान है?
    डॉकर कंटेनर अलगाव के लिए लिनक्स नेमस्पेस और seccomp का उपयोग करते हैं, जो सैंडबॉक्सिंग का एक रूप है। अलगाव वर्चुअलाइजेशन-आधारित सैंडबॉक्स (कंटेनर होस्ट कर्नेल को साझा करते हैं) से कमजोर है और उपयोगकर्ता-स्पेस सैंडबॉक्स से कमजोर है जो अधिकांश सिस्कॉल को प्रतिबंधित करता है (कंटेनर कई को अनुमति देते हैं)। अविश्वसनीय कार्यभार के लिए, जीवीज़र या काटा कंटेनर्स जैसी परियोजनाएं डॉकर यूएक्स के चारों ओर मजबूत अलगाव लपेटती हैं।
    Chrome इतनी अधिक मेमोरी का उपयोग क्यों करता है?
    साइट अलगाव. प्रत्येक मूल अपनी प्रक्रिया में चलता है - विभिन्न साइटों के 50 टैब का मतलब 50 प्रक्रियाएं हैं, प्रत्येक की अपनी मेमोरी ओवरहेड होती है। लागत रैम है; लाभ यह है कि एक टैब का शोषण दूसरे टैब के डेटा (पासवर्ड, सत्र) को नहीं पढ़ सकता है। आधुनिक क्रोम प्रभाव को कम करने के लिए मेमोरी-शेयरिंग अनुकूलन में अधिक प्रयास करता है, लेकिन आर्किटेक्चर स्वाभाविक रूप से सुरक्षा के लिए मेमोरी का व्यापार करता है।
    सैंडबॉक्सिंग की व्याख्या: कैसे ब्राउज़र और ऑपरेटिंग सिस्टम में अविश्वसनीय कोड होता है