
In-Memory-Kernel-Privilegieneskalation für Lenovo Legion Y700 2023 (TB320FC) unter Ausnutzung von CVE-2025-21479, einer Qualcomm Adreno GPU SMMU-Schwachstelle, mit ReSukiSU-Root-Verwaltung.
English | 简体中文
In-Memory-Kernel-Privilegieneskalation für das Lenovo Legion Y700 2023 (TB320FC), die CVE-2025-21479 (Qualcomm Adreno GPU SMMU-Schwachstelle) ausnutzt, mit vollständiger Root-Verwaltung durch ReSukiSU.
Kein Bootloader-Unlock. Kein Flashen. Kein PC erforderlich für die Aktivierung.
⚠️ Für autorisierte Sicherheitsforschung an Geräten, die Ihnen gehören. Siehe Haftungsausschluss.
Alle Offsets und Verhaltensweisen in diesem Projekt sind auf das folgende Gerät abgestimmt. Erwarten Sie nicht, dass es ohne Neuanpassung auf anderen Modellen/ROMs funktioniert (siehe exploit/device_info.txt).
| Modell | Lenovo Legion Y700 2023 (TB320FC) / TB320FC_PRC |
| SoC | Qualcomm SM8475 (Snapdragon 8+ Gen 1, Adreno 730) |
| System | ZUXOS 1.1.350 / Android 15 (SDK 35) |
| Build | AQ3A.240812.002 (TB320FC_CN_OPEN_USER_Q00031.0_V_ZUXOS_1.1.350_ST_250418) |
| Kernel | 5.10.209-android12-9-gef44381c3e04-ab50 |
| Sicherheitspatch | 2025-03-05 |
| Bootloader | Gesperrt (dieses Projekt entsperrt ihn nicht) |
Verifiziert funktionsfähig ab 2026-09 auf der oben genannten Firmware.
| RootActivator (aktiviert) | ReSukiSU (funktionierend, 2 Module) |
|---|---|
![]() | ![]() |
Links: RootActivator nach erfolgreicher Aktivierung — SELinux Enforcing, kernelsu geladen, su verfügbar.
Rechts: ReSukiSU-Manager — LKM-Modus funktioniert mit 2 Modulen (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
Bemerkenswerte technische Punkte
insmod kernelsu.ko fehl. Der Late-Load von ReSukiSU löst Symbole selbst auf und lädt problemlos.Aus dem Quellcode bauen (siehe Bauen) oder die APK von der GitHub-Releases-Seite herunterladen (nicht im Repo gespeichert).
Von ReSukiSU Releases herunterladen und die Manager-APK installieren.
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
Vom Build akzeptierte Umgebungsvariablen (Details siehe app/build.py):
KOTLIN_HOME, ANDROID_BUILD_TOOLS, ANDROID_JAR, KEYSTORE, JAVA_HOME.
fetch_assets.py benötigt zusätzlich RESUKISU_APK (Pfad zu einer ReSukiSU-arm64-APK),
um libksud.so zu extrahieren.
adb root ist nicht verfügbar (adbd cannot run as root in production builds)ksud soft-reboot verwenden — es hängt das
System auf (stattdessen die ptrace-Injection von NeoZygisk verwenden)Dieses Projekt wird ausschließlich für Sicherheitsforschung und Bildungszwecke bereitgestellt, und nur für Geräte, die Sie besitzen oder für die Sie ausdrücklich autorisiert sind, Tests durchzuführen. Sie sind allein verantwortlich für jegliche Konsequenzen und rechtlichen Auswirkungen. Der Exploit kann das Gerät neu starten; in seltenen Fällen ist Datenverlust möglich — sichern Sie zuerst wichtige Daten.
| Fähigkeit | Implementierung |
|---|
| Privilegieneskalation | cheese-Exploit: KGSL-SMMU-Bug → GPU beliebiger physischer R/W → In-Memory-Root (uid 0 + volle Caps) |
| Root-Verwaltung | ReSukiSU (KernelSU-Fork) lädt im Late-Load-Modus kernelsu.ko; su wird von einem In-Kernel-Hook (u:r:ksu:s0) bereitgestellt |
| SELinux | Nach Aktivierung auf Enforcing zurückgesetzt (ReSukiSU-Policy-Regeln bleiben angewendet) |
| One-Tap-UX | RootActivator APK mit eingebettetem Exploit + ksud; ein einziger Tipp nach dem Boot |
| Xposed-Module | Unterstützt über NeoZygisk (ptrace-Zygote-Injection) + Vector |
| Persistenz | Konstruktionsbedingt keine (In-Memory): Reaktivierung nach jedem Neustart (~3-4 Min.) |