'सुडो पाइप' चलाने के जोखिम क्या हैं?


94

कभी कभी मैं में चलाने टिप्पणी या प्रतिक्रियाओं है कि राज्य जोरदार ढंग से चल रहा है कि pipके तहत sudo"गलत" या "बुरा" है, लेकिन ऐसे मामलों में जहां यह या तो बहुत सरल, या यहाँ तक के लिए आवश्यक है (वैसे मैं की स्थापना उपकरण का एक समूह है शामिल हैं) इसे इस तरह से चलाएं।

के pipतहत चलने के साथ जुड़े जोखिम क्या हैं sudo?


ध्यान दें कि यह नहीं के समान ही सवाल यह एक है, जो, शीर्षक के बावजूद, जोखिम के बारे में कोई जानकारी नहीं प्रदान करता है। यह भी एक सवाल नहीं है कि कैसे उपयोग करने से बचें sudo, लेकिन विशेष रूप से इस बारे में कि कोई क्यों करना चाहता है।

जवाबों:


103

जब आप pipसाथ दौड़ते हैं sudo, तो आप setup.pyसाथ दौड़ते हैं sudo। दूसरे शब्दों में, आप रूट के रूप में इंटरनेट से मनमाना पायथन कोड चलाते हैं। यदि कोई PyPI पर कोई दुर्भावनापूर्ण प्रोजेक्ट लगाता है और आप इसे स्थापित करते हैं, तो आप अपनी मशीन पर एक हमलावर रूट एक्सेस देते हैं। pipजब आप किसी भरोसेमंद प्रोजेक्ट को डाउनलोड करते हैं, तो हाल ही के कुछ सुधारों और PyPI से पहले, एक हमलावर अपने कोड को इंजेक्ट करने के लिए बीच के हमले में एक आदमी को भी चला सकता था।


2
क्या खतरा केवल उस दौरान pipया उसके बाद के किसी भी चलाने के लिए लागू होता है?
ओरोम

2
लेकिन यह सच होगा कि मैं sudoया नहीं जब मैं pipसही हूं ? एक बार जब यह स्थापित हो जाता है, तो हम जोखिम में पड़ जाते हैं, कोई फर्क नहीं पड़ता कि यह वहां कैसे पहुंचा?
ओरोम

2
@raxacoricofallapatorius यह इस क्षेत्र में हो रहा है कि मैं उत्तर देने के लिए असहज हूं, इसलिए नहीं कि मुझे कोई विचार नहीं है (मेरे पास एक कूबड़ है और इसके लिए कारण दे सकते हैं), लेकिन क्योंकि यह अनुमान लगाने में बहुत कठिन है कि कुल मिलाकर इस तरह के छोटे परिवर्तन कैसे प्रतीत होते हैं? सुरक्षा। इसके अलावा, आमतौर पर न केवल बचने के लिए, sudoबल्कि इन अनुमति मुद्दों को पैकेजों को कहीं और स्थापित करके (जैसे एक वर्चुअन में) बेहद सरल है । ऐसा करना सभी सुरक्षा चिंताओं की अनदेखी करते हुए भी बेहतर और अधिक विश्वसनीय हो सकता है।

2
@raxacoricofallapatorius सटीक लिखने की अनुमति और निर्देशिका लेआउट के आधार पर, मुझे डर है कि अधिक परिष्कृत मैलवेयर अन्य, अधिक विश्वसनीय कोड को अधिलेखित कर देगा, जैसे कि सिस्टम उपयोगिताओं द्वारा उपयोग किए जाने वाले कोड रूट के रूप में नियमित रूप से चलते हैं।

2
यह उत्तर विचित्र है। बेशक, जब आप अपने साथ कुछ चलाते sudoहैं तो इसे रूट विशेषाधिकार देते हैं; यह पूरी बात है sudo, और निश्चित रूप से विशिष्ट नहीं है pip

19

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

डिस्ट्रोस इस समस्या से अवगत हैं और इसे कम करने की कोशिश करते हैं। उदाहरण के लिए, फेडोरा - साइटो-पैकेज के बजाय सूडो पाइप को सुरक्षित और डेबियन - डिस्ट-पैकेज बनाना


6

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

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


इसलिए मुझे केवल इतना करना चाहिए, उदाहरण के लिए, अपने आप को अनुमति लिखने दें site-packages?
23

1
@raxacoricofallapatorius सिर्फ वहीं नहीं है, क्योंकि कुछ पैकेज हेल्पर स्क्रिप्ट भी स्थापित करते हैं (जैसे कि pipखुद, IPython, django, pyolution, ...) तो आपको वे निर्देशिका जो भी वे खुद को स्थापित करने के लिए उपयोग की आवश्यकता होगी,
23

हां और ना। मैं कोई सुरक्षा विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि स्क्रिप्ट चलाने वाले उपयोगकर्ता के पास लिखित अनुमति नहीं है तो बेहतर है। इसलिए मैं एक अलग उपयोगकर्ता के बजाय सुझाव देता हूं।
सिलिकन

@MattDMo: हां, इससे समझ में आता है; लेकिन उन मामलों को आसानी से खोजा जाता है क्योंकि उचित अनुमति के बिना चीजें विफल हो जाती हैं। अगर ऐसा किया जाता है, तो क्या यह सबसे सुरक्षित तरीका नहीं है, तो सबसे बुरा जो मेरे सिस्टम में हो सकता है वह यह है कि क्या हो सकता है जब मैं कुछ भी चलाऊं, सही? एकमात्र अंतर यह है कि मैं संभावित रूप से मेरे रूप में अपने पायथन इंस्टॉलेशन को बर्बाद कर सकता हूं (बजाय यह करने के लिए सु करने के लिए), सही?
ऑरोम

मैं इस तरह का उपयोगकर्ता कैसे बना सकता हूं, उपयोग करने के एकमात्र उद्देश्य के लिए pip(सिस्टम में कोई अन्य परिवर्तन नहीं, जैसे एक नया होम निर्देशिका, आदि की आवश्यकता है)? उसके बाद मुझे लगता है कि मैं सिर्फ site-packagesउस उपयोगकर्ता के मालिक को बदल देता हूं , सही है?
ओरोम

1

केवल एक ही चीज़ "गलत" के साथ sudoहै, यह है, ठीक है, सुपर यूजर अला रूट के रूप में डीओएस का अर्थ है कि आप संभावित रूप से गलत कमांड के साथ एक इंस्टॉलेशन को नष्ट कर सकते हैं। चूंकि पीआईपी एक विशेष कार्यक्रम के लिए एक पैकेज मेंटेनेंस है, इसलिए आपको बदलाव करने के लिए किसी भी तरह की पहुंच की आवश्यकता होगी ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.