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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/sammyenigma/cve-2026-43499-s26
एंड्रॉइड सुरक्षाविशेषाधिकार वृद्धिमेमोरी फोरेंसिकस्थायित्व तंत्रशोषणरिवर्स इंजीनियरिंगशेलकोडपोस्ट-शोषणमोबाइल सुरक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHubsammyenigma/cve-2026-43499-s26

CVE-2026-43499-S26

Android GKI 6.12 kernel exploit for CVE-2026-43499, rt_mutex rollback bug को pselect stack overwrite के साथ जोड़कर Samsung और Pixel devices पर root प्राप्त करने के लिए।

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

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

सभी देखें →

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

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

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

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

CVE-2026-43499 — Android GKI 6.12 pselect / configfs कर्नल एक्सप्लॉइट

Android GKI 6.12 लाइन (Samsung और Pixel डिवाइस) के लिए एक Linux कर्नल एक्सप्लॉइट जो CVE-2026-43499 को लक्षित करता है: rt_mutex_start_proxy_lock() में एक बगी remove_waiter() रोलबैक जो waiter::task के बजाय current का उपयोग करता है, जिससे एक waiter का pi_blocked_on उसके (बाद में पॉप किए गए) कर्नल स्टैक rt_mutex_waiter पर लटका रह जाता है। एक pselect() fd_set स्टैक ओवरराइट और एक consumer sched_setattr-संचालित नकली rb_tree वॉक के साथ मिलकर, यह एक नियतात्मक कर्नल राइट प्रिमिटिव और पूर्ण रूट देता है।

एक्सप्लॉइट एक LD_PRELOAD शेयर्ड लाइब्रेरी (preload.so) के रूप में चलता है और रूट के बाद के आर्टिफैक्ट के रूप में एक रूट su डेमन और वॉलपेपर इंस्टॉल करता है।

स्थिति: सक्रिय विकास। m1q (ZF1) लक्ष्य ब्रिंग-अप का फोकस है। pipei tmp_page-uname bootstrap वर्तमान सक्रिय मार्ग है: वॉक डिवाइस पर साफ़ सिद्ध है (बिल्ड #33: प्रति-चाइल्ड सीडेड rt_mutex क्षेत्र) और पूर्ण 168-उम्मीदवार स्वीप प्रगति पर है। configfs CFI मार्ग m1q पर एक डेड एंड है (Rust ashmem — कोई इंजेक्टेबल fops स्लॉट नहीं) और C-ashmem लक्ष्यों के लिए मार्ग बना हुआ है। प्रति-लक्ष्य ऑफ़सेट डिवाइस के अनुसार भिन्न होते हैं — उन पर भरोसा करने से पहले वास्तविक कर्नल बाइनरी के विरुद्ध सत्यापित करें।

कमजोर प्रिमिटिव (CVE-2026-43499)

जब FUTEX_CMP_REQUEUE_PI एक waiter को रीक्यू करता है और रीक्यू की डेडलॉक-डिटेक्शन चेन वॉक -EDEADLK लौटाती है, तो __rt_mutex_start_proxy_lock() remove_waiter() (rtmutex.c:1535) के माध्यम से रोलबैक करता है। रोलबैक waiter को वेट ट्री से सही ढंग से डीक्यू करता है लेकिन रीक्यू कॉलर के pi_blocked_on को साफ़ करता है, waiter->task->pi_blocked_on के बजाय। WAITER का pi_blocked_on उसके स्टैक rt_mutex_waiter पर लटका रहता है, जो futex टाइमआउट होने पर पॉप हो जाता है।

टाइमआउट के बाद, waiter का कर्नल स्टैक क्षेत्र पुनः उपयोग किया जाता है: core_sys_select() तीन fd_sets को उस स्टैक बफ़र में कॉपी करता है (ZF1 पर nfds < 344 स्टैक पथ)। एक तैयार किया गया fd_set वर्ड एरे एक नकली rt_mutex_waiter / नकली task / नकली rt_mutex (जिसका rb_tree रूट पॉइंटर नियंत्रित होते हैं) को पुनः भौतिक रूप देता है। फिर एक consumer थ्रेड sched_setattr_tid(waiter) → rt_mutex_adjust_pi() → rb_erase_cached को कॉल करता है, जो एक नियंत्रित मान का मनमाना पता राइट उत्पन्न करता है।

पूरे प्रिमिटिव के लिए PI चेन साइकल आवश्यक है: owner f_pi_target रखता है और f_pi_chain (जो waiter के पास है) पर भी ब्लॉक करता है, इसलिए चेन वॉक owner → chain → waiter → target → owner तक पहुँचती है और -EDEADLK के साथ विफल होती है। साइकल हटाने पर रीक्यू शून्य कर्नल प्रभाव के साथ सफलता लौटाता है।

एक्सप्लॉइटेशन चेन

  1. Slide (KASLR) — कर्नल बेस लीक करें। दो मार्ग:
    • tracefs sched_blocked_reason (m1q प्राथमिक, डिवाइस पर सिद्ध): एक ब्लॉक्ड kworker का सहेजा गया रिटर्न PC (stack_trace_save_tsk) रिंग बफ़र से पढ़ा जाता है और कंपाइल-इन worker_thread ऑफ़सेट के विरुद्ध तुलना की जाती है। यह किसी भी boot_id-मार्ग शब्दों के उपयोग से पहले चलता है ताकि डेटा-एलियास राइट लक्ष्य (data_addr() = p0 एलियास + slide_p0_offset) गैर-शून्य slide पर सही रहें।
    • boot_id pselect मार्ग (फ़ॉलबैक, slide-स्वतंत्र): एक pselect राइट लीनियर-मैप एलियास के माध्यम से boot_id sysctl डेटा में SLIDE_LOGGERS_0_1 रखता है; लीक किया गया मान stext का पुनर्निर्माण करता है। m1q पर पार्क किया गया: इसका W1 लक्ष्य (SLIDE_RANDOM_BOOT_ID_DATA_OFF, निम्न भौतिक RAM) पेज-निर्भर राइटेबिलिटी रखता है — slide प्रति बूट लक्ष्य को पेज सीमाओं के पार ले जाता है, इसलिए ~6/7 रन फ़ॉल्ट करते हैं। केवल SLIDE_FORCE_BOOTID (मेकैनिज़्म टेस्ट) के माध्यम से स्पष्ट रूप से प्रयोग किया जाता है, जिसमें tree_pc/tree_left स्प्रे किए गए पेज पर रीडायरेक्ट होते हैं।
  2. KernelSnitch — mm_struct-आकार की वस्तुओं को स्प्रे करें और हीप पर एक mm_struct का पता लगाने के लिए futex-hash कोलिज़न का उपयोग करें, जो नकली-ऑब्जेक्ट स्प्रे बेस के रूप में उपयोग किया जाने वाला कर्नल हीप पेज पता लीक करता है। क्लीनअप पर waiters डिटैच (जॉइन नहीं) किए जाते हैं ताकि कर्नल-स्टैक OOM से बचा जा सके जिसने #26 से पहले के बिल्ड्स को क्रैश किया।
  3. मुख्य मार्ग — pipei tmp_page bootstrap (m1q, वर्तमान फोकस) — मूल configfs CFI मार्ग m1q पर एक डेड एंड है: Rust ashmem में कोई इंजेक्टेबल स्टैटिक write_iter स्लॉट नहीं है और ASHMEM_SET_NAME हीप ऑब्जेक्ट एक KVec है जिसका लेआउट configfs_bin_write_iter के private_data के साथ मेल नहीं खाता। m1q इसके बजाय kmalloc राइट की ओर मुड़ता है: लीक किए गए mm order-3 ब्लॉक को pipe_inode_info ऑब्जेक्ट के रूप में रीक्लेम करें और pselect W1 राइट (*(tree_left) = tree_pc) का उपयोग करके एक उम्मीदवार के tmp_page स्लॉट (+0x90) को UTS namespace पेज (init_uts_ns) से ओवरराइट करें। एक fanout राइट sysname ऑफ़सेट पर एक मार्कर नाम रखता है और uname() "CatOS" रिपोर्ट करता है — बिना किसी स्टैटिक-ऑब्जेक्ट निर्भरता के एक सत्यापन योग्य कर्नल राइट। C-ashmem लक्ष्य configfs पथ रखते हैं।
  4. Pipe physrw — भौतिक रीड/राइट के लिए स्प्रे किए गए कर्नल पेज में pipe बफ़र पेज फ़ोर्ज करें: cred पैचिंग, SELinux डिसेबल, और सीधा कर्नल मेमोरी मैनिपुलेशन।
  5. Root — रूट चाइल्ड के cred (uid/gid/caps/SELinux SID) को पैच करें, फिर preload.c एम्बेडेड su डेमन इंस्टॉल करता है (tmpfs-माउंटेड /apex/com.android.virt/bin में, साथ ही adbd-namespace और लोकल वेरिएंट) और वॉलपेपर बदल देता है।

वॉक आकार (m1q, डिवाइस पर सिद्ध)

pselect fd_set शब्द waiter के कर्नल स्टैक पर एक नकली rt_mutex_waiter को पुनः भौतिक रूप देते हैं; एक consumer थ्रेड का sched_setattr_tid(waiter) इसे rt_mutex_adjust_pi() के माध्यम से वॉक करता है। ZF1 वर्ड मैप (disasm-सत्यापित): PSELECT_WAITER_WORD_SHIFT = 0, वर्ड 12 = task (@+0x50), वर्ड 13 = lock (@+0x58), वर्ड 14 = wake_state (@+0x60 = 3)। एक सीडेड नकली rt_mutex के साथ वॉक साफ़-सुथरे ढंग से पूरा होता है: [7] के rb_erase W1 *(tree_left)=tree_pc / W2 *(tree_pc&~3+8)=tree_left ही एकमात्र कर्नल राइट हैं; [11] (setprio / dequeue_pi) और [9] wake दोनों छोड़ दिए जाते हैं (prio 100 पर लोकल नकली waiter स्टैक नोड को top-waiter से बाहर रखता है)। बिल्ड #19 के बाद से हर वॉक-एंटर्ड कम्प्लीशन डिवाइस पर जीवित रहता है; उससे पहले के नियतात्मक क्रैश एक 8-बाइट पेलोड प्लेसमेंट त्रुटि (SKB_DATA_DELTA) थे, वॉक-बॉडी फ़ॉल्ट नहीं।

स्टेज 3 (pgd-swap ब्रिज, केवल static/build)

वैकल्पिक STAGE3=1 चरण जो एक ब्रिज चाइल्ड को फ़ोर्क करता है, उसके mm->pgd को एक स्टेज्ड नकली पेज टेबल (3-लेवल: PGD→L1→L2, RX लूप लीफ + RW स्टैक लीफ) में स्वैप करता है, और चाइल्ड को एक रजिस्टर-ओनली असेंबली ब्लॉब चलाने देता है जो 2MB भौतिक स्कैन विंडो के माध्यम से अपने स्वयं के cred को पैच करता है — configfs/pipe प्रिमिटिव के बिना all-RAM phys R/W। वर्तमान में केवल m1q लक्ष्य में वायर्ड है और डिवाइस पर नहीं चलाया गया है।

समर्थित लक्ष्य

src/targets/<codename>-<build>/ में 41 लक्ष्य, प्रत्येक को न्यूनतम एक target.h (कर्नल सिंबल ऑफ़सेट, KIMAGE_TEXT_BASE, direct-map बेस, struct ऑफ़सेट) की आवश्यकता होती है। Pixel लक्ष्य (comet, tokay, tegu, caiman, komodo, frankel, mustang, rango, stallion, blazer) शेयर्ड सोर्स को ओवरराइड करते हैं; Samsung लक्ष्य (m1q-*) डिवाइस-विशिष्ट लॉजिक जोड़ते हैं।

make list-projects   # पूरी सूची

कर्नल struct लेआउट प्रति डिवाइस भिन्न होते हैं — ऑफ़सेट प्रत्येक लक्ष्य के लिए वास्तविक कर्नल बाइनरी / kallsyms के विरुद्ध सत्यापित किए जाने चाहिए।

बिल्ड

आउटपुट: build/<PROJECT>/bin/preload.so (LD_PRELOAD के माध्यम से लोड की गई शेयर्ड लाइब्रेरी)।

# डिफ़ॉल्ट प्रोजेक्ट
CC=clang make

# विशिष्ट डिवाइस लक्ष्य (डिफ़ॉल्ट: blazer-CP2A.260605.012)
CC=clang make PROJECT=m1q-BP4A.251205.006

# CC=clang के बिना: यदि मिले तो NDK का उपयोग करता है ($NDK_ROOT / $ANDROID_NDK_HOME /
# $ANDROID_NDK_ROOT), अन्यथा होस्ट clang + Android sysroot
make PROJECT=m1q-BP4A.251205.006

# बिल्ड कॉन्फ़िगरेशन दिखाएँ
make info

# क्लीन
make clean

बिल्ड एक PIE su_daemon बाइनरी (src/su_daemon.c, build/embed/su_daemon_aarch64_pie में बिल्ट) और assets/wallpaper.webp को src/su_blob.S / src/wallpaper_blob.S के माध्यम से preload.so में एम्बेड करता है।

डिवाइस पर चलाएँ

टूल डाउनलोड करें