Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
GitHub

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
cuteaplane/ghostlock-for-oneplus15t

GhostLock-for-OnePlus15T

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

Ver Repositório
12163há 2 mesesAinda 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

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

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

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 libksud.so
Lançamento CIBaixe de ReSukiSU CI (ksud-aarch64-linux-android.zip)

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

# 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

# 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)

/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)

/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

/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.

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

TipoQuantidadeExtração
Símbolos globais kallsyms28tools/extract_target.py
Campos de struct BTF57tools/extract_btf.py
Valores derivados9Calculados automaticamente
Constantes fixas12Codificadas

Structs Verificadas via BTF

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

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:

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:

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

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

Baixar ferramenta