रूट के स्वामित्व वाली फाइलों को रूट के स्वामित्व में न होना बुरा क्यों है?


28

यह एक और सवाल के लिए एक टिप्पणी में आया था और मुझे अच्छा लगेगा अगर कोई मुझे इसके कारणों को समझा सके।

मैंने सुझाव दिया है कि अपाचे एक उपयोगकर्ता के घर निर्देशिका को दिए गए VHost के लिए त्रुटियों को लॉग करता है। यह नीचे गोली मार दी गई क्योंकि यह असुरक्षित था। क्यूं कर?

मैंने एक उत्तर टिप्पणी में स्पष्टीकरण के लिए कहा, लेकिन मुझे केवल इतना मिला कि रूट के स्वामित्व वाले फ़ोल्डर में रूट लेखन करना असुरक्षित है। फिर, कोई समझा सकता है?

धन्यवाद,

बार्ट।


4
क्या अपाचे जड़ के रूप में चल रहा है - कम से कम विशेषाधिकार का सिद्धांत उसके खिलाफ रोता है!
जोनाथन लेफलर

1
अपाचे www के रूप में चल रहा है, लेकिन इसे रूट के रूप में शुरू किया जा रहा है, इसलिए यह मानक के रूप में 80 को पोर्ट कर सकता है। जाहिर तौर पर यह रूट के रूप में भी लॉग होता है।
बार्ट बी

जवाबों:


31

क्योंकि एक दुष्ट उपयोगकर्ता दुर्भावनापूर्ण रूप से उस बिंदु को इंगित करने का प्रयास कर सकता है जो फ़ाइल rootको किसी अन्य स्थान पर लिख रहा है । यह इतना आसान नहीं है, लेकिन वास्तव में संभव है।

एक उदाहरण के रूप में, यदि कोई उपयोगकर्ता अपाचे लॉग से सिम्कलिन बनाने का तरीका ढूंढ लेगा, तो , आदि / छाया आपको अचानक अनुपयोगी प्रणाली कहलाएगी। अपाचे ( root) सिस्टम को दोषपूर्ण बनाते हुए आपके उपयोगकर्ताओं की साख को अधिलेखित कर देगा।

ln -s /etc/shadow /home/eviluser/access.log

यदि access.log फ़ाइल उपयोगकर्ता द्वारा लिखने योग्य नहीं है, तो इसे हाईजैक करना मुश्किल हो सकता है, लेकिन संभावना से बचना बेहतर है!

नौकरी करने के लिए लॉगरोट का उपयोग करने की संभावना हो सकती है , पहले से मौजूद फाइल का लिंक नहीं बना सकता है, लेकिन लॉग्स बढ़ते ही लॉगोटेट ओवरराइट हो जाएगा:

ln -s /etc/shadow /home/eviluser/access.log.1

नोट :

कॉन्सेप्ट के प्रमाण के रूप में दी जाने वाली सिम्लिंक विधि संभावित हमलों में से एक है।

सुरक्षा को एक व्हाइट लिस्ट दिमाग से बनाया जाना चाहिए , न कि हम जिसे एक मुद्दा बनाना जानते हैं , उसे ब्लैकलिस्ट करना ।


क्या इस पर अनुमतियाँ सेट करने का कोई तरीका है ताकि वे केवल फ़ाइल को पढ़ सकें और हटा नहीं सकें, संपादित कर सकें या कुछ और न कर सकें (जैसे कि चाउन, चामॉड, आदि)।
यहोशू

आपको यह ऑपरेशन हर संभव लक्ष्य फ़ाइल पर करना चाहिए! यह लिखने योग्य फ़ाइल पसंद की गई है, न कि खुद उस लिंक की जो हमलावर के स्वामित्व में है क्योंकि उसने इसे बनाया था।
drAlberT

2
@ जोशुआ: चाउन केवल जड़ द्वारा किया जा सकता है। chmod जो भी फ़ाइल का मालिक है, द्वारा किया जा सकता है। IIRC, नामकरण जो भी निर्देशिका का मालिक है द्वारा किया जा सकता है। जैसा कि अल्बर्ट टी का उल्लेख है, रूट बनाने से पहले एक लिंक बनाना फ़ाइल को निर्देशिका द्वारा जो कोई भी लिख सकता है, किया जा सकता है।
ATK

2
@atk: इसके अतिरिक्त, जो कोई भी निर्देशिका का मालिक है वह आम तौर पर इससे फाइलें निकाल सकता है (जब तक कि चिपचिपा +tबिट सेट न हो), भले ही उनके पास खुद फाइलों की लिखित अनुमति न हो (क्योंकि अनलिंक) निर्देशिका के लिए एक लेखन है, न कि फ़ाइल)। यहां तक ​​कि अगर रूट समय से पहले फ़ाइल बनाता है, तो निर्देशिका मालिक अभी भी इसे हटाने में सक्षम हो सकता है और इसे सिम्लिंक के साथ किसी अन्य चीज़ से बदल सकता है।
जेम्स स्नेनरिंग

1
यदि बुराई करने वाला / गृह / दुष्ट व्यक्ति लिख सकता है (या निर्देशिका पर अनुमतियों को बदल सकता है - वे इसके मालिक हैं, IOW), तो इससे कोई फर्क नहीं पड़ता कि access.log पर अनुमतियाँ क्या हैं; दुष्ट व्यक्ति फ़ाइल को स्थानांतरित कर सकता है और अपनी जगह पर अपना सिमलिंक लगा सकता है। एक और सवाल यह है कि क्या सॉफ्टवेयर इस पर ध्यान देता है कि वह क्या खोलता है।
जोनाथन लेफलर

1

प्रक्रियाओं के न होने का सामान्य सिद्धांत एक निर्देशिका में लिखते हैं जो उनके पास नहीं है या विश्वास एक अच्छा है। लेकिन इस विशेष मामले में, यह विश्वास करना उचित है कि Apache कोड O_NOFOLLOWआदि के साथ लॉग को खोलता है : उपयोगकर्ता के होम डायरेक्टरी में लॉग इन करना एक सामान्य सेटअप है।

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