एक मानक लिनक्स फाइल सिस्टम में, इनमें से कौन सी सामान्य निर्देशिका डिफ़ॉल्ट रूप से विश्व-योग्य है ?
/tmp
/etc
/var
/proc
/bin
/boot
/....
....
वे विश्व-योग्य क्यों हैं? क्या यह सुरक्षा जोखिम पैदा करता है?
एक मानक लिनक्स फाइल सिस्टम में, इनमें से कौन सी सामान्य निर्देशिका डिफ़ॉल्ट रूप से विश्व-योग्य है ?
/tmp
/etc
/var
/proc
/bin
/boot
/....
....
वे विश्व-योग्य क्यों हैं? क्या यह सुरक्षा जोखिम पैदा करता है?
जवाबों:
केवल एफएचएस-अनिवार्य निर्देशिकाएं जो आमतौर पर विश्व-लेखन योग्य हैं /tmp
और /var/tmp
। दोनों मामलों में, ऐसा इसलिए है क्योंकि वे अस्थायी फ़ाइलों को संग्रहीत करने के लिए हैं जो किसी के द्वारा बनाई जा सकती हैं।
प्रक्रियाओं के बीच साझा किए गए मध्य-आकार के डेटा तक तेज़ी से पहुंचने या रिबूट पर नष्ट होने की गारंटी देने वाली फ़ाइलों को बनाने के लिए आम तौर पर /dev/shm
, एक tmpfs (RAM द्वारा समर्थित फाइलसिस्टम) के रूप में भी है।
वहाँ भी हो सकता है एक /var/mail
या /var/spool/mail
, और कभी-कभी अन्य स्पूलर निर्देशिका। यह संसाधित होने से पहले अस्थायी रूप से मेल रखने के लिए उपयोग किया जाता है। उपयोग में आने वाले उपकरणों के आधार पर वे हमेशा विश्व-योग्य नहीं होते हैं। जब वे होते हैं, तो ऐसा इसलिए है क्योंकि डेमों द्वारा प्रसंस्करण के लिए उपयोगकर्ता उपकरण द्वारा फाइलें वहां बनाई जा सकती हैं।
इन सभी निर्देशिकाओं में आमतौर पर चिपचिपा बिट ( t
) सेट होता है, जिसका अर्थ है कि केवल फ़ाइल या निर्देशिका का स्वामी ही इसमें फ़ाइलों को स्थानांतरित या हटा सकता है।
किसी भी उपयोगकर्ता के रूप में चलने वाला कोई भी प्रोग्राम इन निर्देशिकाओं में फ़ाइलें बना सकता है, और यह प्रोग्राम बनाने के लिए है कि जहां तक उसके विशेष डेटा की सुरक्षा की बात है, वह सही काम करता है। फ़ाइल सिस्टम को संभावित रूप से भरने वाले किसी व्यक्ति के अलावा कोई विशेष सामान्य सुरक्षा समस्या नहीं है, लेकिन किसी प्रोग्राम के गलत होने की बहुत गुंजाइश है।
किया गया है कुछ चलता रहता है सेवा-विशिष्ट दिशा /tmp
निर्देशिका। ये कुछ संभावित बग से बच सकते हैं, इसलिए यह कार्यक्रम के लिए महत्वपूर्ण नहीं है कि यह निर्देशिका का उपयोग करने में बग-मुक्त हो।
आप अपने सिस्टम पर विश्व-योग्य निर्देशिका पा सकते हैं:
find / -maxdepth 3 -type d -perm -777
/tmp
, /var/tmp
और /var/lock
डिफ़ॉल्ट रूप से विश्व-योग्य हैं। सिम्लिंक्स हो सकते हैं, जैसे /usr/tmp
→ /var/tmp
, पुराने अनुप्रयोगों के साथ संगतता के लिए प्रदान किया गया।
/tmp
और /var/tmp
विश्व-लेखन क्योंकि वे किसी भी अस्थायी भंडारण के लिए किसी भी उपयोगकर्ता द्वारा उपयोग किए जाने के लिए हैं। /var/lock
विश्व-योग्य है ताकि किसी भी उपयोगकर्ता के रूप में चल रही कोई भी प्रक्रिया, केंद्रीय स्थान में लॉक फाइलें बना सके।
क्या कोई सुरक्षा जोखिम है? नहीं, लेकिन हां की तरह।
उन निर्देशिकाओं के सभी के लिए अनुमतियाँ हैं 1777
प्रमुख के साथ, 1
किया जा रहा है चिपचिपा सा । इसका मतलब यह है कि जब कोई भी उन विश्व-लेखन योग्य निर्देशिकाओं में एक फ़ाइल बना सकता है, तो केवल स्वामी ही अपनी फ़ाइलों को हटा सकता है (और निश्चित रूप से, रूट उपयोगकर्ता भी कर सकता है)।
असुरक्षित टेम्पप फ़ाइल निर्माण से संभावित सुरक्षा जोखिम उत्पन्न हो सकता है। चूंकि वे निर्देशिका एक फ्री-फॉर-ऑल हैं, इसलिए उपयोगकर्ताओं को यह सुनिश्चित करने के लिए सावधानी बरतने की ज़रूरत है कि जो फ़ाइल वे बनाते हैं वह वास्तव में नई फ़ाइलें हैं, बजाय एक मौजूदा फ़ाइल या सिमलिंक को खोलने के जो किसी दुर्भावनापूर्ण उपयोगकर्ता द्वारा लगाए गए हैं। यदि उचित तकनीकों का उपयोग करके फ़ाइलें बनाई जाती हैं, जैसे कि open(…, O_EXCL)
या mkstemp(3)
, तो ऐसे जोखिम से बचा जाता है।
/tmp
यह जोखिम भरा है, क्योंकि आपको इसे सुरक्षित रूप से उपयोग करने के लिए अतिरिक्त कोड जोड़ने की आवश्यकता है। जाहिर है यह अनदेखी हो जाती है।
इसका एक ताजा उदाहरण स्टीव केम्प ने दिया है। http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
./mgmt/tools/SysAPI.cc: tmp = fopen("/tmp/shadow", "w"); ./mgmt/tools/SysAPI.cc: system("/bin/mv -f /tmp/shadow /etc/shadow");
यदि आप (हमलावर) दूसरी पंक्ति से पहले / tmp / शैडो को बदलते हैं, तो आपको हर किसी के पासवर्ड को बदलना होगा। (मुझे लगता है कि हमले के लिए आपको पहली पंक्ति से पहले फ़ाइल बनाने की आवश्यकता है, और फ़ाइल को विश्व-लेखन योग्य बनाना है)।
लिनक्स पर सिस्टमड कई सिस्टम सेवाओं के लिए अलग / tmp द्वारा ऐसी कमजोरियों को कम करने की अनुमति देता है। (सिवाय इसके कि "आईपीसी सॉकेट्स और अन्य संचार आदिमों के लिए एक स्थान के रूप में दुरुपयोग / tmp")।
फेडोरा लिनक्स में - http://fedoraproject.org/wiki/Features/ServicesPStreetTmp
सिस्टमड स्पष्टीकरण - http://0pointer.de/blog/projects/security.html
fopen
इसे अधिलेखित कर देता है, लेकिन अनुमतियाँ रीसेट नहीं करता है, इसलिए दुर्भावनापूर्ण उपयोगकर्ता अभी भी परिवर्तन कर सकता है। इसके अलावा, एक दुर्भावनापूर्ण उपयोगकर्ता ln -s /bin/bash /tmp/shadow
पहली पंक्ति से पहले कुछ ऐसा कर सकता था, जिससे एक आवश्यक सिस्टम बाइनरी ओवरराइट हो जाएगा।
विश्व लेखन योग्य निर्देशिकाओं को खोजने के लिए, आप उपयोग कर सकते हैं
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
फ़ाइलों के लिए प्रकार में परिवर्तित करें f
सीमलिंक के लिए टाइप करें l
चिपचिपा सा सेट करने के लिए:
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
/var/lock
/run/lock