गतिशील लोडर
समस्याको सार: सञ्चालनको क्रममा, ld.so ले पहिले वातावरणबाट LD_LIBRARY_PATH चरको मान निकाल्छ र, _dl_split_path() प्रकार्य प्रयोग गरेर, यसलाई स्ट्रिङको एर्रेमा परिणत गर्छ - डाइरेक्टरीहरूमा जाने बाटोहरू। यदि यो पछि जान्छ कि हालको प्रक्रिया SUID/SGID एप्लिकेसन द्वारा सुरु भएको हो, तब सिर्जना गरिएको एरे र, वास्तवमा, LD_LIBRARY_PATH चर खाली गरिन्छ। एकै समयमा, यदि _dl_split_path() मेमोरी समाप्त भयो (जुन वातावरण चरहरूको आकारमा स्पष्ट 256 kB सीमाको कारणले गाह्रो छ, तर सैद्धान्तिक रूपमा सम्भव छ), तब _dl_libpath चरले NULL मान प्राप्त गर्नेछ, र त्यसपछिको जाँचहरू यस चरको मानले _dl_unsetenv("LD_LIBRARY_PATH") मा कल छोड्न बाध्य पार्छ।
विज्ञहरूले भेट्टाएको जोखिम
थप्नुहोस्: समस्यालाई नम्बर तोकिएको छ
amd64 र i386 (शोषण अन्य वास्तुकलाको लागि अनुकूलित गर्न सकिन्छ)।
यो मुद्दा पूर्वनिर्धारित स्थापनामा शोषणयोग्य छ र chpass वा passwd suid उपयोगिताहरू चलाउँदा पुस्तकालय प्रतिस्थापन मार्फत मूल रूपमा कोड कार्यान्वयन गर्न विशेषाधिकार प्राप्त स्थानीय प्रयोगकर्तालाई अनुमति दिन्छ। सञ्चालनको लागि आवश्यक कम मेमोरी अवस्थाहरू सिर्जना गर्न, setrlimit मार्फत RLIMIT_DATA सीमा सेट गर्नुहोस्।
स्रोत: opennet.ru