
Этот пакет не предоставляет полный root-доступ. Он переключает SELinux в режим Permissive и удерживает reclaim достаточно долго для последующей работы. `uid=0` на хосте здесь не достигается.
Исследовательский снимок работающего удержания только SELinux для Samsung Galaxy S26 Ultra (SM-S948U1, кодовое имя m3q) на прошивке S948U1UES3AZF1 (GKI 6.12.30-android16-5).
Этот пакет не является полным root. Он переключает SELinux в режим Permissive и удерживает reclaim достаточно долго для последующей работы. Здесь host uid=0 не достигается.
Создано на основе направления работ GhostLock / CVE-2026-43499: шасси preload от Xiaomi popsicle, Samsung Root-My-Galaxy (включая таргет устройства emerald и ретаргетинг на m3q), адаптировано здесь только для удержания на AZF1. См. Атрибуция.
kptr_restrict / последующие записи в тот же стек). Они вызывают kernel panic и на этом устройстве приводили к загрузкам, которые поднимались только в безопасном режиме (восстановление класса RescueParty), с риском сброса к заводским настройкам, если продолжать неудачную разблокировку / восстановление.bin/preload-4-s1.so специфичен для AZF1. Для других прошивок нужен перегенерированный target.h.sched_blocked_reason → база образа).rt_mutex (VA в linear-map).selinux_state.enforcing (enforce 1→0).WAIT_REQUEUE_PI для стабилизации, чтобы удержание продержалось дольше, чем при сыром отложенном KP после I4.LD_PRELOAD (/system/bin/true), reclaim удерживается; логируется S1_READY.Признаки успеха:
adb shell getenforce # Permissive
adb shell pidof true # non-empty (parked preload)
Вспомогательный скрипт также записывает VA текущей загрузки в finish_va.txt (KASLR, спрей, статические символы DATA).
GhostLock на этой прошивке даёт ограниченную произвольную запись (NULL и значения из linear-map/спрея, записываемые в доступный для записи .data, — а не текст/rodata ядра в качестве значения STORE) плюс Permissive SELinux. Soft-root всё ещё отсутствует:
Отдельная дополняющая CVE (особенно примитив чтения, всё ещё присутствующий на июньском AZF1) — это текущий наиболее перспективный (high-EV) путь; доводка дополнительных ударов W2 на одном только GhostLock — нет.
target.h для вашей сборки)adb, python3, Android NDK r29+ (для пересборки)LD_PRELOAD в /system/bin/true# 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 в каталог этого репозитория. При необходимости переопределите:
SHARE=/path/to/this/repo PRELOAD=/path/to/this/repo/bin/preload-4-s1.so bash park_cal_one.sh
Не трогайте удерживаемый процесс true. Не подключайте экспериментальные вторые удары из других деревьев.
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 (AZF1_R1_SECOND_WAIT, AZF1_R1_THEN_S1). Не включайте флаги K3/K4/мягкого второго удара для этого пакета.
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)
Этот снимок опирается на предыдущую публичную и исследовательскую работу. Авторство по заслугам:
Уязвимость: CVE-2026-43499 (GhostLock — остаточная запись наследования приоритетов в rt_mutex).
Это дерево: порт исходников preload от popsicle для AZF1 / m3q (SM-S948U1 / S948U1UES3AZF1) с адаптациями Samsung класса RMG/emerald, урезанный до обвязки удержания только SELinux для оборудования, принадлежащего исследователям. Это не слияние обратно в продуктовый таргет emerald от Root-My-Galaxy.
| Необходимо | Зачем |
|---|
| Утечка информации / AR | task_struct* из кучи или inode VA /dev/uhid (чтение shape-0 GhostLock и несколько оракулов не работают на AZF1) |
| Cred / завершение | Когда task известен: запись init_cred (или полей uid) — Samsung KDP/RKP может блокировать наивные подмены указателей; рабочие Knox-руты обычно требуют host uid=0, а затем KernelSU с поддержкой KDP (ksud) |
| Стабильная запись после I4 | Дополнительные удары GhostLock после I4+R1e небезопасны (приводят к KP). Не рассматривайте «просто STORE ещё раз» как завершение |
| Этап | Статус |
|---|
SELinux enforce→0 + удержание (I4+R1e) | Работает на лабораторном устройстве AZF1 |
| Дальнейшие удары GhostLock «W2» | Не делайте — KP; может принудительно вызвать загрузку только в безопасном режиме |
Host uid=0 / установка KernelSU | Не входит в этот пакет — нужны утечка и завершение с учётом Knox |
| Проект | Роль в этом удержании |
|---|
| CVE-2026-43499-popsicle (Xiaomi popsicle) | Каркас эксплойта GhostLock: обвязка LD_PRELOAD, reclaim/спрей KernelSnitch, fdset-кодированный waiter, ядро остаточной записи pselect, структура generate_target.py / Makefile |
| Root-My-Galaxy + Root-My-Galaxy-Payloads | Каркас soft-root для Samsung (удержание W1 / продолжение W2), направление завершения с учётом Knox/KDP, материалы по таргету m3q / AZF1 и подход KASLR через tracefs, использованный здесь вместо сдвига P0 boot_id от popsicle |
| emerald (таргет устройства RMG) | Более ранний порт GhostLock на линейке устройств emerald, определивший геометрию Samsung в RMG, стратегию сдвига и схему поставки удержания SELinux W1; это удержание m3q/AZF1 продолжает эту линию, а не переписано с нуля |