
Escalação de privilégios no kernel em memória para o Lenovo Legion Y700 2023 (TB320FC) explorando a CVE-2025-21479, uma falha no SMMU da GPU Qualcomm Adreno, com gerenciamento de root ReSukiSU.
English | 简体中文
Escalonamento de privilégios em memória do kernel para o Lenovo Legion Y700 2023 (TB320FC), explorando a CVE-2025-21479 (vulnerabilidade SMMU da GPU Qualcomm Adreno), com gerenciamento completo de root fornecido pelo ReSukiSU.
Sem desbloqueio de bootloader. Sem flashing. Sem PC necessário para ativação.
⚠️ Para pesquisa de segurança autorizada em dispositivos que você possui. Consulte Aviso Legal.
Todos os offsets e comportamentos neste projeto são ajustados para o seguinte dispositivo. Não espere que funcione em outros modelos/ROMs sem reajuste (consulte exploit/device_info.txt).
| Modelo | Lenovo Legion Y700 2023 (TB320FC) / TB320FC_PRC |
| SoC | Qualcomm SM8475 (Snapdragon 8+ Gen 1, Adreno 730) |
| Sistema | 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 |
| Patch de segurança | 2025-03-05 |
| Bootloader | Bloqueado (este projeto não o desbloqueia) |
Verificado como funcional em 2026-09 no firmware acima.
| Capacidade | Implementação |
|---|---|
| Escalonamento de privilégios | exploit cheese: bug SMMU do KGSL → leitura/escrita física arbitrária da GPU → root em memória (uid 0 + caps completas) |
| Gerenciamento de root | ReSukiSU (fork do KernelSU) em modo late-load carrega kernelsu.ko; su servido por um hook no kernel (u:r:ksu:s0) |
| SELinux | Restaurado para Enforcing após a ativação (as regras de política do ReSukiSU permanecem aplicadas) |
| UX de um toque | APK RootActivator com exploit + ksud embutidos; um único toque após o boot |
| Auto-recuperação (opcional) | Cadeia de auto-recuperação acionada pelo boot: gatilho adaptativo condicionado à carga → cheese → pipeline de root → hosts/Vector opcional. Desativado por padrão (com.poc.roottool.CONFIG) |
| Módulos Xposed | Suportados via NeoZygisk (injeção ptrace no zygote) + Vector |
| Persistência | Nenhuma por design (em memória): reative após cada reinicialização (~3-4 min; ou habilite a cadeia de auto-recuperação) |
| RootActivator (ativado) | ReSukiSU (funcionando, 2 módulos) |
|---|---|
![]() | ![]() |
Esquerda: RootActivator após ativação bem-sucedida — SELinux Enforcing, kernelsu carregado, su disponível.
Direita: gerenciador ReSukiSU — modo LKM funcionando com 2 módulos (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
Pontos de engenharia notáveis
insmod kernelsu.ko falha. O late-load do ReSukiSU resolve os símbolos por conta própria e carrega sem problemas.Compile a partir do código-fonte (consulte Compilação) ou baixe o APK na página de Releases do GitHub (não armazenado no repositório).
Baixe em ReSukiSU Releases e instale o APK do gerenciador.
su -c 'sh /data/adb/modules/zygisksu/post-fs-data.sh'
O repositório contém o PoC (o exploit) e seu ativador de um toque. As camadas personalizadas do dispositivo (scripts de debloat, módulo privacy-hosts, ferramentas de escopo do Xposed, auxiliares de bring-up) são mantidas fora da árvore em um arquivo privado separado — elas deliberadamente não fazem parte deste repositório. Detalhes: docs/ARCHITECTURE.md.