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-OnePlus — (CVE-2026-43499) Programa de exploração de kernel para dispositivos OnePlus com bootloader bloqueado. | Kitploit
Ferramentas/GitHubGitHub/p2p3p/ghostlock-for-oneplus
Segurança AndroidEscalada de PrivilégiosExploraçãoPós-ExploraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHubp2p3p/ghostlock-for-oneplus

GhostLock-for-OnePlus

(CVE-2026-43499) Programa de exploração de kernel para dispositivos OnePlus com bootloader bloqueado.

Ver Repositório
361349há 2 mesesRevisado 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 — OnePlus

中文

Exploit de kernel para dispositivos OnePlus com bootloader bloqueado. Usa CVE-2026-43499 para obter acesso root sem desbloquear o bootloader ou modificar o boot.img.

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


Índice

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

Visão Geral da Vulnerabilidade

ItemDetalhe
CVECVE-2026-43499
TipoUse-After-Free no Futex PI (Priority Inheritance)
EscopoLinux kernel 2.6.39 ~ 7.1
Corrigido emMainline 7.1 (commit 3bfdc63936dd)
Status 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 do futex PI, um frame de pilha liberado pode ser realocado como uma struct rt_mutex_waiter. Durante a travessia da cadeia PI, o rebalanceamento da árvore rb-tree escreve dados controlados em endereços arbitrários do kernel.

Cadeia

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

Dispositivos Suportados

DispositivoCodinomeSoCKernelFirmwareStatus
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14275539-4kColorOS 16.0.2.403✅ Verificado
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14552068-4kColorOS 16.0.8.301✅ Verificado
OnePlus 15PLK110SM8845 (Snapdragon 8s Elite)6.12.23-android16-5-...-ab14541642-4k—✅ Verificado

Outros dispositivos OnePlus na mesma família de SoC, Android 16 ou kernel 6.12.x podem ser adaptados via extração de offsets do boot.img.


Pré-requisitos

ksud (Obrigatório para KernelSU)

GhostLock trata da escalada de privilégios. A instalação do KernelSU requer ksud (fornecido com kernelsu.ko específico do KMI):

FonteNotas
APK ReSukiSU (recomendado)Instale ReSukiSU; o APK inclui libksud.so
Release CIBaixe de ReSukiSU CI (ksud-aarch64-linux-android.zip)

Sem o ksud, o exploit 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+)
  • Definir ANDROID_NDK_HOME ou ANDROID_NDK_ROOT

Compilar

# Padrão (API 35)
make

# Especificar nível da API
make API=34

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

Artefato

ghostlock — executável ELF ARM64 linkado estaticamente.


Uso

Configuração Única

# 1. Habilitar modo ADB TCP
adb tcpip 5555

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

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

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


Modos de Execução

Exploit Completo (contexto shell ADB)

/data/local/tmp/a/e
  • perf disponível, vazamento preciso de child task_struct
  • Duas etapas: Escrita 1 desativa SELinux → Escrita 2 escalada de privilégios → carregamento do KernelSU

Modo Bootstrap (contexto App, com seccomp restrito)

/data/local/tmp/a/e --bootstrap
  1. Escrita 1 → desativar SELinux
  2. Usar permissões liberadas para setprop habilitar ADB TCP 5555
  3. Cliente Mini ADB embutido conecta a 127.0.0.1:5555
  4. Autenticação RSA com chave previamente enviada
  5. Execução completa do exploit via shell ADB (sem seccomp)

Apenas Escrita 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 em tabela de consulta src/devices/offsets.h, indexada por uname -r. O programa faz correspondência automática 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 de Offset

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

Structs Verificadas por BTF

StructCamposFinalidade
task_struct17Descritor de processo, cred, seccomp
rt_mutex_waiter6Alvo de forja UAF
cred4Credenciais, capacidades
seccomp3Estado do filtro seccomp
pipe_inode_info11Operações de buffer de pipe
file_operations13Tabela fake fops
mm_struct1Proprietário do descritor de memória

2. Bypass de KASLR

Modo SLIDE — Vazamento de boot_id

Quando ponteiros do kernel sã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 endereço de nfulnl_logger
      └─ Deslocamento KASLR = leaked_addr - image_offset
          └─ kaslr_base

Modo FOPS/CFI — Vazamento da Tabela fops

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

3. Heap Spray do Kernel

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

  • Fake file_operations — sequestrar ponteiro fops do miscdevice ashmem
  • Fake rt_mutex_waiter — simular nó waiter da cadeia PI
  • Fake task_struct — referência de tarefa durante travessia PI
  • Fake rt_mutex (lock) — 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
  • Spray SKB — sendmsg para preencher heap do kernel

4. Leitura/Escrita Física de Memória (Pipe)

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

1. Localizar buffer de pipe no physmap
2. Forjar tabela de operações pipe_buffer apontando para pipe_buf_ops conhecido
3. Sequestrar pipe_buffer.page para endereço físico alvo
4. Leitura/escrita física arbitrária via operações normais de pipe

Suportado: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Escrita em Duas Etapas

Escrita 1 — Desativar SELinux

Alvo: selinux_state.enforcing (offset 0x00)
Método: escrita PI do nó filho → forjar __rb_parent_color do waiter
        apontando para selinux_enforcing - 8
        rebalanceamento da rb-tree escreve 0x00

Escrita 2 — Escalar para Root

Baixar ferramenta