SELinux-Permissive-Only-version-of-Cheese-aka-CVE-2025-21479
यह अभी के लिए Cheese एक्सप्लॉइट का केवल SELinux permissive संस्करण है, जिसे CVE-2025-21479 के नाम से भी जाना जाता है, जिसने कई डिवाइसों को प्रभावित किया था, जिनमें Samsung स्नैपड्रैगन डिवाइस भी शामिल हैं।
कुछ कोड निम्नलिखित रिपॉजिटरी से लिया गया है और मैं zhuowei को धन्यवाद देना चाहूँगा जिन्होंने मूल रूप से proof of concept को शुरू किया और sarabpal-dev को एक अच्छी तरह से बनाए रखी गई और सक्रिय रिपॉजिटरी रखने के लिए।
https://github.com/zhuowei/cheese
https://github.com/sarabpal-dev/cheese-cake
मैंने इस प्रोजेक्ट को एक चुनौती की तरह लिया और क्योंकि मैंने पहले कभी इतनी जटिल चीज़ में हाथ नहीं डाला था, इसलिए यह एक अच्छा सीखने का अनुभव था, भले ही यह अभी पूरा नहीं हुआ है। मैं मूल रूप से यह देखना चाहता था कि क्या पूरी चेन को पूरी तरह से अविश्वसनीय डोमेन से सीधे termux वातावरण में किया जा सकता है। मैं अब तक adb के उपयोग के बिना SELinux permissive प्राप्त करने में सफल रहा हूँ, कोड को मूल आकार के लगभग एक चौथाई तक छोटा कर दिया है, यह स्थिर है और आमतौर पर शुरू से अंत तक एक मिनट से भी कम समय लेता है और यह मेरे Samsung SM-S901W S22 Snapdragon पर लॉक बूटलोडर के साथ चलता है। मैंने अभी तक root primitive में गहराई से नहीं खोदा है और मुझे यकीन नहीं है कि यह adb के बिना किया जा सकता है, लेकिन मैं फिर भी कोशिश करूँगा। मुझे उम्मीद है कि यह लोगों को ऐसे काम करने की कोशिश करने के लिए प्रेरित करेगा जिन्हें आमतौर पर लोग कहते हैं कि नहीं किया जा सकता, शायद किसी के पास कोई ऐसा विचार हो जो काम करे। बेझिझक एक issue खोलें क्योंकि मैं किसी भी मददगार योगदान के लिए खुला हूँ।
ट्यूटोरियल
यह एक्सप्लॉइट वाकई बहुत आसान है और इसे आपके डिवाइस पर चलाने के लिए आपको कोड में लगभग कोई संपादन नहीं करना है। आपको बस इतना करना है:
- git clone रिपॉजिटरी करें और उसमें cd करें
- अपने सटीक फ़र्मवेयर से boot.img लें
- अपना kernel निकालने के लिए unpack_bootimg का उपयोग करें (यह पहले से termux में है)
- extract-kallsyms.c बाइनरी को संकलित करें और इसे अपने kernel पर चलाएँ
- अपना kallsyms.txt लें और इसे सीधे उस पथ में रखें जहाँ से आप एक्सप्लॉइट चलाने जा रहे हैं
cc -o gpu_sam gpu_sam.c -ldl के साथ संकलित करें
- यह चलते समय गतिशील रूप से आपके kallsyms.txt से गुज़रेगा ताकि सभी आवश्यक offsets ढूँढ सके
- आपके डिवाइस के आधार पर केवल इन मानों को बदलने की आवश्यकता होगी kernel base स्कैन के लिए
const uint64_t candidates[] = { 0xC0000000, 0xE0000000 }; और for (uint64_t addr = 0xa8000000; addr < 0xa8500000; addr += 0x8000) {
- यदि सब कुछ ठीक रहा तो आपको नियमित termux शेल से स्थिर selinux permissive मिल जाना चाहिए
नोट्स
smmu fault या kernel panic का जोखिम हमेशा बना रहेगा, लेकिन यह मेरे फोन पर kernel 5.10.168 के साथ बहुत अच्छी तरह से काम करता है और मुझे शायद ही कभी क्रैश मिलता है। आपको इसे कुछ बार चलाना पड़ सकता है या GPU स्थिति को रीसेट करने के लिए रिबूट भी करना पड़ सकता है। मैंने इसे यथासंभव उपयोगकर्ता के अनुकूल बनाया है। नीचे दिया गया वीडियो सिर्फ एक त्वरित डेमो है, मैं पहले से ही permissive था। आनंद लें
https://github.com/user-attachments/assets/63d0dfa7-1390-41ce-96da-9c34d8a220ec