
Honor 80 GT विशेषाधिकार उन्नयन PoC: GhostLock (CVE-2026-43499) + कस्टम KernelSU मॉड्यूल लोडिंग
अंग्रेज़ी | 中文
Honor 80 GT (AGT-AN00) के लिए एक लोकल प्रिविलेज एस्केलेशन एक्सप्लॉइट,
CVE-2026-43499 — कर्नेल के rtmutex remove_waiter पाथ में एक use-after-free — साथ ही एक सहायक KernelSU कर्नेल-मॉड्यूल लोडिंग समाधान।
सिद्धांत रूप में यह बग और यहाँ दी गई तकनीकें 9.0.0.230 तक के हर MagicOS बिल्ड पर लागू होती हैं। अनुकूलित संस्करण:
| MagicOS | कर्नेल | स्थिति |
|---|---|---|
| 8.0.0.128 | 5.10.168 | ✅ सत्यापित |
| 8.0.0.160 | 5.10.209 | ✅ सत्यापित |
| 9.0.0.157 | 5.10.209 | ✅ सत्यापित |
| 9.0.0.200SP1 | 5.10.236 | ✅ सत्यापित |
| 9.0.0.220SP2 / SP4 | 5.10.236 | ✅ सत्यापित (SP4 में SP2 जैसी ही बूट इमेज होती है) |
| 9.0.0.230 | 5.10.236 | ✅ सत्यापित |
| 8.0.0.131 | 5.10.198 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं |
| 8.0.0.135 / 143 / 150 | 5.10.198 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं |
| 8.0.0.161 | 5.10.209 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं |
| 9.0.0.102 / 103 / 120 / 130 / 165 | 5.10.209 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं (103 में 102 जैसी ही बूट इमेज होती है) |
| 9.0.0.175SP1 / 187 | 5.10.226 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं |
| 9.0.0.210 | 5.10.236 | ⚠️ वास्तविक डिवाइस पर सत्यापित नहीं |
⚠️ चेतावनी
- केवल अपने स्वयं के डिवाइस पर सुरक्षा अनुसंधान के लिए।
- अपने जोखिम पर उपयोग करें। यह सॉफ़्टवेयर किसी भी प्रकार की वारंटी के बिना आता है (देखें LICENSE)। सिद्धांत रूप में इसे केवल चलाने से आपका डिवाइस ब्रिक नहीं होना चाहिए और न ही डेटा खोना चाहिए, फिर भी पहले बैकअप ले लें; जो कुछ भी होता है — इस कोड को चलाने से या इसके द्वारा दिए गए रूट एक्सेस के साथ आप जो कुछ भी करते हैं — उसकी ज़िम्मेदारी आपकी है, लेखकों की नहीं।
- यह एक्सप्लॉइट UAF के माध्यम से कर्नेल मेमोरी को संशोधित करता है। असफल प्रयास डिवाइस को रीबूट कर देता है; रीबूट सब कुछ बहाल कर देता है। प्रत्येक रन में सफलता 100% नहीं होती — इसे फिर से चलाएँ।
- रूट का अर्थ है डिवाइस पर पूर्ण नियंत्रण — इसका सावधानी से उपयोग करें। यह प्रोजेक्ट आपको केवल रूट दिलाता है; इसके बाद इमेज फ्लैश करना, पार्टीशन लिखना, सुरक्षा उपायों को अक्षम करना, या अपरीक्षित मॉड्यूल इंस्टॉल करना डिवाइस को स्थायी रूप से ब्रिक कर सकता है, और उसकी ज़िम्मेदारी आपकी है।
exploit/ GhostLock PoC source (Android arm64) + build system
src/ exploit core: futex UAF, KASLR slide, sysctl boot_id hijack,
arbitrary R/W, cred/SELinux/sig_enforce writes, KSU load
src/targets/ per-firmware offset tables (target.h)
ksu/ custom kernelsu.ko build (MagicOS kernel + device config) and the
PC-side adb load driver
tools/ on-device load helpers: load_ko.c / kmsg_dumper.c (built from
source), policy rules, loader template (+ where to get the
binaries)
आवश्यकताएँ: Docker, Android Platform Tools।
एक पूर्व-निर्मित बंडल सभी समर्थित फ़र्मवेयर को कवर करता है: इसे Releases से डाउनलोड करें, होस्ट पर अनपैक करें, और चलाएँ
./setup.sh # PC, with adb: identifies the kernel, picks the
# matching exploit, runs the chain, retries when an
# attempt fails
बिना PC के, बंडल को फ़ोन पर अनपैक करें और Shizuku शेल (rish) से वही स्क्रिप्ट चलाएँ — यह पहचान लेती है कि यह कहाँ है और बाकी काम स्थानीय रूप से कर देती है:
sh /sdcard/ghostlock/setup.sh
स्क्रिप्ट चालू कर्नेल को बंडल किए गए मैनिफ़ेस्ट से मिलाती है: सत्यापित फ़र्मवेयर सीधे चलते हैं, ज्ञात-लेकिन-अपरीक्षित वाले पुष्टि मांगते हैं, और किसी भी अन्य को अस्वीकार कर दिया जाता है।
इसके बजाय स्रोत से बनाएं:
# 1. Build the exploit binary
cd exploit && ./docker-build.sh bin # exploit_static (8.0.0.128)
# 8.0.0.160: ./docker-build.sh PROJECT=annap-AGT-AN00_8.0.0.160 bin
# (the static binary bakes in the default env config; any knob can still
# be overridden by environment variables at launch; first run pulls the NDK, ~1.2GB)
# 2. The KSU-side binaries live in ksu/tools/ (see ksu/tools/README.md):
# kernelsu.ko — build per ksu/README.md;
# ksud, magiskpolicy, ksu_rules — shipped in the repo;
# load_ko, kmsg_dumper — ./docker-build.sh tools
# 3. Enable ADB debugging on the phone, then
bash ../ksu/ksu_load_ko.sh
# 8.0.0.160: PROJECT=annap-AGT-AN00_8.0.0.160 bash ../ksu/ksu_load_ko.sh
स्क्रिप्ट adb के माध्यम से पूरी श्रृंखला को चलाती है: GhostLock (रूट एक्सेस, SELinux
permissive, sig_enforce अक्षम), magiskpolicy के माध्यम से SELinux नीति इंजेक्शन, नकली kallsyms
बाइंड-माउंट, load_ko (init_module), फिर ksud ब्रिंग-अप चरण,
SELinux enforcing को अंतिम चरण के रूप में पुनर्स्थापित करना। जब जेलब्रेक
पूरा हो जाता है, तो स्क्रिप्ट आपके लिए KernelSU मैनेजर खोलती है (दिखाती है
"Working <LKM> [Jailbreak mode]")।
CONFIG_MODULE_SIG_FORCE=y — रनटाइम sig_enforce फ़्लैग
अहस्ताक्षरित मॉड्यूल लोड को अवरुद्ध करता है; एक्सप्लॉइट इसे अस्थायी रूप से 0 पर पलट देता है (लोडर
स्क्रिप्ट मॉड्यूल अंदर आने के बाद इसे 1 पर पुनर्स्थापित कर देती है)।/proc/kallsyms से commit_creds और उसके साथियों को हटा देता है, इसलिए
कर्नेल लोडर .ko के अपरिभाषित
प्रतीकों को हल नहीं कर सकता। फ़्लो एक नकली kallsyms को बाइंड-माउंट करता है जिसमें हटाए गए प्रतीक
उनके वास्तविक रनटाइम पतों (लिंक addr + KASLR स्लाइड) पर पहले से जोड़े गए होते हैं।android12-5.10_kernelsu.ko का सीधे उपयोग नहीं किया जा सकता। ksu/ फ़र्मवेयर के
सबलेवल और डिवाइस के अपने कर्नेल कॉन्फ़िग से मेल खाते MagicOS कर्नेल सोर्स के विरुद्ध
KernelSU को पुनर्निर्मित करता है। ksu/README.md देखें।पूरी श्रृंखला (UAF → KASLR → मनमाना R/W → cred → SELinux permissive → sig_enforce → KernelSU लाइव, enforcing पुनर्स्थापित, boot_id पुनर्स्थापित) ऊपर ✅ से चिह्नित संस्करणों के लिए वास्तविक डिवाइस पर सत्यापित की गई है; ⚠️ से चिह्नित संस्करण अनुकूलित हैं लेकिन वास्तविक डिवाइस पर सत्यापित नहीं हैं। एक रन विफल हो सकता है और फ़ोन को रीबूट कर सकता है; सेटअप स्क्रिप्ट स्वचालित रूप से पुनः प्रयास करती है, या इसे फिर से चलाएँ।
exploit/, शीर्ष-स्तरीय दस्तावेज़)
Apache License 2.0 के अंतर्गत हैं (देखें LICENSE), उसी तरह जैसे
यह पोर्ट जिस अपस्ट्रीम IonStack PoC से व्युत्पन्न है।ksu/ के अंतर्गत फ़ाइलें GPL-2.0 हैं (देखें
ksu/LICENSE): init-bootid.patch और ksu_rules.annotated नीति
सेट KernelSU की kernel/ डायरेक्टरी से व्युत्पन्न हैं, जो GPL-2.0 है।