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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
GhostLock — CVE-2026-43499 futex PI stack UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ?????? | Kitploit
Ferramentas/GitHubGitHub/wzhdgithub/ghostlock
Segurança AndroidEscalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoEngenharia ReversaExploração de Binários
GitHubwzhdgithub/ghostlock

GhostLock

CVE-2026-43499 futex PI stack UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ??????

Ver Repositório
6162há 2 mesesAinda não revisado

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 - CVE-2026-43499 Exploração de Escalada de Privilégio Local

Visão Geral da Vulnerabilidade

ID do CVE: CVE-2026-43499
Tipo de vulnerabilidade: UAF de pilha (Use-After-Free) no futex PI (herança de prioridade)
Escopo afetado: kernel Linux 6.1 ~ 6.12 (Android GKI)
Efeito da exploração: escalada de privilégio local + desativação do SELinux, obtendo um shell root

Como Funciona

Caminho de Disparo da Vulnerabilidade

User space → pselect() → alocação de rt_mutex_waiter na pilha do kernel
                      → operação futex PI dispara a liberação do waiter
                      → a memória do waiter liberado é reutilizada por operações de fd_set
                      → dados fd_set cuidadosamente construídos controlam os campos do waiter
                      → rb_erase() dispara uma escrita arbitrária na memória do kernel

Cadeia de Exploração

  1. Disparo da vulnerabilidade: por meio de pselect() + competição do futex PI para liberar o rt_mutex_waiter na pilha do kernel
  2. Controle do layout de memória: usa pipe_buffer para pulverizar o heap do kernel, construindo um rt_mutex_waiter falso
  3. Escrita arbitrária: utiliza as operações de árvore de rb_erase() para gravar um ponteiro controlado no endereço de destino
  4. Caminho de escalada:
    • Modifica a estrutura cred: uid/gid → 0, capabilities → todas ativadas
    • Desativa o SELinux: selinux_state.enforcing → 0
  5. Verificação: reexamina ashmem_fops para confirmar a integridade do CFI

Estrutura do Projeto

GhostLock/
├── README.md                    # 本文档
├── src/
│   ├── core/                    # 核心利用代码
│   │   ├── main.c               # 主入口,漏洞触发
│   │   ├── pipe.c               # pipe_buffer 喷射
│   │   ├── fops.c               # 文件操作劫持
│   │   ├── root.c               # 提权 + SELinux 禁用
│   │   ├── slide.c              # 内核地址随机化处理
│   │   ├── util.c               # 工具函数
│   │   ├── miniadb.c            # 迷你 ADB 服务器
│   │   ├── common.h             # 公共定义
│   │   ├── target.h             # 目标配置
│   │   ├── offset.h             # 偏移量包含
│   │   ├── runtime_offsets.h    # 运行时偏移表
│   │   └── kernelsnitch/        # 内核地址探测
│   │       ├── kernelsnitch.h
│   │       ├── futex_hash.h
│   │       ├── utils.h
│   │       └── timeutils.h
│   └── devices/                 # 设备适配
│       ├── offsets.h            # 偏移量结构定义
│       ├── findx8/              # OPPO Find X8
│       │   └── offsets.h
│       ├── ace6t/               # OnePlus Ace 6T
│       │   └── offsets.h
│       ├── op15/                # OnePlus 15
│       │   └── offsets.h
│       ├── opd2502/             # OnePlus Pad 2
│       │   └── offsets.h
│       └── rmx5070/             # Realme RMX5070
│           └── offsets.h
├── tools/                       # 辅助工具
│   └── extract_btf.py           # BTF 偏移量提取脚本
├── btf_*.py                     # BTF 分析脚本集合
├── Makefile                     # 构建脚本
├── compile.cmd                  # Windows 编译脚本
├── build.rsp                    # 编译响应文件
└── ghostlock                    # 编译产物(ELF aarch64)

Dispositivos Suportados

DispositivoVersão do kernelStatus
OPPO Find X8 (MT6991)6.6.118-android15✅ Adaptado
OnePlus Ace 6T6.1.x✅ Verificado
OnePlus 156.1.x✅ Verificado
OnePlus Pad 26.1.x✅ Verificado
Realme RMX50706.1.x✅ Verificado

Compilação

Requisitos de Ambiente

  • Android NDK r27c ou superior
  • Python 3.x (para análise BTF)
  • Linux/macOS/WSL (Linux recomendado)

Passos de Compilação

# 1. 设置 NDK 路径
export ANDROID_NDK_HOME=/path/to/android-ndk-r27c

# 2. 编译
make

# 3. 或者直接使用 NDK 编译
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang \
  --target=aarch64-linux-android35 \
  -O2 -Wall -fPIE -pie -pthread \
  -Isrc/core -Isrc/devices \
  -DTARGET_CONFIG_H=\"target.h\" \
  src/core/*.c -o ghostlock

Compilação no Windows

# 使用提供的 compile.cmd
compile.cmd

Como Usar

Pré-requisitos

  1. A depuração USB está ativada no celular
  2. O driver ADB está instalado no computador
  3. O celular está conectado ao computador via USB

Passos

# 1. 确认设备连接
adb devices

# 2. 确认内核版本(必须匹配)
adb shell uname -r
# 期望输出: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k

# 3. 推送 exploit 到手机
adb push ghostlock /data/local/tmp/
adb shell chmod 755 /data/local/tmp/ghostlock

# 4. 运行 exploit
adb shell /data/local/tmp/ghostlock

Exemplo de Saída da Execução

[*] GhostLock - CVE-2026-43499 Local Privilege Escalation
[*] Target kernel: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k
[*] KASLR base: 0xffffffc080000000
[*] ashmem_misc: 0xffffffc08227c518
[*] ashmem_fops: 0xffffffc0812ef5c0
[*] SELinux enforcing: 0xffffffc082358ee0
[*] Exploiting...
[+] PSELECT path activated
[+] Pipe merge path activated
[+] Root shell obtained!
[+] SELinux disabled
[*] miniadb listening on USB...

Indicadores de Sucesso

  • Aparece o prompt # (shell root)
  • O comando id exibe uid=0(root)
  • getenforce retorna Permissive

Detalhes Técnicos

Layout de Memória do Kernel

KIMAGE_TEXT_BASE = 0xffffffc080000000  (Find X8)
PAGE_OFFSET      = 0xffffffc000000000
PHYS_OFFSET      = 0x40000000
DIRECT_MAP_END   = 0xffffffc400000000  (16GB RAM)

Deslocamentos de Símbolos Chave (Find X8)

SímboloDeslocamento
init_task0x0211E280
init_cred0x02130748
selinux_enforcing0x02358EE0
ashmem_misc0x0227C518
ashmem_fops0x012EF5C0
kmalloc_caches0x0167A298

Deslocamentos de Estruturas (validação BTF)

EstruturaCampoDeslocamento
task_structcred0x820
task_structreal_cred0x818
task_structtasks0x550
task_structpi_lock0x90C
task_structseccomp0x8E8
creduid0x08
credcaps0x30
file_operationsioctl0x48
file_operationssplice_read0xB8

Caminho de Exploração

  1. kernelsnitch - examina a região direct_map para localizar mm_struct
  2. pipe spray - usa pipe_buffer para ocupar a memória do waiter liberado
  3. pselect trigger - dispara o UAF, reutilizando o waiter liberado
  4. rb_erase write - realiza escrita arbitrária por meio de operações na árvore rubro-negra
  5. cred patch - modifica as credenciais do processo atual
  6. SELinux disable - desativa o controle de acesso obrigatório

Adaptação de Dispositivos

Adicionar Novo Dispositivo

  1. Extrair a imagem do kernel:

    # 从手机提取 boot.img
    adb pull /dev/block/by-name/boot boot.img
    
    # 或者从固件包中提取
    
  2. Extrair kallsyms:

    # 使用 vmlinux-to-elf
    python3 -m vmlinux_to_elf boot.img
    # 选择 "Extract kallsyms" 选项
    
  3. Extrair informações BTF:

    python3 btf_task2.py > task_full.txt
    python3 btf_structs2.py > structs.txt
    
  4. Criar entrada do dispositivo:

    mkdir -p src/devices/mydevice
    # 复制现有条目作为模板
    cp src/devices/findx8/offsets.h src/devices/mydevice/
    # 修改偏移量
    
  5. Registrar o dispositivo: Em src/devices/offsets.h, adicione:

    #include "mydevice/offsets.h"
    

Como Obter Deslocamentos

InformaçãoOrigemFerramenta
Endereço de símbolokallsymsvmlinux-to-elf
Deslocamento de estruturaBTFbtf_task2.py
Layout da memória físicaIKCONFIGextract-ikconfig
Versão do kernelunameadb shell uname -r

Scripts de Ferramentas

Scripts de Análise BTF

# 提取 task_struct 完整成员
python3 btf_task2.py > task_full.txt

# 提取所有关键结构体
python3 btf_structs2.py > structs.txt

# 提取特定结构体
python3 btf_selinux.py > selinux.txt
python3 btf_mm.py > mm.txt

# 提取原始 BTF 数据
python3 btf_raw.py > raw.txt

Extração do kallsyms

# 使用 vmlinux-to-elf
python3 -m vmlinux_to_elf extracted/Image.bin

# 或者使用自定义脚本
python3 run_kallsyms_finder.py
Baixar ferramenta