बढ़ते / tmp noexec कितना उपयोगी है?


39

कई लोग ( सेक्योरिंग डेबियन मैनुअल सहित ) विकल्पों /tmpके noexec,nodev,nosuidसेट के साथ बढ़ते की सलाह देते हैं। यह आम तौर पर एक 'डिफेंस-इन-डेप्थ' रणनीति के एक तत्व के रूप में प्रस्तुत किया जाता है, एक हमले की वृद्धि को रोककर, जो किसी को एक फ़ाइल लिखने देता है, या किसी उपयोगकर्ता द्वारा एक वैध खाते के साथ हमला करता है लेकिन कोई अन्य लिखने योग्य स्थान नहीं है।

समय के साथ, हालांकि, मैंने दलील का सामना किया है (सबसे प्रमुख रूप से डेबियन / उबंटू डेवलपर कॉलिन वॉटसन द्वारा) जो कि noexecकुछ संभावित कारणों से एक बेकार उपाय है:

  1. उपयोगकर्ता /lib/ld-linux.so <binary>उसी प्रभाव को प्राप्त करने के प्रयास में चल सकता है।
  2. उपयोगकर्ता स्क्रिप्ट पर सिस्टम-प्रदान किए गए दुभाषियों को अभी भी चला सकता है जो सीधे नहीं चलाए जा सकते हैं

इन तर्कों को देखते हुए, अधिक विन्यास की संभावित आवश्यकता (जैसे debconfएक निष्पादन योग्य अस्थायी निर्देशिका पसंद करती है), और सुविधा की संभावित हानि, क्या यह एक सार्थक सुरक्षा उपाय है? क्या अन्य छेद है कि आप परिधि को सक्षम करने के बारे में जानते हैं?


1
@ आनंद: मैंने सुना है कि एप्लिकेशन कभी-कभी टूट जाएंगे यदि / tmp निष्पादन योग्य नहीं है। मैं अभी तक वास्तव में ऐसा होता हुआ देख रहा हूं। TuxGuitar-1.2 को देखें ... ऐसा होता है। शुरू नहीं होगा अगर / tmp को नोइसेक विकल्प के बिना माउंट नहीं किया गया है, क्योंकि यह वहां पुस्तकालयों को अनपैक करता है और फिर उन्हें लोड करने की कोशिश करता है।

VMware के साइट रिकवरी मैनेजर "/ tmp" से स्क्रिप्ट चलाता है: IP कस्टमाइजेशन vCenter साइट रिकवरी मैनेजर (2021083) में रिकवरी प्लान की विफलता या परीक्षण विफलता के दौरान विफल रहता है: kb.vmware.com/selfservice/microsoftites/…

1
मुझे पता है कि sapppy नामक सम्पीडन उपयोगिता / tmp में .so फ़ाइल को गिरा देती है और यदि यह noexec माउंट हो तो नहीं चल सकती। (यह कैसेंड्रा और कफ़्का में डिफ़ॉल्ट रूप से उपयोग किया जाता है) IMHO यह एक कारण है कि तड़क
भड़क

जवाबों:


31

यहाँ मैं उपयोगिता के लिए तर्क दे रहा हूँ

आधुनिक कर्नेल /lib/ld-linux.soछेद को ठीक करते हैं , जिससे यह एक noexecफाइल सिस्टम से निष्पादन योग्य पृष्ठों को मैप करने में सक्षम नहीं होगा ।

दुभाषिया बिंदु निश्चित रूप से अभी भी एक चिंता का विषय है, हालांकि मुझे लगता है कि एक से भी कम लोग दावा कर सकते हैं। मैं जिस तर्क के साथ आ सकता हूं, वह यह है कि कई विशेषाधिकार वृद्धि कमजोरियां हैं जो विशेष रूप से विकृत syscalls बनाने पर निर्भर हैं। एक बाइनरी प्रदान करने वाले हमलावर के बिना, बुराई syscalls करना बहुत कठिन होगा। इसके अलावा, स्क्रिप्ट दुभाषियों को अप्रकाशित किया जाना चाहिए (मुझे पता है कि यह ऐतिहासिक रूप से कभी-कभी ऐसा नहीं होता है, जैसे कि एक suid perl के साथ), और इसलिए एक हमले में उपयोगी होने के लिए अपनी स्वयं की भेद्यता की आवश्यकता होगी। जाहिर है, पायथन का उपयोग करना संभव है, कम से कम, कुछ कारनामों को चलाने के लिए।

कई 'डिब्बाबंद' कारनामे निष्पादन योग्य को लिखने और चलाने की कोशिश कर सकते हैं /tmp, और इसलिए noexecएक स्क्रिप्टेड हमले (भेद्यता प्रकटीकरण और पैच स्थापना के बीच विंडो में) गिरने की संभावना कम कर देता है।

इस प्रकार, अभी भी बढ़ते /tmpहुए के लिए एक सुरक्षा लाभ है noexec

जैसा कि डेबियन के बग ट्रैकर में वर्णित है , एक निर्देशिका APT::ExtractTemplates::TempDirमें स्थापित apt.confकरना जो noexecरूट के लिए सुलभ नहीं है और डिबेंक चिंता को कम कर सकता है।


हालांकि, मैं है सुना है कि आवेदन पत्र कभी कभी अगर / tmp निष्पादन योग्य नहीं है टूट जाएगा। मैं अभी तक वास्तव में ऐसा होता हुआ देख रहा हूं।
6

जैसा कि प्रश्न में लिंक किए गए मैनुअल में उल्लेख किया गया है, यह एक विकल्प की स्थापना के बिना Debconf पैकेज पूर्व-विन्यास के साथ गड़बड़ करता है।
फिल मिलर

2
हां, नॉइसेक सुरक्षा के लिए एक बहुत अच्छी अतिरिक्त परत है और मैंने इसके कारण चीजों को कहर नहीं देखा है। पैकेज इंस्टॉलेशन केवल एक चीज है और यहां तक ​​कि यहां काम किया जा सकता है जैसा कि यहां उत्तर द्वारा बताया गया है। मेरे समाधान के रूप में मेरे पास इस तरह का एक उपनाम है: उपनाम अपडेट = "माउंट-निष्पादित, रीमाउंट / टीएमपी और एपीटी-अप अपडेट और& apt-get upgrade && माउंट-नो नॉइसेक, रिमाउंट /
टीएमपी

1
मुझे लगता है कि यह असामान्य है, लेकिन पैकेज संस्थापन संदर्भ के बाहर / tmp से कुछ निष्पादित करने के लिए लिखे गए पैकेज मौजूद हैं (जैसे, बेल्जियम इलेक्ट्रॉनिक पहचान पत्र का उपयोग करने के लिए मिडलवेयर का वर्तमान संस्करण)।
equaeghe

समान: क्या पैकेज है? इसे संभवतः बग के रूप में रिपोर्ट किया जाना चाहिए। मैं शर्त लगाने के लिए तैयार हूं कि इसमें जो भी उपयोग हो रहा है, उसमें एक सुरक्षा भेद्यता है।
फिल मिलर

7

कई डेबियन संकुल को स्थापित करने के लिए पैकेज के लिए निष्पादन योग्य होने की आवश्यकता होती है। इन्हें अक्सर बग ('सामान्य' / 'इच्छा सूची' की गंभीरता) के रूप में चिह्नित किया जाता है:

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

स्थिर शाखा में एक अद्यतन कर्नेल स्थापित करते समय मुझे यह त्रुटि मिली।

तो यह डेबियन (और डेरिवेटिव?) की तरह लग रहा है / tmp के लिए noexec मुहिम शुरू करने के लिए तैयार नहीं है ...


6

/etc/apt.conf, या, /etc/apt/apt.conf.d/50remount में निम्नलिखित जोड़ें

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
मैंने मामले में बदल दिया mountहै /bin/mount, ताकि पैट संशोधित हो जाए। तुम्हें कभी पता नहीं चलेगा।
लीकेनस्टीन

4

भले ही वर्कअराउंड सबसे पूरक सुरक्षा उपायों के लिए मौजूद हैं, जिन्हें आप लागू करना चुन सकते हैं, यहां तक ​​कि सबसे आसानी से खतना किए गए सुरक्षा उपाय (जैसे बढ़ते / tmp noexec या एक वैकल्पिक बंदरगाह पर SSH चलाना) स्वचालित या स्क्रिप्टेड हमलों को विफल कर देंगे या क्रम में चूक पर भरोसा करेंगे कार्य करना। यह एक निर्धारित और जानकार हमलावर के खिलाफ आपकी रक्षा नहीं करेगा, लेकिन अच्छी तरह से 99% से अधिक समय में, आप एक निर्धारित या जानकार हमलावर के खिलाफ नहीं होंगे। इसके बजाय, आप एक स्वचालित हमले की स्क्रिप्ट के खिलाफ खुद का बचाव करेंगे।


2

पहला: इसमें कई, अलग-अलग हमले के मामले शामिल हैं, इसे बंद करना क्योंकि इसके आस-पास कुछ ज्ञात तरीके थे (जिनमें से कुछ भी तय किए गए) अजीब हैं। हमलावरों को / देव / shm या / tmp पर कोड डाउनलोड करना एक सामान्य बात है जो वे करते हैं।

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

  • इसे iptables उपयोगकर्ता प्रतिबंध द्वारा भी रोका जा सकता है।
  • इसे SELinux द्वारा रोका भी जा सकता है।
  • आसानी से एक्सेस किए जाने वाले अन्य शोषण के कारण इसे रोका भी नहीं जा सकता है।

मुद्दा यह है कि आप इसे आसानी से जितना मुश्किल कर सकते हैं, और 99% हमलों को काट दें।

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

तीसरा: अनाम नामस्थानों को ध्यान में रखते हुए / tmp (एक "फीचर") में, आप वास्तव में वहां क्या रखा है और वहां से भागना चाहते हैं, को प्रतिबंधित करना चाहते हैं।

फोर्थ: सुविधा इस में एक प्रासंगिक कारक नहीं है। यह मानते हुए कि हम धन के लिए और एक उद्देश्य के लिए सर्वर चलाते हैं: हम इस सामान के लिए जिम्मेदार हैं। "ओह, मैंने लॉक / tmp नहीं किया क्योंकि तब मुझे कुछ और मिनटों की आवश्यकता होती है जब मैं अगले साल अपने सॉफ़्टवेयर को अपडेट करता हूं"। निश्चित रूप से यह केवल एक चीज नहीं होगी जो ब्लैकमेल होने और सिर्फ ठीक होने के बीच खड़ी है। एक बड़ी वजह? मुझे ऐसा नहीं लगता।

इसके बारे में क्या खयाल है:

"हमने पाया कि दुश्मन बिना किसी सूचना के हमला कर सकते हैं। वे खाने में जहर देने के लिए सैकड़ों जासूसों का इस्तेमाल कर सकते थे। इसलिए हमने अपने सैनिकों को बंदूकें सौंपना बंद कर दिया।"

रुको क्या?

ऐसे अन्य उपाय हैं जिनके लिए एक प्रणाली को सुरक्षित करने के लिए बहुत अधिक प्रयास, अनुभव और भाग्य की आवश्यकता होती है, और यह जानते हुए कि लोगों के पास सीमित पैसा, जीवन काल है और अपने परिवार के साथ समय बिताना चाहते हैं: आसान सामान को छोड़ें नहीं।


1

ऐसे अनुप्रयोग हैं जिन्हें स्थापित करने के लिए निष्पादन योग्य होने की आवश्यकता होती है। पिछली नौकरी में, इससे पहले कि मैं वहाँ पहुँचता / स्थापित करने के लिए tmp noexec था, लेकिन मुझे पता चला कि db2 पैकेज स्थापित होगा। यहां तक ​​कि अगर आप db2 पैकेज को कहीं और खोलते हैं, तो स्थापित प्रक्रिया कुछ फ़ाइलों / tmp को कॉपी करती है और उम्मीद करती है कि इसे निष्पादित करने में सक्षम होना चाहिए, जो निश्चित रूप से अनुमति से इनकार कर दिया। यदि आपको पता नहीं है कि फाइलसिस्टम noexec माउंट किया गया है, तो यह थोड़ा भ्रामक हो सकता है। यह केवल मैं noexec के बिना / tmp रिमूव होने के बाद भी जारी रखने में सक्षम था।

वैसे भी, मुद्दा यह है कि कम से कम एक वाणिज्यिक उत्पाद के लिए / tmp को noexec माउंट नहीं किया जाना चाहिए, और अन्य भी हो सकते हैं। मुझे इसके लिए वास्तव में सम्मोहक कारण नहीं मिला। यदि आप बेहतर सुरक्षा चाहते हैं, तो मैं इसके बजाय सेलाइन के साथ जाऊंगा।


सांबा भेद्यता के लिए एक कारनामे का विश्लेषण, जो एक noexec / tmp द्वारा रोका जाएगा: bobao.360.cn/learning/detail/4168.html (Chrome का Google अनुवाद अनुशंसित है। यह प्रारंभिक डेबिट को तोड़ देगा, साथ ही साथ पेलोड का बड़ा हिस्सा ...) (आप इस तरह से कई सामान्य स्वचालित कारनामे तोड़ सकते हैं ....)। mount -o remount,exec /tmpकाम करता है जब आपको सामान स्थापित करने की आवश्यकता होती है ... (हाँ, यह चारों ओर काम करने के लिए तुच्छ है, लेकिन कई हमलावर परेशान नहीं लगते ...)
गर्ट वैन डेन बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.