
पहले के Samsung फोनों में शामिल /dev/exynos-mem भेद्यता का शोषण।
यह पिछले सैमसंग फोनों में पेश की गई /dev/exynos-mem भेद्यता का शोषण करने का एक POC है।
यह कर्नेल भेद्यता अनुसंधान में रुचि और एक CTF चुनौती के हिस्से के रूप में किया गया था।
इन फोनों में पेश की गई भेद्यता exynos-mem डिवाइस की अनुमतियाँ हैं। इसने उपयोगकर्ताओं को गैर-रूट होने पर भी R/W दोनों की अनुमति दी!
exynos-mem डिवाइस एक ऐसा उपकरण है जो आपको सीधे /dev/mem पर पढ़ने/लिखने की सुविधा देता है, जिसका अर्थ है कि आप सीधे कर्नेल कोड/डेटा में लिख सकते हैं।
/proc/iomem का उपयोग करके आप जल्दी से पता लगा सकते हैं कि कौन से भौतिक पते operating system पर किस मेमोरी के अनुरूप हैं, और यह भी पता लगा सकते हैं कि Kernel Code / Data मेमोरी कहाँ है।
शोषण इससे रूट प्राप्त करने के लिए कुछ कार्य करता है:
/proc/kallsyms तक पहुंच नहीं सकते, जो हमें बाधित करता है। इसलिए, हम kallsyms में उपयोग किए गए फ़ॉर्मेट स्ट्रिंग को खोजने के लिए कर्नेल मेमोरी को स्कैन करते हैं (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);)
और इसे %pK के बजाय %p बनाने के लिए पैच करते हैं ताकि प्रतीक पते हमें उपयोगकर्ताओं के रूप में मुद्रित हो सकें।nsown_capable का पता खोजने के लिए /proc/kallsyms पढ़ें, जिसका उपयोग यह पहचानने के लिए किया जाता है कि setuid() कॉल करने वाले उपयोगकर्ता के पास ऐसा करने की अनुमति है या नहीं।nsown_capable के फ़ंक्शन कोड को बस return true; से ओवरराइट करें, जिससे कोई भी उपयोगकर्ता अपनी इच्छानुसार किसी भी uid पर setuid() कॉल कर सके।setuid(0) और system(/bin/sh) को कॉल करें।फ़ाइल में स्थिरांक को आपके सिस्टम के लिए सही करने के लिए थोड़ा बदलने की आवश्यकता हो सकती है; उन्हें आवश्यकतानुसार सेट करें।