Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ghostlock-cve-2026-43499-4.19-k40 — CVE-2026-43499 (GhostLock) rtmutex remove_waiter() UAF local-root PoC adaptado para kernels Qualcomm Android 4.19 (Redmi K40 / clase Snapdragon 870), basado en LD_PRELOAD | Kitploit
Herramientas/GitHubGitHub/yijiacloud/ghostlock-cve-2026-43499-4.19-k40
Seguridad AndroidEscalada de PrivilegiosExplotaciónPost-ExplotaciónSeguridad MóvilDesarrollo de PayloadsExplotación de Binarios
GitHubyijiacloud/ghostlock-cve-2026-43499-4.19-k40

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ghostlock-cve-2026-43499-4.19-k40

CVE-2026-43499 (GhostLock) rtmutex remove_waiter() UAF local-root PoC adaptado para kernels Qualcomm Android 4.19 (Redmi K40 / clase Snapdragon 870), basado en LD_PRELOAD

Ver Repositorio
1130hace 1 mesAún no revisado

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

Escalada de privilegios local que explota CVE-2026-43499 — un bug en remove_waiter() de rtmutex que deja un struct rt_mutex_waiter colgando en la pila del kernel del waiter (kernel/locking/rtmutex.c, use-after-free CWE-416). Adaptado de NebuSec/CyberMeowfia (IonStack/CVE-2026-43499, Apache-2.0) para una familia de kernels de proveedor Qualcomm Android 4.19.x.

  • Kernel: 4.19.157-perf-g9607d8651312 (qcom, clang 10.0.7, SMP PREEMPT, aarch64)
  • Clase de dispositivo: Snapdragon 870 (sm8250-ac) / placas clase Redmi K40, compilaciones de la era Android 13 con encabezado de arranque v3
  • Bug: la reversión del proxy-lock en futex_requeue() llama a remove_waiter(), que opera sobre current en lugar de waiter->task — desencolado del rb-tree sin pi_lock, pi_blocked_on colgante, lo que conduce a un UAF en la pila del kernel. Afectado hasta 5.10/5.15/6.1/6.6/6.12/6.18/7.0, versiones corregidas; 4.19 no tiene backport (EOL), por lo que 4.19.157-perf está afectado.

Qué hay en el repositorio

root@kitploit:~
src/                         adapted exploit sources (preload.so)
src/targets/oplus-4.19.157-perf/target.h   per-device offset table (kallsyms-derived)
prebuilt/                    compiled artifacts (aarch64)
adaptation-4.19.patch        full diff vs. the upstream Pixel (6.x) code
Makefile, build.sh           build entry points

Adaptaciones de segunda ronda para el kernel 4.19 (vs. el upstream 6.x)

  • configfs_read_file / configfs_write_bin_file están colocados en los slots .read/.write de fops (firmas de 4.19), y la primitiva de lectura usa el diseño simplificado de búfer falso count/page/ppos=0
  • el prefijo de nombre de ashmem (/dev/ashmem) no está presente en este kernel — longitud de prefijo 0
  • geometría de kmalloc: 4.19 tiene 3 tipos de caché (NORMAL/RECLAIM/DMA, sin cachés por-memcg); el array heredado de búferes de pipe de 16 slots cae en kmalloc-1024
  • selinux_blob_sizes no existe en 4.19 → acceso directo a cred->security (SELINUX_CRED_BLOB_OFF=0); struct seccomp no tiene filter_count
  • ASHMEM_MISC_FOPS = slot miscdevice.fops (ashmem_misc + 0x10)

Compilación

Linux / WSL con Android NDK:

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

Salidas: prebuilt/preload.so (payload LD_PRELOAD) y un PIE su_daemon embebido.

Uso de ADB (root en un solo comando)

Requiere un shell de ADB (un adb shell normal y sin privilegios es suficiente — el exploit se ejecuta por completo sin privilegios y se autoeleva).

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

# 2. run the exploit against any command (here: id) via LD_PRELOAD
adb shell LD_PRELOAD=/data/local/tmp/preload.so id

# expected on success: uid=0(root) gid=0(root) groups=...
# on failure the process exits 1 and the log below tells you where it stopped.

Variantes opcionales de una sola línea:

root@kitploit:~
# capture the exit status too
adb shell "LD_PRELOAD=/data/local/tmp/preload.so id; echo rc=\$?"

# interactive root shell (the exploit also installs an su daemon)
adb shell "LD_PRELOAD=/data/local/tmp/preload.so /system/bin/sh -c 'su -c id'"

Registro de depuración (sobrevive a pánico/reinicio)

Cada línea pr_* se refleja en disco con un write()+fsync() inmediato, de modo que el rastro sobrevive a un pánico/reinicio del kernel:

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

Rutas alternativas si /sdcard no está disponible: /sdcard/Downloads, /data/local/tmp/log_<timestamp>.txt.

root@kitploit:~
# after the run (even after a 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 clave del log:

  • preload starting pid=... log=/sdcard/Download/log_<ts>.txt — payload cargado
  • slide-kaslr-ok ... base=... — base de KASLR recuperada
  • pipe-physrw-summary ... root=1 ... — RW físico instalado
  • uid_before=... uid_after=0 ... selinux=1->0 — credenciales parcheadas
  • en 4.19, el gadget slide imprime UNVERIFIED antes de su primer intento — esa etapa es la que hay que ajustar por dispositivo usando este log.

Notas y limitaciones

  • La primera etapa (fuga del slide de KASLR) se ajusta por dispositivo; los valores que no pudieron derivarse estáticamente para 4.19 se marcan en target.h y se registran como UNVERIFIED en tiempo de ejecución. Itera en el dispositivo usando el log de fsync.
  • CONFIG_STATIC_USERMODEHELPER=y en esta compilación desactiva los trucos de la ruta de modprobe; la vía principal es el parcheo directo de cred.
  • Verifica la corrección de los offsets en tu compilación exacta mediante los kallsyms del propio kernel (/proc/kallsyms) y /proc/slabinfo antes del despliegue.

Licencia

Apache-2.0 (upstream: NebuSec/CyberMeowfia). Solo para investigación de seguridad y rooteo autorizado de dispositivos. Úsalo únicamente en hardware que poseas.

Descargar herramienta
  • los offsets de struct (task_struct / cred / pipe_inode_info / file_operations / mm_struct / struct page / configfs_buffer) se rederivaron de kallsyms + ikheaders embebidos de este kernel y se validaron contra la propia tabla de reubicaciones RELA del kernel