
Ce paquet n'est pas un root complet. Il bascule SELinux en mode Permissive et maintient le reclaim assez longtemps pour la suite. L'`uid=0` de l'hôte n'est pas atteint ici.
Instantané de recherche d'un park exclusivement SELinux fonctionnel pour le Samsung Galaxy S26 Ultra (SM-S948U1, nom de code m3q) sur le firmware S948U1UES3AZF1 (GKI 6.12.30-android16-5).
Ce paquet n'est pas un root complet. Il bascule SELinux en mode Permissive et maintient le reclaim suffisamment longtemps pour les travaux de suivi. L'uid=0 hôte n'est pas atteint ici.
Construit à partir de la lignée de travaux GhostLock / CVE-2026-43499 : le châssis de preload Xiaomi popsicle, Samsung Root-My-Galaxy (y compris la cible d'appareil emerald et le reciblage m3q), adapté ici pour AZF1 en mode park uniquement. Voir Attribution.
kptr_restrict / écritures de suivi sur la même pile). Elles provoquent une panique noyau et, sur cet appareil, ont laissé des démarrages qui ne se font qu'en mode sans échec (récupération de type RescueParty), avec un risque de réinitialisation d'usine si vous continuez à déverrouiller / récupérer de façon hasardeuse.bin/preload-4-s1.so précompilé est spécifique à AZF1. Les autres firmwares nécessitent un target.h régénéré.sched_blocked_reason → base de l'image).rt_mutex forgée (VA de la linear-map).selinux_state.enforcing (enforce 1→0).WAIT_REQUEUE_PI afin que le park survive plus longtemps qu'un KP différé I4 brut.LD_PRELOAD (/system/bin/true), reclaim maintenu ; journalise S1_READY.Résultat en cas de succès :
adb shell getenforce # Permissive
adb shell pidof true # non-empty (parked preload)
Le script d'assistance écrit également les VA du même démarrage dans finish_va.txt (KASLR, spray, symboles DATA statiques).
Sur ce firmware, GhostLock fournit une écriture arbitraire contrainte (valeurs NULL et de linear-map/spray dans un .data inscriptible — pas le texte/rodata du noyau comme valeur STORE) plus SELinux Permissive. Le soft-root manque toujours :
| Besoin | Pourquoi |
|---|---|
| Fuite d'infos / AR | task_struct* de la heap ou VA d'inode /dev/uhid (la lecture GhostLock shape-0 et plusieurs oracles sont inopérants sur AZF1) |
| Cred / finition | Une fois task connu : écrire init_cred (ou les champs uid) — Samsung KDP/RKP peut bloquer les substitutions de pointeurs naïves ; les roots Knox fonctionnels nécessitent généralement l'uid=0 hôte puis un KernelSU compatible KDP (ksud) |
| Écriture post-I4 stable | Les frappes GhostLock supplémentaires après I4+R1e sont dangereuses (entrée en KP). Ne considérez pas « il suffit de STORE à nouveau » comme la finition |
Une CVE complémentaire distincte (en particulier une primitive de lecture encore présente sur l'AZF1 de juin) est la voie à haute valeur d'exploitation actuelle ; peaufiner davantage de frappes W2 sur GhostLock seul ne l'est pas.
target.h pour votre build)adb, python3, Android NDK r29+ (pour reconstruire)LD_PRELOAD dans /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 définit SHARE par défaut sur le répertoire de ce dépôt. Remplacez-le si nécessaire :
SHARE=/path/to/this/repo PRELOAD=/path/to/this/repo/bin/preload-4-s1.so bash park_cal_one.sh
Ne touchez pas au processus true une fois en park. N'enchaînez pas de secondes frappes expérimentales provenant d'autres arbres.
powershell -ExecutionPolicy Bypass -File .\build-park.ps1
Définissez $ndkBin dans le script si votre chemin NDK diffère.
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
Le target.h par défaut active le park Candidate I4 + R1e + S1 (AZF1_R1_SECOND_WAIT, AZF1_R1_THEN_S1). N'activez pas les drapeaux K3/K4/soft de seconde frappe pour ce paquet.
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)
| Étape | Statut |
|---|---|
SELinux enforce→0 + park (I4+R1e) | Fonctionne sur l'appareil de laboratoire AZF1 |
| Frappes GhostLock « W2 » supplémentaires | À éviter — panique noyau ; peut forcer un démarrage mode sans échec uniquement |
uid=0 hôte / installation KernelSU | Pas dans ce paquet — nécessite une fuite + une finition compatible Knox |
Cet instantané s'appuie sur des travaux publics et de recherche antérieurs. Crédit là où il est dû :
| Projet | Rôle dans ce park |
|---|---|
| CVE-2026-43499-popsicle (Xiaomi popsicle) | Châssis d'exploitation GhostLock : harnais LD_PRELOAD, reclaim/spray KernelSnitch, waiter encodé par fdset, cœur d'écriture résiduelle pselect, disposition generate_target.py / Makefile |
| Root-My-Galaxy + Root-My-Galaxy-Payloads | Cadrage du soft-root Samsung (park W1 / suite W2), direction de finition compatible Knox/KDP, matériel de cible m3q / AZF1, et l'approche KASLR en priorité via tracefs utilisée ici à la place du slide P0 boot_id de popsicle |
| emerald (cible d'appareil RMG) | Port GhostLock antérieur sur la lignée d'appareils emerald qui a éclairé la géométrie Samsung de RMG, la stratégie de slide et le modèle de livraison du park SELinux W1 ; ce park m3q/AZF1 s'inscrit dans cette lignée, pas une réécriture de zéro |
Vulnérabilité : CVE-2026-43499 (GhostLock — écriture résiduelle d'héritage de priorité rt_mutex).
Cet arbre : port AZF1 / m3q (SM-S948U1 / S948U1UES3AZF1) des sources de preload popsicle avec les adaptations Samsung de classe RMG/emerald, réduit à un harnais de park exclusivement SELinux pour du matériel appartenant à des chercheurs. Il ne s'agit pas d'une réintégration dans la cible produit emerald de Root-My-Galaxy.