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-for-OnePlus15T — (CVE-2026-43499)Exploit de kernel para o OnePlus 15T com bootloader bloqueado. | Kitploit
Ferramentas/GitHubGitHub/cuteaplane/ghostlock-for-oneplus15t
Segurança AndroidEscalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoSegurança MóvelDesenvolvimento de PayloadsExploração de Binários
GitHubcuteaplane/ghostlock-for-oneplus15t

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-for-OnePlus15T

(CVE-2026-43499)Exploit de kernel para o OnePlus 15T com bootloader bloqueado.

Ver Repositório
121há 26 diasAinda não revisado

GhostLock — OnePlus 15T

中文

Exploração de kernel direcionada a dispositivos OnePlus 15T com bootloader bloqueado. Usa a CVE-2026-43499 para obter acesso root sem desbloquear o bootloader ou modificar o boot.img.

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

Modificado a partir do repositório original GhostLock-for-OnePlus, adaptado para o layout de memória física e temporização de CPU do OnePlus 15T (PLZ110 / SM8850 / Snapdragon 8 Elite).


Sumário

  • Visão Geral da Vulnerabilidade
  • Dispositivos Suportados
  • Pré-requisitos
  • Compilação
  • Uso
  • Modos de Execução
  • Detalhes Técnicos
  • Estrutura de Arquivos
  • Adicionando Novos Dispositivos
  • FAQ

Visão Geral da Vulnerabilidade

Causa Raiz

A syscall pselect6 copia fd_set para a pilha do kernel. Quando combinada com o mecanismo de waiter PI do futex, um quadro de pilha liberado pode ser realocado como uma estrutura rt_mutex_waiter. Durante a travessia da cadeia PI, o rebalanceamento da rb-tree grava dados controlados em endereços arbitrários do kernel.

Cadeia

root@kitploit:~
futex PI UAF (CVE-2026-43499)
  ├─ Forjar objeto rt_mutex_waiter
  ├─ Controlar a pilha do kernel via layout de fd_set do pselect/select
  ├─ Acionar operação PI do rt_mutex para gravação arbitrária
  ├─ Gravação 1: selinux_state.enforcing = 0
  └─ Gravação 2: cred → init_cred (uid=0, capacidades completas)

Dispositivos Suportados

DispositivoCodinomeSoCKernelFirmwareStatus
OnePlus 15TPLZ110SM8850 (Snapdragon 8 Elite)6.12.38-android16-5-g844001fb8721-ab14552068-4kColorOS 16.0.9.400✅ Verificado

Para Ace 6T e OnePlus 15, consulte o repositório original.


Pré-requisitos

ksud (Necessário para KernelSU)

O GhostLock lida com a elevação de privilégios. A instalação do KernelSU requer o ksud (incluído com o kernelsu.ko específico da KMI):

FonteObservações
APK ReSukiSU (recomendado)Instale o ReSukiSU; o APK inclui

Sem o ksud, a exploração ainda obtém shell root com uid=0, mas o KernelSU não será instalado e o su não persistirá.


Compilação

Pré-requisitos

  • Android NDK (r25+)
  • Defina ANDROID_NDK_HOME ou ANDROID_NDK_ROOT

Compilar

root@kitploit:~
# Padrão (API 35)
make

# Especificar nível de API
make API=34

# Especificar caminho do NDK
NDK=/caminho/para/android-ndk make

Artefato

ghostlock — executável ELF ARM64 estaticamente vinculado.


Uso

Configuração Única

root@kitploit:~
# 1. Ativar o modo TCP do ADB
adb tcpip 5555

# 2. Enviar a chave ADB (necessária para o modo bootstrap)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Enviar a exploração
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

Após o primeiro sucesso, o resetprop define automaticamente persist.adb.tcp.port=5555, permitindo execuções totalmente automáticas em reinicializações subsequentes.


Modos de Execução

Exploração Completa (contexto do shell ADB)

root@kitploit:~
/data/local/tmp/a/e
  • perf disponível, vazamento preciso do task_struct do filho
  • Dois estágios: W1 desativa SELinux → W2 elevação de privilégio → carregamento do KernelSU

Modo Bootstrap (contexto de App, restrito por seccomp)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. Gravação 1 → desativar SELinux
  2. Usar as permissões liberadas para setprop ativar ADB TCP 5555
  3. Cliente Mini ADB integrado conecta-se a 127.0.0.1:5555
  4. Autenticação RSA com a chave previamente enviada
  5. Execução completa da exploração via shell ADB (sem seccomp)

Apenas Gravação 1

root@kitploit:~
/data/local/tmp/a/e --write1
  • Até 20 tentativas
  • Útil para depuração ou desativação temporária do SELinux

Detalhes Técnicos

1. Correspondência de Kernel em Tempo de Execução

Offsets armazenados na tabela de consulta em src/devices/offsets.h, identificados por uname -r. O programa faz a correspondência automaticamente na inicialização; kernels desconhecidos são rejeitados.

root@kitploit:~
static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* sentinela */
};

Fontes dos Offsets

Structs Verificadas via BTF

2. Bypass de KASLR

Modo SLIDE — Vazamento de boot_id

Quando os ponteiros do kernel estão restritos (kptr_restrict), vaze o endereço base via boot_id sobrescrito com um endereço do kernel:

root@kitploit:~
Ler /proc/sys/kernel/random/boot_id
  └─ UUID contém o endereço de nfulnl_logger
      └─ Slide KASLR = endereço vazado - image_offset
          └─ kaslr_base

Modo FOPS/CFI — Vazamento da Tabela fops

Quando o dispositivo ashmem está acessível, use as primitivas de leitura/gravação do configfs para ler ponteiros de função da tabela fops do ashmem e calcular o offset KASLR.

3. Heap Spray do Kernel

Forje objetos do kernel em páginas order-3 (32KB):

  • file_operations falso — sequestre o ponteiro fops do miscdevice ashmem
  • rt_mutex_waiter falso — simule o nó waiter da cadeia PI
  • task_struct falso — referência de tarefa durante a travessia PI
  • rt_mutex (lock) falso — informações corretas de waiter/owner

Implementado via SKB (socket buffer) + KernelSnitch:

  • KernelSnitch — colisão de hash futex para vazar endereços de mm_struct
  • SKB spray — sendmsg para preencher o heap do kernel

4. Leitura/Gravação de Memória Física (Pipe)

Após obter a base KASLR, use buffers de pipe para acesso à memória em nível físico:

root@kitploit:~
1. Localizar o buffer de pipe no physmap
2. Forjar a tabela de ops do pipe_buffer apontando para pipe_buf_ops conhecido
3. Sequestrar pipe_buffer.page para o endereço físico alvo
4. Leitura/gravação física arbitrária via operações normais de pipe

Suportado: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Gravação em Dois Estágios

Gravação 1 — Desativar SELinux

root@kitploit:~
Alvo: selinux_state.enforcing (offset 0x00)
Método: gravação PI de nó filho → forjar waiter __rb_parent_color
        apontando para selinux_enforcing - 8
        o rebalanceamento da rb-tree grava 0x00

Gravação 2 — Elevar para Root

root@kitploit:~
Alvo: ponteiro cred do processo filho
Método: 1. fazer fork do filho → perf_find_task() localizar task_struct
        2. calcular o offset do campo cred
        3. gravação PI de nó filho → cred = init_cred (uid=0, caps completas)
        4. limpar seccomp (TIF_SECCOMP + struct seccomp zerada)

A verificação de leitura das capacidades é realizada após a sobrescrita do cred.

6. Cliente Mini ADB Integrado

src/core/miniadb.c — cliente leve do protocolo ADB para o modo bootstrap:

root@kitploit:~
1. Conexão TCP 127.0.0.1:5555
2. A_CNXN → solicitação de conexão
3. A_AUTH → desafio de token RSA
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → resposta assinada
6. A_CNXN → conexão estabelecida
7. A_OPEN "shell:/data/local/tmp/a/e" → exploração completa

Suporta algoritmos de assinatura SHA-1 e SHA-256.


Estrutura de Arquivos

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Configuração de compilação (cross-compile NDK)
├── README.md                       # Documentação
├── src/
│   ├── core/                       # Código principal da exploração
│   │   ├── main.c                  # Ponto de entrada: gravação em dois estágios + shell root
│   │   ├── fops.c                  # Modo FOPS/CFI: rota pselect, gravação PI, vazamento KASLR
│   │   ├── util.c                  # Utilitários: heap spray, KASLR, primitivas de R/W do kernel
│   │   ├── slide.c                 # Modo SLIDE: vazamento KASLR via boot_id + rota pselect
│   │   ├── pipe.c                  # R/W de memória física via buffer de pipe (physrw)
│   │   ├── root.c                  # Sobrescrita de cred, limpeza de seccomp, gerenciamento do filho root
│   │   ├── miniadb.c              # Cliente ADB integrado (TCP + autenticação RSA)
│   │   ├── common.h               # Macros globais, structs, declarações, constantes
│   │   ├── target.h               # Layout de memória alvo / offsets de struct / parâmetros KASLR
│   │   ├── offset.h               # Ponte de configuração do alvo em tempo de compilação (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — vazamento de endereço de mm_struct
│   │       ├── kernelsnitch.h     # Algoritmo principal: colisão de hash futex + força bruta
│   │       ├── futex_hash.h       # Função de hash futex
│   │       ├── timeutils.h        # Medição de timestamp da CPU (RDTSC)
│   │       └── utils.h            # Macros auxiliares (pr_info / SYSCHK / ASSERT etc.)
│   └── devices/                   # Tabelas de offsets de dispositivos
│       ├── offsets.h              # Agrega todos os offsets de dispositivos (tabela de consulta + sentinela)
│       ├── ace6t/offsets.h        # Offsets do OnePlus Ace 6T (2 versões de kernel)
│       └── op15/offsets.h         # Offsets do OnePlus 15 (1 versão de kernel)
└── tools/                         # Ferramentas de extração de offsets
    ├── extract_target.py          # Extrai offsets de símbolos globais kallsyms (28 itens)
    └── extract_btf.py             # Extrai offsets de campos de struct BTF (57 itens)

Visão Geral dos Módulos Principais


Adicionando Novos Dispositivos

Este repositório foi modificado; consulte o repositório original para obter detalhes.


FAQ

P: Sem saída ao executar?

Certifique-se de estar executando em um shell ADB. O contexto de App requer --bootstrap.

P: "no offsets for this kernel"?

Sua versão do kernel ainda não é suportada. Siga Adicionando Novos Dispositivos para extrair os offsets e recompilar.

P: A Gravação 1 continua falhando?

  • Garanta a fixação na núcleo de CPU correto (macro CORE)
  • Ajuste a temporização de PSELECT_ENTER_DELAY_USEC
  • Verifique se há processos interferentes

P: A Gravação 2 com perf retorna 0?

  • Verifique se o seccomp bloqueia perf_event_open (use --bootstrap no contexto de App)
  • Confirme se o bypass de KASLR foi bem-sucedido (kaslr_base válido)

P: KernelSU não carrega?

  • Confirme se o ksud existe e é executável
  • Verifique a integridade do arquivo de política de rede (correção do load_policy)

Licença

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

Baixar ferramenta
ItemDetalhe
CVECVE-2026-43499
TipoUse-After-Free em Futex PI (Priority Inheritance)
EscopoLinux kernel 2.6.39 ~ 7.1
Corrigido emMainline 7.1 (commit 3bfdc63936dd)
Status no AndroidGKI 6.12.x ainda vulnerável
libksud.so
Lançamento CIBaixe de ReSukiSU CI (ksud-aarch64-linux-android.zip)
TipoQuantidadeExtração
Símbolos globais kallsyms28tools/extract_target.py
Campos de struct BTF57tools/extract_btf.py
Valores derivados9Calculados automaticamente
Constantes fixas12Codificadas
StructCamposFinalidade
task_struct17Descritor de processo, cred, seccomp
rt_mutex_waiter6Alvo de forja do UAF
cred4Credenciais, capacidades
seccomp3Estado do filtro seccomp
pipe_inode_info11Operações de buffer de pipe
file_operations13Tabela fops falsa
mm_struct1Proprietário do descritor de memória
MóduloArquivo(s)Responsabilidade
Entradamain.cParse de CLI, despacho W1/W2, fluxo bootstrap
Rota PIfops.c / slide.cLayout de pilha pselect/select, manipulação da cadeia PI do futex
KASLRutil.c / fops.c / slide.cBypass de modo duplo: vazamento de boot_id + vazamento da tabela fops
Heap Sprayutil.cAlocação de páginas order-3, SKB spray, layout de objetos forjados
R/W Físicopipe.cSequestro de buffer de pipe, acesso arbitrário à memória física
Elevação de Privilégioroot.cSobrescrita de cred, verificação de capacidades, limpeza de seccomp
ADBminiadb.cCliente leve do protocolo ADB, autenticação RSA
Mecanismo de Vazamentokernelsnitch/Colisão de hash futex para localização de mm_struct