
Honor WIN RT (AAK-AN00) CVE-2026-43499 अस्थायी रूट - शोध नोट्स
(सब कुछ deepseek ने लिखा है, मुझे कुछ समझ नहीं आता)
डिवाइस Bootloader स्थायी रूप से लॉक है (
ro.oem_unlock.supportedखाली है), न fastboot, न स्थायी su, न Magisk। एकमात्र बचा हुआ रास्ता kernel vulnerability है। यह रिपॉज़िटरी "हमला संभव है या नहीं" से लेकर "हमले के बाद वास्तव में कितना स्थिर है" तक की पूरी प्रक्रिया दर्ज करती है।
प्रकृति: अस्थायी root, रीबूट पर समाप्त।
यह रिपॉज़िटरी स्वयं के डिवाइस पर की गई सुरक्षा शोध की प्रक्रिया दर्ज करती है, जिसका उद्देश्य kernel PI race की उत्पत्ति और स्थिरता की सीमाओं को समझना है।
एकमात्र सफल पथ यह है:
CVE-2026-43499 (futex PI race write-what-where) + rt_sigreturn कैरियर
→ LD_PRELOAD से shell डोमेन प्रोसेस में इंजेक्शन
→ दो-चरणीय: पहले SELinux Permissive, फिर task->real_cred / cred को init_cred में बदलें
→ uid=0(root) context=u:r:kernel:s0, और su डेमन प्रत्यारोपित
लेकिन वास्तव में लिखने योग्य बात "root कैसे मिला" नहीं है —— बल्कि उसके बाद जो हुआ वह है।
जो मिला वह स्थिर root नहीं, बल्कि "किसी भी क्षण विस्फोट हो सकने वाली स्थिति" है।
exploit का write primitive नकली
rt_mutex_waiterको असली futex PI चेन में लटका देता है, और इस waiter का वाहक वह kernel stack / spray page है जिसे आगे के system call पुनः उपयोग करेंगे। इसलिए root मिलने के क्षण से ही, कोई भी सिस्टम-स्तरीय शेड्यूलिंग या प्राथमिकता परिवर्तन उस पर पैर रख सकता है, जिससे सीधे kernel panic और रीबूट हो सकता है। यह bug नहीं है, यह इस शोषण तकनीक की अंतर्निहित कीमत है —— विवरण के लिए देखेंdocs/03।
Kernel संस्करण क्यों बाध्यकारी है: दोष 6.6.140 में ठीक किया गया, इस डिवाइस का 6.6.118 < 6.6.140 इसलिए अभी भी मौजूद है;
साथ ही exploit के सभी kernel symbol address और "कैरियर ज्यामिति" इसी एक build पर आधारित हैं, kernel बदलने पर offset तालिका तुरंत अमान्य हो जाती है, और सामान्यतः वापस नहीं लौटा जा सकता।
┌─ सामग्री ────────────────────────────────────────────────┐
│ boot.img + xbl_config.elf (डिवाइस फर्मवेयर से निकाला गया) │
│ ↓ symbol विश्लेषण │
│ target.h (kernel symbol address, kallsyms से बाइट-दर-बाइट सत्यापित) │
│ ↓ निर्माण │
│ preload.so ──► डिवाइस पर /data/local/tmp/*.so │
└────────────────────────────────────────────────────────┘
↓ LD_PRELOAD इंजेक्शन
┌──────────── दो-चरणीय (दो स्वतंत्र प्रोसेस अनिवार्य)────────────┐
│ चरण A GW_SELINUX=1 → selinux_state.enforcing = 0 │
│ चरण B GW_CHAIN=1 RTSIG_TASK_INIT=1 GW_SU=1 │
│ → task->real_cred ← &init_cred │
│ → task->cred ← &init_cred ("प्री-सेट राइटर" प्रोसेस द्वारा)│
│ → setresuid(0,0,0) सामान्यीकरण │
│ → अंतर्निहित su + daemon प्रत्यारोपण │
└─────────────────────────────────────────────────────────────┘
↓
uid=0(root) context=u:r:kernel:s0
तीन बातें जो सही करनी ही होंगी (गलत करने पर अटक जाएँगे या सीधे panic):
real_cred, फिर cred। उल्टा करने पर तुरंत पूर्ण अनुमतियाँ, थ्रेड अनियंत्रित।cred ≠ real_cred की क्षणिक अवस्था होती है। इस समय कोई भी sched_setaffinity EPERM देगा → पूरा दौर अटक जाएगा।
सही उपाय है पहले कट से पहले ही "प्री-सेट राइटर" प्रोसेस fork कर लेना (क्रेडेंशियल साफ़), पैरेंट पहला कट करे, राइटर दूसरा कट करे, कोई भी क्षणिक अवस्था में syscall न करे।alias(image) = PAGE_OFFSET | (image − KIMAGE_TEXT_BASE + Δ), रीबूट के पार स्थिर;
तथाकथित "slide चरण" का वास्तविक मूल्य write primitive का स्व-परीक्षण है, KASLR बायपास नहीं।अपस्ट्रीम framework:
Linuxoid-cn/CVE-2026-43499-Poc-Analysis। ध्यान दें यह GhostLock नहीं है —— GhostLock pselect मार्ग अपनाता है, जो इस build की waiter लैंडिंग ज्यामिति से मेल नहीं खाता, विवरण के लिए देखेंdocs/06।
यदि आप भी BL लॉक डिवाइस पर हमला कर रहे हैं, तो पहले सोच लें कि root लेकर क्या करना है, क्योंकि ऐसे डिवाइस पर root संभवतः केवल दसियों मिनट की खिड़की होगी। "root चाहिए और रीबूट के पार बना रहे" वाले कार्यों की सूची बनाएँ, एक बार में पूरा चलाएँ, फिर
rebootकरके साफ़ स्थिति में लौटें। "दुष्प्रभाव हटाने" की कोशिश न करें —— वह तकनीक की स्वयं की कीमत है।
| मद | मान | विवरण |
|---|
| मॉडल | 荣耀 WIN RT, मॉडल AAK-AN00 | प्रचलित नाम "荣耀 WIN RT" |
| SoC | Snapdragon 8 Elite SM8750-AB | 荣耀 WIN (AAP-AN00, SM8850-AC) के साथ फर्मवेयर असंगत |
| सिस्टम | Android 16 / MagicOS 10 | — |
| Kernel | 6.6.118-android15-8-gf17133276a57-abogki518694926-4k | ★ कठोर शर्त, अक्षर-दर-अक्षर मिलान |
| Kernel कॉन्फ़िग | 4K pages, VA_BITS=39, CONFIG_FUTEX_PI=y | कैरियर ज्यामिति की पूर्वापेक्षा |
| फर्मवेयर पैकेज | .170 | .160 / .175 का परीक्षण नहीं किया गया |
| Bootloader | स्थायी रूप से लॉक | न fastboot / न स्थायी su |
| दस्तावेज़ | विषय |
|---|
| 01 · व्यवहार्यता विश्लेषण | केवल rt_sigreturn ही एक कैरियर क्यों बचा |
| 02 · प्रिविलेज एस्केलेशन श्रृंखला और सफलता के तत्व | write primitive, छह-चरणीय श्रृंखला, प्री-सेट राइटर, सफलता के मानदंड |
| 03 · स्थिरता का वास्तविक कारण: PI चेन अवशेष | ★ मुख्य। नेटवर्क कटना नेटवर्क कटना नहीं, panic है; क्रैश बिंदु का disassembly सहित |
| 04 · कंप्यूटर-मुक्त मार्ग: Shizuku | adb के स्थान पर Shizuku के rish से exploit चलाना |
| 05 · KernelSU का late-load | LKM सक्रियण विधि और यह सबसे खतरनाक डेटोनेटर क्यों है |
| 06 · बंद रास्तों की सूची | आज़माए गए पर असफल रास्ते, ताकि दूसरे दोबारा न आज़माएँ |
| 07 · गड्ढे और वातावरण | बिना root panic stack निकालना, स्क्रिप्ट वातावरण के गड्ढे |
| tools/ | पुनः उपयोग योग्य स्क्रिप्ट (सामान्यीकृत संस्करण) |
| तिथि | प्रगति |
|---|
| 09-08 | BL स्थायी रूप से लॉक, OEM अनलॉक चैनल हटाया गया पुष्ट ⇒ आधिकारिक मार्ग छोड़ा, vulnerability मार्ग पर गए |
| 09-09 | निर्माता के आफ्टर-सेल्स फर्मवेयर लाइब्रेरी पर काबू, boot.img प्राप्त, kernel और symbol निकाले |
| 09-10 | कैरियर खोज rt_sigreturn पर सिमटी; प्रिविलेज एस्केलेशन सफल (20:14), uid=0 |
| 09-11 | कंप्यूटर-मुक्त मार्ग (Shizuku) खोला; KernelSU सक्रिय करने योग्य; "नेटवर्क कटने" का वास्तविक कारण निर्धारित = PI चेन अवशेष |