
CVE-2023-6241 का Google Pixel 7 के लिए अनुकूलन, Google Pixel 8 से और securitylab/SecurityExploits/Android/Mali/CVE_2023_6241 से लिया गया।
यह रिपॉजिटरी बताएगी कि कैसे securitylab द्वारा अपने GitHub रिपॉजिटरी में प्रकाशित एक्सप्लॉइट, जो गूगल पिक्सल 8 के लिए काम करता है, को गूगल पिक्सल 7 के लिए अनुकूलित किया जाए।
एक्सप्लॉइट के संशोधन को शुरू करने से पहले, यह धारणा कि मूल एक्सप्लॉइट गूगल पिक्सल 7 उपकरणों (आवश्यक पैच के बाद) पर भी काम करता था, CVE-2023-6241 से जुड़े लेख के आधार पर बनाई गई थी। यह आवश्यक था क्योंकि दोनों उपकरण (हार्डवेयर की दृष्टि से) भिन्न प्रतीत होते हैं (तुलना)।
यहां विश्लेषण करने और जानकारी या फ़ाइलें निकालने के लिए उपयोग किए गए उपकरण दिए गए हैं।
निम्नलिखित बताता है कि शुरुआत से लक्ष्य कैसे प्राप्त किया गया।
डिवाइस में डेवलपर विकल्प सक्षम करें।
डिवाइस को सही सुरक्षा पैच (इस मामले में UP1A.231105.003, नवंबर 2023 और [UQ1A.240205.002, फरवरी 2024](https://developers.google.com/google## पैंथरuq1a.240205.002) दोनों के बीच एक) के साथ फ्लैश करें, संभवतः Google Chrome और Android फ़्लैश टूल का उपयोग करके Nexus और Pixel उपकरणों के लिए फ़ैक्टरी इमेज पेज पर इच्छित प्रविष्टि में "फ़्लैश" पर क्लिक करें।
नोट 1: डिवाइस को फ्लैश करने के लिए Android फ़्लैश टूल का उपयोग करने से बूटलोडर संस्करण से संबंधित समस्याओं को हल करने में मदद मिल सकती है। ये समस्याएं Nexus और Pixel उपकरणों के लिए फ़ैक्टरी इमेज पृष्ठ पर "लिंक" पर क्लिक करके डाउनलोड की गई संपीड़ित फ़ाइल के साथ प्रदान की गई स्क्रिप्ट का उपयोग करके फ्लैश ऑपरेशन के दौरान दिखाई दे सकती हैं।
नोट 2: डिवाइस को फ्लैश करने से पहले, Android फ़्लैश टूल में "Force Flash all partition" चेक करें ताकि स्क्रिप्ट के समान परिणाम प्राप्त हो सके।
"लिंक" पर क्लिक करके वांछित Android इमेज डाउनलोड करें और मुख्य संपीड़ित फ़ाइल "panther-<release>-factory-<SHA-256 के पहले 8 अक्षर>.zip" के अंदर संपीड़ित "image-panther.zip" फ़ाइल से boot.img फ़ाइल निकालें।
./imjtool.ELF64 boot.img extract निष्पादित करें। नया फ़ोल्डर "extracted" बनाया जाएगा जिसमें दो फ़ाइलें होंगी। 
vmlinux-to-elf ./extracted/kernel.decompressed <filename>.elf निष्पादित करें (भविष्य के संदर्भ के लिए <filename>.elf को Pixel7-kernel.elf कहा जाएगा)। प्रदान किए गए नाम के साथ एक नई फ़ाइल बनाई जाएगी।
अधिक जानकारी शुरुआत में उल्लिखित GitHub लेख और GitHub रिपॉजिटरी से प्राप्त की जा सकती है।

Ghidra के साथ "Pixel7-kernel.elf" खोलें। स्वचालित विश्लेषण करना आवश्यक नहीं है क्योंकि इसमें बहुत समय लगता है और जानकारी फिर भी निकाली जा सकती है।
"प्रतीक तालिका" विंडो खोलें और संबंधित फ़ील्ड खोजें (इस मामले में avc_den|sel_read_enforce$|init_cred|^commit_creds$)। परिणाम कुछ इस प्रकार होना चाहिए: 
स्थान पते पर जाएं और सभी खोजे गए फ़ील्ड के लिए "इमेजबेस ऑफ़सेट" प्राप्त करें। 
एक्सप्लॉइट में सभी ऑफ़सेट को पाए गए अनुसार सेट करें। 
ADD_COMMIT_2311 और ADD_INIT_2311 के मान की गणना करें क्रमशः निम्नलिखित संक्रियाओं add x8, x8, #0xXXX और add x0, x0, #0xYYY का HEX मान ऑनलाइन असेंबलर और डिसअसेंबलर का उपयोग करके ज्ञात करें। XXX और YYY के मान ज्ञात करने के लिए, COMMIT_CREDS_2311 और ADD_INIT_2311 से क्रमशः न्यूनतम 12 बिट्स कॉपी करना पर्याप्त है (उदाहरण के लिए यदि ADD_COMMIT_2311 0x17f0c8 है, तो add x8, x8, #0x0c8 का HEX कोड 0x91032108 है)।
ध्यान दें कि मान बिग-एंडियन में व्यक्त किए गए हैं, इसलिए परिणामी बाइट्स को उलटने की आवश्यकता है।
GLES_mali.so को /vendor/lib64/egl/libGLES_mali.so से कॉपी करें (अर्थात adb pull /vendor/lib64/egl/libGLES_mali.so) और निम्नलिखित के साथ सब कुछ संकलित करें: /home/gobbo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang -g -DSHELL -DCL_TARGET_OPENCL_VERSION=300 -I. -L. mali_jit_csf.c mem_read_write.c mempool_utils.c -lGLES_mali -o mali_jit_csf.
नोट: समय की स्थिरता के लिए, एक्सप्लॉइट में उपयोग किया गया OpenCL लाइब्रेरी संस्करण उस सुरक्षा पैच से पहले उपलब्ध नवीनतम था जिसने भेद्यता को ठीक किया (अर्थात संस्करण 2023.04.17)
एक्सप्लॉइट अपलोड और निष्पादित करें:
adb push ./mali_jit_csf /data/local/tmp
export LD_LIBRARY_PATH=/vendor/lib64/egl
./data/local/tmp/mali_jit_csf