लिनक्स के लिए प्रतिज्ञा अलगाव तंत्र को पोर्ट करने की योजना है

हाल ही में कॉस्मोपॉलिटन सी मानक पुस्तकालय के लेखक और रेडबीन मंच की घोषणा a . के माध्यम से की गई लिनक्स के लिए प्रतिज्ञा () अलगाव तंत्र के कार्यान्वयन की घोषणा की।

यह था मूल रूप से OpenBSD परियोजना द्वारा विकसित किया गया y आपको चुनिंदा प्रतिबंध लगाने की अनुमति देता है कि अनुप्रयोग अप्रयुक्त सिस्टम कॉल तक पहुँचते हैं (एप्लिकेशन के लिए सिस्टम कॉल की एक प्रकार की श्वेतसूची बनाई जाती है और अन्य कॉल निषिद्ध हैं)। लिनक्स पर उपलब्ध syscall अभिगम नियंत्रण तंत्र के विपरीत, जैसे कि seccomp, प्रतिज्ञा तंत्र को यथासंभव उपयोगकर्ता के अनुकूल होने के लिए जमीन से डिज़ाइन किया गया है।

सिस्ट्रेस तंत्र का उपयोग करते हुए ओपनबीएसडी आधार वातावरण में अनुप्रयोगों को अलग करने की असफल पहल ने प्रदर्शित किया कि व्यक्तिगत सिस्टम कॉल के स्तर पर अलगाव बहुत जटिल और समय लेने वाला है।

एक विकल्प के रूप में, प्रतिज्ञा प्रस्तावित की गई थी, जो विवरण में जाने और तैयार पहुंच वर्गों में हेरफेर किए बिना अलगाव नियम बनाने की अनुमति दी गई है.

उदाहरण के लिए, पेश की जाने वाली कक्षाएं हैं: stdio (इनपुट/आउटपुट), rpath (केवल फाइलें पढ़ें), wpath (फाइलें लिखें), cpath (फाइलें बनाएं), tmppath (अस्थायी फाइलों के साथ काम करें), inet (सॉकेट नेटवर्क), यूनिक्स (यूनिक्स सॉकेट्स) ), डीएनएस (डीएनएस रिज़ॉल्यूशन), getpw (उपयोगकर्ता डेटाबेस तक पहुंच पढ़ें), ioctl (ioctl कॉल), proc (प्रक्रिया नियंत्रण), निष्पादन (स्टार्टअप प्रक्रियाएं), और आईडी (अनुमति नियंत्रण)।

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

अलग से, फ्रीबीएसडी के लिए प्रतिज्ञा कार्यान्वयन विकसित किया जा रहा है, जो कि उनके कोड में बदलाव किए बिना अनुप्रयोगों को अलग करने की क्षमता से अलग है, जबकि ओपनबीएसडी में प्रतिज्ञा कॉल का उद्देश्य आधार पर्यावरण के साथ कड़े एकीकरण और कोड में एनोटेशन को जोड़ना है। प्रत्येक का।

प्रतिज्ञा निषिद्ध फल की तरह है जिसे हम सभी चाहते हैं जब बॉस कहता है कि हमें लिनक्स जैसी चीजों का उपयोग करना चाहिए। यह तथ्य इतना मायने क्यों रखता हे? ऐसा इसलिए है क्योंकि प्रतिज्ञा() वास्तव में सुरक्षा को समझने योग्य बनाती है। लिनक्स में वास्तव में कभी भी सुरक्षा की एक परत नहीं थी जिसे केवल नश्वर ही समझ सकते हैं।

लिनक्स प्लेज पोर्ट डेवलपर्स ने फ्रीबीएसडी से एक संकेत लिया और कोड परिवर्तन करने के बजाय, उन्होंने प्लेज डॉट कॉम से एक अतिरिक्त उपयोगिता तैयार की जो आपको एप्लिकेशन कोड को बदले बिना प्रतिबंध लागू करने की अनुमति देती है। उदाहरण के लिए, कर्ल उपयोगिता को केवल stdio, rpath, inet, और threadstdio सिस्टम कॉल कक्षाओं तक पहुंच के साथ चलाने के लिए, बस "./pledge.com -p 'stdio rpath inet thread' curl http://example.com चलाएँ। .

उपयोगिता RHEL6 के बाद से सभी Linux वितरणों पर काम करती है और रूट पहुंच की आवश्यकता नहीं है। इसके अतिरिक्त, महानगरीय पुस्तकालय के आधार पर, सी भाषा कार्यक्रमों के कोड में प्रतिबंधों के प्रबंधन के लिए एक एपीआई प्रदान किया जाता है, जो अन्य बातों के अलावा, एप्लिकेशन के कुछ कार्यों के संबंध में चुनिंदा रूप से पहुंच को प्रतिबंधित करने के लिए एन्क्लेव बनाने की अनुमति देता है। ।

अतीत में कुछ डेवलपर्स रहे हैं जिन्होंने यह कोशिश की है। मैं नामों का नाम नहीं लेने जा रहा हूं, क्योंकि इनमें से अधिकतर परियोजनाएं कभी पूरी नहीं हुईं। जब SECOMP की बात आती है, तो ऑनलाइन ट्यूटोरियल केवल यह समझाते हैं कि सिस्टम कॉल को कैसे श्वेतसूची में रखा जाए, इसलिए अधिकांश लोग तर्कों को फ़िल्टर करने का तरीका जानने से पहले रुचि खो देते हैं। जो परियोजनाएं आगे बढ़ीं उनमें सेटुइड/सेटगिड/स्टिकी बिट्स को बदलने की अनुमति देने जैसे निरीक्षण भी थे। इसलिए, मौजूदा विकल्पों में से किसी का भी उपयोग नहीं किया जाना चाहिए। मुझे लगता है कि यह प्रयास हमें पहले से कहीं अधिक प्रतिज्ञा () करने के करीब लाता है।

कार्यान्वयन के लिए कर्नेल परिवर्तन की आवश्यकता नहीं है: उपयोगिता बाधाओं को SECOMP BPF नियमों में अनुवादित किया जाता है और Linux के मूल सिस्टम कॉल आइसोलेशन तंत्र का उपयोग करके संसाधित किया जाता है। उदाहरण के लिए, कॉल करने का वादा ("stdio rpath", 0) एक BPF फ़िल्टर में बदल जाएगा

अंत में, यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं, तो आप विवरण देख सकते हैं निम्नलिखित लिंक में


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।