
تصعيد صلاحيات النواة في الذاكرة لجهاز Lenovo Legion Y700 2023 (TB320FC) باستغلال CVE-2025-21479، وهو خلل في SMMU لمعالج Qualcomm Adreno GPU، مع إدارة صلاحيات الجذر ReSukiSU.
English | 简体中文
تصعيد صلاحيات النواة في الذاكرة لجهاز Lenovo Legion Y700 2023 (TB320FC)، باستغلال CVE-2025-21479 (ثغرة Qualcomm Adreno GPU SMMU)، مع إدارة جذر كاملة يوفرها ReSukiSU.
لا فتح قفل الـ bootloader. لا تفليش. لا حاجة لجهاز كمبيوتر للتفعيل.
⚠️ لأبحاث الأمن المصرّح بها على الأجهزة التي تملكها. راجع إخلاء المسؤولية.
جميع الإزاحات (offsets) والسلوك في هذا المشروع مضبوطة للجهاز التالي. لا تتوقع أن يعمل على موديلات/رومات أخرى دون إعادة الضبط (راجع exploit/device_info.txt).
| الموديل | Lenovo Legion Y700 2023 (TB320FC) / TB320FC_PRC |
| المعالج | Qualcomm SM8475 (Snapdragon 8+ Gen 1, Adreno 730) |
| النظام | ZUXOS 1.1.350 / Android 15 (SDK 35) |
| البناء | AQ3A.240812.002 (TB320FC_CN_OPEN_USER_Q00031.0_V_ZUXOS_1.1.350_ST_250418) |
| النواة | 5.10.209-android12-9-gef44381c3e04-ab50 |
| تحديث الأمان | 2025-03-05 |
| الـ bootloader | مقفل (هذا المشروع لا يفتحه) |
تم التحقق من عمله اعتبارًا من 2026-09 على الفيرموير أعلاه.
| RootActivator (مفعّل) | ReSukiSU (يعمل، وحدتان) |
|---|---|
![]() | ![]() |
يسار: RootActivator بعد تفعيل ناجح — SELinux Enforcing، kernelsu محمّل، su متاح.
يمين: مدير ReSukiSU — وضع LKM يعمل مع وحدتين (NeoZygisk + Vector).
RootActivator APK
│
├─ libcheese.so ── KGSL SMMU exploit (CVE-2025-21479)
│ 1. Adreno 730 microcode access-check flaw (SDS packet mistaken for RingBuffer)
│ 2. Fake CP_SMMU_TABLE_UPDATE overwrites GPU TTBR0 → arbitrary physical R/W
│ 3. Zero selinux_state.enforcing; dump kernel from fixed PA 0xA8000000,
│ parse kallsyms from the raw image (SM8475 has no physical KASLR)
│ 4. Patch __do_sys_capset with an escalation shellcode
│ (prepare_kernel_cred(0) + commit_creds + clear TIF_SECCOMP);
│ forked child calls capset() → uid 0 + full caps
│
└─ libksud.so (ReSukiSU) ── late-load mode
1. kernelsu.ko loaded from ksud's embedded assets with manual relocation
(does not rely on kernel symbol exports)
2. install → /data/adb/ksu (ksud/busybox/bootctl)
3. su channel online: /system/bin/su → kernel hook redirect → u:r:ksu:s0
4. setenforce 1 — Enforcing restored, policy rules already injected by the ko
نقاط هندسية بارزة
insmod kernelsu.ko العادي. وضع late-load في ReSukiSU يحل الرموز بنفسه ويُحمّل بنجاح.ابنِ من المصدر (راجع البناء) أو نزّل الـ APK من صفحة GitHub Releases (غير مخزّن في المستودع).
نزّله من ReSukiSU Releases وثبّت ملف APK الخاص بالمدير.
su -c 'sh /data/adb/modules/zygisksu/post-fs-data.sh'
├── LICENSE / CHANGELOG.md
├── README.md / README.zh-CN.md
├── exploit/ cheese exploit (CVE-2025-21479, ported to TB320FC)
│ ├── source/ cheese.c / kallsyms_lookup.c / adrenaline.h
│ ├── device_info.txt Target device parameters (offsets, verified facts)
│ └── build.sh Build script (requires Android NDK)
├── app/ RootActivator (Kotlin, hand-rolled build, no Gradle)
│ ├── src/ MainActivity.kt (single file, code-only UI)
│ ├── res/ launcher icon (mipmap-xxxhdpi)
│ ├── AndroidManifest.xml
│ ├── debug.keystore debug signing key used by the public APK
│ ├── build.py Build script (kotlinc + d8 + aapt2 + apksigner)
│ └── README.md App documentation
├── tools/ Helper scripts
│ ├── fetch_assets.py Host: prepare native assets (exploit + ksud)
│ ├── neozygisk_setup.sh On-device: NeoZygisk + Vector (see VECTOR.md)
│ ├── status_check.sh On-device: root / module snapshot
│ └── check_mods.sh On-device: module inspection helper
├── docs/ Documentation (English)
│ ├── ARCHITECTURE.md Deep dive into both chains
│ ├── TROUBLESHOOTING.md Failure handling, success-rate data
│ └── VECTOR.md Xposed (NeoZygisk + Vector) setup
└── screenshots/ On-device PNG evidence
cd exploit
NDK=/path/to/android-ndk ./build.sh
# Produces ./cheese (arm64) → used as app/native/libcheese.so
cd app
python ../tools/fetch_assets.py # prepare native assets
python build.py # requires kotlinc + Android build-tools
# Produces RootActivator.apk
متغيرات البيئة التي يقبلها البناء (راجع app/build.py للتفاصيل):
KOTLIN_HOME, ANDROID_BUILD_TOOLS, ANDROID_JAR, KEYSTORE, JAVA_HOME.
يحتاج fetch_assets.py إضافةً إلى ذلك إلى RESUKISU_APK (مسار إلى ReSukiSU arm64 APK)
لاستخراج libksud.so.
adb root غير متاح (adbd cannot run as root in production builds)ksud soft-reboot — فهو يعلّق
النظام (استخدم حقن ptrace من NeoZygisk بدلًا من ذلك)يُقدَّم هذا المشروع لأغراض أبحاث الأمن والتعليم فقط، وفقط للأجهزة التي تملكها أو مصرّح لك صراحةً باختبارها. أنت وحدك مسؤول عن أي عواقب وتداعيات قانونية. قد يعيد الاستغلال تشغيل الجهاز؛ وفي حالات نادرة يكون فقدان البيانات ممكنًا — انسخ بياناتك المهمة احتياطيًا أولًا.
| القدرة | التنفيذ |
|---|
| تصعيد الصلاحيات | استغلال cheese: ثغرة KGSL SMMU → قراءة/كتابة فيزيائية عشوائية عبر GPU → جذر في الذاكرة (uid 0 + صلاحيات كاملة) |
| إدارة الجذر | ReSukiSU (فرع من KernelSU) في وضع late-load يحمّل kernelsu.ko؛ يتم تقديم su عبر خطاف داخل النواة (u:r:ksu:s0) |
| SELinux | يُعاد إلى Enforcing بعد التفعيل (تبقى قواعد سياسة ReSukiSU مطبقة) |
| تجربة بلمسة واحدة | تطبيق RootActivator مع الاستغلال المدمج + ksud؛ لمسة واحدة بعد الإقلاع |
| وحدات Xposed | مدعومة عبر NeoZygisk (حقن zygote بـ ptrace) + Vector |
| الاستمرارية | لا يوجد بحكم التصميم (في الذاكرة): أعد التفعيل بعد كل إعادة تشغيل (~3-4 دقائق) |