
यह पैकेज पूर्ण रूट नहीं है। यह SELinux को Permissive पर सेट करता है और आगे के कार्य के लिए reclaim को पर्याप्त समय तक बनाए रखता है। यहाँ होस्ट `uid=0` प्राप्त नहीं होता है।
Samsung Galaxy S26 Ultra (SM-S948U1, कोडनेम m3q) के लिए काम करने वाले SELinux-केवल park का शोध स्नैपशॉट, फर्मवेयर S948U1UES3AZF1 (GKI 6.12.30-android16-5) पर।
यह पैकेज पूर्ण root नहीं है। यह SELinux को Permissive पर फ्लिप करता है और आगे के काम के लिए reclaim को पर्याप्त देर तक hold रखता है। Host uid=0 यहाँ प्राप्त नहीं किया गया है।
यह GhostLock / CVE-2026-43499 कार्य-श्रृंखला से निर्मित है: Xiaomi popsicle preload चेसिस, Samsung Root-My-Galaxy (जिसमें emerald डिवाइस टारगेट और m3q retarget शामिल हैं), जिसे यहाँ AZF1 park-केवल के लिए अनुकूलित किया गया है। श्रेय देखें।
kptr_restrict / same-stack follow-on writes)। वे kernel panic करते हैं, और इस डिवाइस पर ऐसे boot छोड़े हैं जो केवल safe mode में आते हैं (RescueParty-श्रेणी की रिकवरी), और यदि आप बार-बार बुरी तरह unlock/recover करते हैं तो factory-reset का जोखिम रहता है।bin/preload-4-s1.so AZF1-विशिष्ट है। अन्य फर्मवेयर को पुनर्जनित target.h की आवश्यकता होती है।sched_blocked_reason caller → image base)।rt_mutex waiter पेज का spray (linear-map VA)।selinux_state.enforcing (enforce 1→0) संग्रहीत करता है।WAIT_REQUEUE_PI settle ताकि park कच्चे I4 विलंबित KP से अधिक समय तक जीवित रहे।LD_PRELOAD (/system/bin/true) के अंतर्गत जीवित रहती है, reclaim hold रहता है; S1_READY लॉग करती है।सफलता का रूप:
adb shell getenforce # Permissive
adb shell pidof true # non-empty (parked preload)
हेल्पर स्क्रिप्ट उसी boot के VAs को finish_va.txt में भी लिखती है (KASLR, spray, static DATA symbols)।
इस फर्मवेयर पर GhostLock एक सीमित arbitrary write देता है (NULL और linear-map/spray मान writable .data में — STORE value के रूप में कर्नेल text/rodata नहीं) साथ ही Permissive SELinux। Soft-root अभी भी गायब है:
| आवश्यकता | कारण |
|---|---|
| सूचना लीक / AR | Heap task_struct* या /dev/uhid inode VA (shape-0 GhostLock read और कई oracles AZF1 पर काम नहीं करते) |
| Cred / finish | एक बार task ज्ञात हो जाए: init_cred (या uid फ़ील्ड) लिखें — Samsung KDP/RKP सरल pointer swaps को ब्लॉक कर सकता है; काम करने वाले Knox roots को आमतौर पर host uid=0 और फिर KDP-aware KernelSU (ksud) की आवश्यकता होती है |
| स्थिर post-I4 write | I4+R1e के बाद अतिरिक्त GhostLock punches असुरक्षित हैं (KP में प्रवेश)। “बस STORE दोबारा करो” को finish न मानें |
एक अलग पूरक CVE (विशेषकर एक read primitive जो June AZF1 पर अभी भी मौजूद है) वर्तमान high-EV पथ है; केवल GhostLock पर और अधिक W2 punches को परिष्कृत करना नहीं।
target.h पुनर्निर्मित करें)adb, python3, Android NDK r29+ (पुनर्निर्माण के लिए)/system/bin/true में LD_PRELOAD करने में सक्षम हो# from a Linux/WSL host with the device attached
export SHARE="$PWD" # or path where this repo lives
bash park_cal_one.sh
adb shell getenforce # expect Permissive
park_cal_one.sh SHARE को इस repo निर्देशिका पर डिफ़ॉल्ट करता है। आवश्यकता होने पर ओवरराइड करें:
SHARE=/path/to/this/repo PRELOAD=/path/to/this/repo/bin/preload-4-s1.so bash park_cal_one.sh
पार्क की गई true प्रोसेस को अकेला छोड़ दें। अन्य trees से प्रयोगात्मक दूसरे punches को नहीं जोड़ें।
powershell -ExecutionPolicy Bypass -File .\build-park.ps1
यदि आपका NDK पथ भिन्न है तो स्क्रिप्ट के अंदर $ndkBin सेट करें।
make -C source clean preload
# output: source/build/bin/preload.so (same I4+R1e park flags as preload-4-s1)
cp source/build/bin/preload.so bin/preload-4-s1.so
डिफ़ॉल्ट target.h Candidate I4 + R1e + S1 park (AZF1_R1_SECOND_WAIT, AZF1_R1_THEN_S1) सक्षम करता है। इस पैकेज के लिए K3/K4/soft second-punch फ़्लैग सक्षम न करें।
bin/preload-4-s1.so prebuilt park payload (AZF1)
park_cal_one.sh push + run + VA parse
build-park.ps1 Windows NDK build (park only)
source/ preload sources + AZF1 target.h
generate_target.py optional retarget helper (needs your boot.img)
| चरण | स्थिति |
|---|---|
SELinux enforce→0 + park (I4+R1e) | AZF1 लैब डिवाइस पर काम करता है |
| आगे के GhostLock “W2” punches | न करें — KP; केवल-safe-mode boot को बाध्य कर सकता है |
Host uid=0 / KernelSU इंस्टॉल | इस पैकेज में नहीं — leak + Knox-aware finish की आवश्यकता है |
यह स्नैपशॉट पूर्व सार्वजनिक और शोध कार्य पर आधारित है। श्रेय वहीं जहाँ उचित है:
| प्रोजेक्ट | इस park में भूमिका |
|---|---|
| CVE-2026-43499-popsicle (Xiaomi popsicle) | GhostLock exploit चेसिस: LD_PRELOAD हार्नेस, KernelSnitch reclaim/spray, fdset-encoded waiter, pselect residual-write कोर, generate_target.py / Makefile लेआउट |
| Root-My-Galaxy + Root-My-Galaxy-Payloads | Samsung soft-root फ्रेमिंग (W1 park / W2 follow-on), Knox/KDP-aware finish दिशा, m3q / AZF1 target सामग्री, और यहाँ popsicle के P0 boot_id slide के बजाय उपयोग किया गया tracefs-first KASLR दृष्टिकोण |
| emerald (RMG डिवाइस टारगेट) | emerald डिवाइस वंशावली पर पिछला GhostLock पोर्ट जिसने RMG की Samsung ज्यामिति, slide रणनीति और W1 SELinux-park शिप पैटर्न को आधार दिया; यह m3q/AZF1 park उसी श्रृंखला में है, शुरू से नया rewrite नहीं |
भेद्यता: CVE-2026-43499 (GhostLock — rt_mutex priority-inheritance अवशिष्ट write)।
यह tree: RMG/emerald-श्रेणी के Samsung अनुकूलनों के साथ popsicle preload स्रोतों का AZF1 / m3q (SM-S948U1 / S948U1UES3AZF1) पोर्ट, जिसे शोधकर्ता-स्वामित्व वाले हार्डवेयर के लिए SELinux-केवल park हार्नेस तक सीमित कर दिया गया है। Root-My-Galaxy emerald प्रोडक्ट टारगेट में वापस विलय नहीं है।