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-cve-2026-43499-4.19-k40 — CVE-2026-43499 (GhostLock) PoC de UAF (use-after-free) em remove_waiter() do rtmutex para escalada local de privilégios para root, adaptado para kernels Android 4.19 da Qualcomm (classe Redmi K40 / Snapdragon 870), baseado em LD_PRELOAD | Kitploit
Ferramentas/GitHubGitHub/yijiacloud/ghostlock-cve-2026-43499-4.19-k40
Segurança AndroidEscalada de PrivilégiosExploraçãoPós-ExploraçãoSegurança MóvelDesenvolvimento de PayloadsExploração de Binários
GitHubyijiacloud/ghostlock-cve-2026-43499-4.19-k40

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-4.19-k40

CVE-2026-43499 (GhostLock) PoC de UAF (use-after-free) em remove_waiter() do rtmutex para escalada local de privilégios para root, adaptado para kernels Android 4.19 da Qualcomm (classe Redmi K40 / Snapdragon 870), baseado em LD_PRELOAD

Ver Repositório
1130há 29 diasAinda não revisado

GhostLock — PoC da CVE-2026-43499 (kernel 4.19 da Qualcomm)

Escalação local de privilégios explorando a CVE-2026-43499 — um bug em remove_waiter() do rtmutex que deixa um struct rt_mutex_waiter pendurado na pilha do kernel do waiter (kernel/locking/rtmutex.c, CWE-416 use-after-free). Adaptado de NebuSec/CyberMeowfia (IonStack/CVE-2026-43499, Apache-2.0) para uma família de kernels fornecidos pela Qualcomm Android 4.19.x.

  • Kernel: 4.19.157-perf-g9607d8651312 (qcom, clang 10.0.7, SMP PREEMPT, aarch64)
  • Classe de dispositivo: Snapdragon 870 (sm8250-ac) / placas classe Redmi K40, builds da era Android 13 com boot header v3
  • Bug: o rollback do proxy-lock de futex_requeue() chama remove_waiter(), que opera sobre current em vez de waiter->task — remoção da rb-tree sem pi_lock, pi_blocked_on pendurado, levando a um UAF na pilha do kernel. Afetado até as versões corrigidas 5.10/5.15/6.1/6.6/6.12/6.18/7.0; o 4.19 não tem backport (EOL), portanto o 4.19.157-perf é afetado.

O que há no repositório

root@kitploit:~
src/                         fontes do exploit adaptado (preload.so)
src/targets/oplus-4.19.157-perf/target.h   tabela de offsets por dispositivo (derivada de kallsyms)
prebuilt/                    artefatos compilados (aarch64)
adaptation-4.19.patch        diff completo vs. o código upstream do Pixel (6.x)
Makefile, build.sh           pontos de entrada de build

Adaptações da segunda rodada para o kernel 4.19 (vs. o upstream 6.x)

  • configfs_read_file / configfs_write_bin_file são colocados nos slots .read/.write de fops (assinaturas do 4.19), e a primitiva de leitura usa o layout simplificado de fake-buffer count/page/ppos=0
  • o prefixo de nome do ashmem (/dev/ashmem) está ausente neste kernel — comprimento do prefixo 0
  • geometria do kmalloc: o 4.19 tem 3 tipos de cache (NORMAL/RECLAIM/DMA, sem caches por memcg); o array legado do buffer de 16 slots do pipe cai em kmalloc-1024
  • selinux_blob_sizes não existe no 4.19 → acesso direto a cred->security (SELINUX_CRED_BLOB_OFF=0); struct seccomp não tem filter_count
  • ASHMEM_MISC_FOPS = slot de fops do miscdevice (ashmem_misc + 0x10)

Build

Linux / WSL com Android NDK:

root@kitploit:~
export NDK_ROOT=/path/to/android-ndk-r27c
./build.sh                      # ou: make PROJECT=oplus-4.19.157-perf

Saídas: prebuilt/preload.so (payload LD_PRELOAD) e um su_daemon PIE embutido.

Uso via ADB (root em um disparo)

Requer um shell ADB (um adb shell normal e sem privilégios é suficiente — o exploit roda inteiramente sem privilégios e se autoescala).

root@kitploit:~
# 1. envie o payload
adb push prebuilt/preload.so /data/local/tmp/

# 2. execute o exploit contra qualquer comando (aqui: id) via LD_PRELOAD
adb shell LD_PRELOAD=/data/local/tmp/preload.so id

# esperado em caso de sucesso: uid=0(root) gid=0(root) groups=...
# em caso de falha o processo sai com 1 e o log abaixo diz onde parou.

Variantes opcionais de uma linha:

root@kitploit:~
# capture também o status de saída
adb shell "LD_PRELOAD=/data/local/tmp/preload.so id; echo rc=\$?"

# shell root interativo (o exploit também instala um daemon su)
adb shell "LD_PRELOAD=/data/local/tmp/preload.so /system/bin/sh -c 'su -c id'"

Log de depuração (sobrevive a panic/reboot)

Toda linha pr_* é espelhada em disco com write()+fsync() imediato, para que o rastro sobreviva a um panic/reboot do kernel:

root@kitploit:~
/sdcard/Download/log_<timestamp>.txt

Caminhos alternativos se /sdcard estiver indisponível: /sdcard/Downloads, /data/local/tmp/log_<timestamp>.txt.

root@kitploit:~
# após a execução (mesmo depois de um reboot):
adb shell "ls -t /sdcard/Download/log_*.txt | head -1"
adb shell "cat $(adb shell 'ls -t /sdcard/Download/log_*.txt | head -1' | tr -d '\r')"

Marcadores importantes no log:

  • preload starting pid=... log=/sdcard/Download/log_<ts>.txt — payload carregado
  • slide-kaslr-ok ... base=... — base do KASLR recuperada
  • pipe-physrw-summary ... root=1 ... — RW físico instalado
  • uid_before=... uid_after=0 ... selinux=1->0 — creds corrigidos
  • no 4.19 o gadget do slide imprime UNVERIFIED antes da primeira tentativa — esse estágio é o que deve ser ajustado por dispositivo usando este log.

Notas e limitações

  • O primeiro estágio (vazamento do slide do KASLR) é ajustado por dispositivo; valores que não puderam ser derivados estaticamente para o 4.19 estão marcados em target.h e registrados como UNVERIFIED em tempo de execução. Itere no dispositivo usando o log com fsync.
  • CONFIG_STATIC_USERMODEHELPER=y nesta build desativa truques via caminho do modprobe; o caminho principal é a correção direta de cred.
  • Verifique a correção dos offsets na sua build exata usando o kallsyms do próprio kernel (/proc/kallsyms) e /proc/slabinfo antes da implantação.

Licença

Apache-2.0 (upstream: NebuSec/CyberMeowfia). Apenas para pesquisa de segurança e root de dispositivos autorizados. Use apenas em hardware que você possua.

Baixar ferramenta
  • os offsets de struct (task_struct / cred / pipe_inode_info / file_operations / mm_struct / struct page / configfs_buffer) foram rederivados do kallsyms deste kernel + ikheaders embutidos e validados contra a própria tabela de realocação RELA do kernel