Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ghostlock-oneplus — # GhostLock (CVE-2026-43499) exploit de kernel para dispositivos Android com bootloader bloqueado | Kitploit
Ferramentas/GitHubGitHub/joinchang/ghostlock-oneplus
Segurança AndroidEscalada de PrivilégiosFrameworks de ExploraçãoAnálise de VulnerabilidadesTestes de PenetraçãoSegurança MóvelAprendizado e EducaçãoExploração de Binários
GitHubjoinchang/ghostlock-oneplus

ghostlock-oneplus

# GhostLock (CVE-2026-43499) exploit de kernel para dispositivos Android com bootloader bloqueado

Ver Repositório
2354623há 11 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

GhostLock — Jailbreak de Bootloader Bloqueado

Exploit de kernel para dispositivos Android com bootloader bloqueado. Alcança root temporário + instalação do KernelSU sem desbloquear o bootloader ou modificar a imagem de boot. Detecção automática em tempo de execução da versão do kernel com tabela de offsets para múltiplos dispositivos.

GhostLock rodando no OnePlus Ace 6T com KernelSU (LKM, modo Jailbreak)

Vulnerabilidade

CVE-2026-43499 — Futex PI (Priority Inheritance) Use-After-Free

Afeta o kernel Linux 5.7 ~ 7.1. Corrigido nas versões estáveis 6.1.175, 6.6.140, 6.12.86. A maioria dos dispositivos Android permanece sem correção até setembro de 2026.

A syscall pselect6 copia dados de fd_set para a pilha do kernel. Quando combinada com o mecanismo de waiter futex PI, um frame de pilha liberado pode ser reutilizado como uma estrutura rt_mutex_waiter. O rebalanceamento da rb-tree durante a caminhada da cadeia PI então escreve valores controlados em endereços arbitrários do kernel.

Dispositivos Suportados

Verificados em Funcionamento

Offsets Extraídos (aguardando teste em dispositivo)

Não Viável

O overlay de pilha do pselect exige que o rt_mutex_waiter liberado caia dentro da região stack_fds controlável pelo usuário (words 0–14). Onde ele cai é determinado pelos perfis PGO/LTO do compilador, não pela versão do kernel. Consulte Layout da Pilha.

Nota sobre viabilidade 6.1: Kernels OPLUS 6.1 são consistentemente inviáveis devido ao inline PGO de do_futex. No entanto, alguns kernels não-OPLUS 6.1 (vivo) mantêm a cadeia de chamadas padrão e são viáveis (vivo T4, X Fold3 Pro). A viabilidade deve ser verificada por dispositivo.

Fluxo do Exploit

Dois caminhos de root, selecionados automaticamente com base nas capacidades do dispositivo:

Caminho A: Root UMH (preferencial, dispositivos com ashmem C)

Requer off_ashmem_misc_fops != 0 (ashmem C com miscdevice estático em BSS).

root@kitploit:~
Escrita PI (mode=4)  →  redireciona fops do miscdevice para fops falsos
                   →  r/w configfs → physrw via pipe (r/w de kernel preciso de 1 byte)
                   →  SELinux enforcing = 0 (byte único, sem corrupção de policycap)
                   →  UMH: injeta work_struct em system_unbound_wq
                   →  script de root → late-load do ksud → KSU instalado

Disponível em: OnePlus 13, OPPO Pad 4 Pro, dispositivos com ashmem C 5.10/6.1. Não disponível em ashmem Rust (GKI 6.12) — miscdevice alocado no heap.

Caminho B: Escrita PI Direta (fallback)

root@kitploit:~
Escrita 1 (mode=1)  →  SELinux enforcing = 0 (escrita de 8 bytes, corrompe bytes adjacentes)
Escrita 2 (mode=2)  →  task->cred = init_cred (uid=0, todas as capacidades)
Shell root         →  late-load do ksud → KSU → correção da política SELinux

Após W1+W2, o exploit corrige o campo de configuração do binário da política SELinux (|= 0xC0000000 para ANDROID_NETLINK_ROUTE + GETNEIGH) e recarrega via /sys/fs/selinux/load para restaurar a conectividade de rede.

Modo Bootstrap (telefone autônomo)

root@kitploit:~
App (seccomp)  →  Escrita 1 → mini-adb TCP → adb shell: exploit completo → root

Inicialização Automática

O launcher de inicialização é fornecido pelo aplicativo separado GhostLock Anchor.

Layout da Pilha (Viabilidade)

Com NFDS=320, core_sys_select aloca um buffer stack_fds de 256 bytes na pilha do kernel:

root@kitploit:~
stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── CONTROLADO PELO USUÁRIO ──►│◄── ZERADO PELO KERNEL ──►

O exploit coloca campos falsos de waiter (task, lock) nos bitmaps de entrada do fd_set. Para waiter aninhado 6.12 (14 words): word máxima viável do waiter = 3. Para waiter compacto 5.10/6.1 (10 words): word máxima viável do waiter = 7.

A posição do waiter depende da profundidade da cadeia de chamadas:

kernel_phys_load

Todas as escritas no kernel usam o alias do mapa linear. O bootloader escolhe kernel_phys_load, que varia por SoC:

SoCkernel_phys_load
SM8845 (Ace 6T, 15T)0xa8000000
SM8750 (OnePlus 13, OPPO Pad 4 Pro)0xa8000000

Um valor incorreto falha silenciosamente. Leia-o em uma unidade com root:

root@kitploit:~
su -c 'grep -i "Kernel code" /proc/iomem'   # c7810000-... → 0xc7800000

Substitua em tempo de execução: KPHYS=0xc7800000 /data/local/tmp/a/e

PSELECT_SHIFT

root@kitploit:~
/data/local/tmp/a/e                        # Padrão (shift=0)
PSELECT_SHIFT=-2 /data/local/tmp/a/e       # OnePlus 13 (6.6)

KIMAGE_TEXT_BASE

Kernels 5.10 usam 0xffffffc008000000 (VA_BITS=39, diferente do padrão 6.x 0xffffffc080000000). Isso é tratado automaticamente via o campo kimage_text_base na entrada de offsets do dispositivo.

Compilação

root@kitploit:~
make NDK_ROOT=/caminho/para/android-ndk

Ou diretamente:

root@kitploit:~
NDK=/caminho/para/android-ndk
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang" \
  -O2 -Wall -Isrc/core -Isrc/devices -DTARGET_CONFIG_H=\"target.h\" \
  src/core/main.c src/core/util.c src/core/slide.c \
  src/core/fops.c src/core/pipe_physrw.c src/core/root.c \
  src/core/miniadb.c src/core/umh_root.c \
  -o ./ghostlock -fPIE -pie -pthread

Pré-requisitos

ksud (necessário para instalação do KSU)

O GhostLock fornece root temporário. A instalação do KernelSU requer o ksud, que inclui o kernelsu.ko para cada versão KMI.

MétodoPassos
APK ReSukiSU (recomendado)Instale o ReSukiSU ou este . Inclui .

Configuração

root@kitploit:~
adb shell mkdir -p /data/local/tmp/a
adb push ./ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e

Execute após a conclusão da inicialização e quando o ADB estiver pronto.

Adicionando Novos Dispositivos

Apenas o boot.img é necessário — sem root, sem acesso ao dispositivo.

1. Extrair kernel e kallsyms

Consulte o guia de ferramentas kallsyms para o fluxo de trabalho completo, ou:

root@kitploit:~
python tools/extract_target.py --kallsyms kallsyms.txt
python tools/extract_btf.py kernel

2. Determinar viabilidade

Verifique se do_futex tem inline PGO pesquisando no binário do kernel todas as instruções de branch que visam futex_wait_requeue_pi. Se __arm64_sys_futex o chama diretamente (ignorando do_futex), o dispositivo provavelmente não é viável.

3. Criar entrada de dispositivo

Adicione src/devices/<nome>/offsets.h com os offsets extraídos e inclua-o em src/devices/offsets.h. Use a macro de offsets de struct apropriada:

Para dispositivos com waiter compacto 5.10/6.1, defina também .kimage_text_base=0xffffffc008000000ULL.

Arquivos

Licença

Apenas para pesquisa de segurança autorizada e fins educacionais.

Baixar ferramenta
DispositivoSoCKernelRamo GKISHIFT
OnePlus Ace 6T (PLR110)SM88456.12.38android16-50
OnePlus 15 (CPH2745/2747/2749)SM88506.12.23android16-50
Xiaomi 17 (pudding)SM88506.12.23 / 6.12.69android16-5 / android16-60
OnePlus 13 (IN2060)SM87506.6.89android15-8-2
OPPO Pad 4 ProSM87506.6.89android15-8-2
DispositivoSoCKernelNotas
OnePlus 15T (PLZ110)SM88456.12.38Mesmo kernel do Ace 6T
OPPO Reno10 Pro+ (CPH2521)SM84755.10.236Waiter compacto 5.10, waiter word=0
Vivo X Fold3 Pro (PD2337)SM86506.1.124Waiter compacto 6.1, waiter word=3
Vivo T4SM86506.1.145Waiter compacto 6.1, waiter word=3
DispositivoSoCKernelCausa Raiz
OPPO Find X9 UltraSM87506.12.58PGO elimina do_futex → waiter word=14
OnePlus 12SM86506.1.141PGO inline de do_futex → waiter word=13/19
OnePlus 13R / Ace 5SM86506.1.xOPLUS 6.1: waiter word=13
realme RMX5070SM66506.1.141OPLUS 6.1: waiter word=13
OPPO Pad 5 (OPD2502)MT68786.1.134OPLUS 6.1: waiter word=13
Motorola Edge 60 FusionMT68786.1.145Não-OPLUS 6.1: mesmo resultado
iQOO Neo 10 CNSM86506.1.84Frame do_futex 0xD0 → waiter word=-11
OPPO PKW110—5.15.180Frame do_futex 0x140 → waiter word=-29
iQOO Z9 5G—5.15.178Frame do_futex grande demais
CPH2763 (OPPO)—6.1.115OPLUS 6.1: PGO inline, waiter word=24
PadrãoCadeia de ChamadasViável
android16-5 (6.12)sys_futex → do_futex → fwrpi✅ waiter word=2
android15-8 (6.6)sys_futex → do_futex → fwrpi✅ waiter word=2 (SHIFT=-2)
vivo 6.1sys_futex → do_futex → fwrpi✅ waiter word=3
OPLUS 6.1sys_futex → fwrpi (inline PGO)❌ waiter word=13+
android16-6 (X9 Ultra)sys_futex → fwrpi (inline PGO)❌ waiter word=14
5.10 OPLUSsys_futex → do_futex → fwrpi✅ waiter word=0
SM8650 (vivo T4, X Fold3 Pro)
0xa8000000
SM8850 (OnePlus 15, Xiaomi 17)0xc7800000
fork
libksud.so
Release CIBaixe do CI do ReSukiSU
KernelLayout do WaiterMacro
6.12.xAninhado (14 words)STRUCT_OFFSETS_6_12
6.6.xAninhado (14 words)STRUCT_OFFSETS_6_6
6.1.x (vivo)Compacto (10 words)STRUCT_OFFSETS_6_1
5.10.xCompacto (10 words)STRUCT_OFFSETS_5_10
ArquivoDescrição
src/core/main.cEntrada do exploit, W1/W2, caminho UMH, bootstrap, script de root, correção da política SELinux
src/core/fops.cRota pselect, escrita PI, estágio CFI, suporte a waiter compacto
src/core/util.cHeap spray, KernelSnitch, slab drain, configuração do payload
src/core/pipe_physrw.cR/W de memória física via buffer de pipe
src/core/umh_root.cRoot UMH via injeção em workqueue
src/core/miniadb.cCliente Mini ADB (TCP + autenticação RSA)
src/core/target.hLayout de memória, padrões de campos de struct (6.12)
src/core/runtime_struct_offsets.hSubstituição de campos de struct por dispositivo
src/devices/offsets.hTabelas de offsets de dispositivos + macros STRUCT_OFFSETS_*
tools/extract_target.pyExtração de offsets do kallsyms
tools/extract_btf.pyExtração de offsets de struct do BTF
tools/kallsyms/Fluxo de trabalho completo de recuperação de kallsyms