Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
GhostLock-for-OnePlus — (CVE-2026-43499) Exploit del kernel para dispositivos OnePlus con bootloader bloqueado. | Kitploit
Herramientas/GitHubGitHub/p2p3p/ghostlock-for-oneplus
Seguridad AndroidEscalada de PrivilegiosExplotaciónPost-ExplotaciónAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubp2p3p/ghostlock-for-oneplus

GhostLock-for-OnePlus

(CVE-2026-43499) Exploit del kernel para dispositivos OnePlus con bootloader bloqueado.

Ver Repositorio
361380hace 3 mesesRevisado por Kitploit

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 — OnePlus

中文

Exploit de kernel dirigido a dispositivos OnePlus con bootloader bloqueado. Utiliza CVE-2026-43499 para obtener acceso root sin desbloquear el bootloader ni modificar boot.img.

Solo para investigación de seguridad autorizada y fines educativos.


Tabla de contenido

  • Descripción general de la vulnerabilidad
  • Dispositivos compatibles
  • Requisitos previos
  • Compilación
  • Uso
  • Modos de ejecución
  • Detalles técnicos
  • Estructura de archivos
  • Añadir nuevos dispositivos
  • FAQ

Descripción general de la vulnerabilidad

ElementoDetalle
CVECVE-2026-43499
TipoUse-After-Free de Futex PI (herencia de prioridad)
AlcanceKernel de Linux 2.6.39 ~ 7.1
Corregido enMainline 7.1 (commit 3bfdc63936dd)
Estado en AndroidGKI 6.12.x sigue siendo vulnerable

Causa raíz

La llamada al sistema pselect6 copia fd_set a la pila del kernel. Cuando se combina con el mecanismo de waiter de futex PI, un marco de pila liberado puede reasignarse como una estructura rt_mutex_waiter. Durante el recorrido de la cadena PI, el reequilibrado del árbol rb escribe datos controlados en direcciones arbitrarias del kernel.

Cadena

futex PI UAF (CVE-2026-43499)
  ├─ Forge rt_mutex_waiter object
  ├─ Control kernel stack via pselect/select fd_set layout
  ├─ Trigger rt_mutex PI operation for arbitrary write
  ├─ Write 1: selinux_state.enforcing = 0
  └─ Write 2: cred → init_cred (uid=0, full capabilities)

Dispositivos compatibles

DispositivoCodenameSoCKernelFirmwareEstado
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

Otros dispositivos OnePlus de la misma familia de SoC, Android 16 o kernel 6.12.x pueden adaptarse mediante la extracción de offsets del boot.img.


Requisitos previos

ksud (Requerido para KernelSU)

GhostLock gestiona la escalada de privilegios. La instalación de KernelSU requiere ksud (incluido con kernelsu.ko específico de KMI):

FuenteNotas
ReSukiSU APK (recomendado)Instala ReSukiSU; el APK incluye libksud.so
CI ReleaseDescárgalo desde ReSukiSU CI (ksud-aarch64-linux-android.zip)

Sin ksud, el exploit sigue obteniendo un shell root con uid=0, pero KernelSU no se instalará y su no persistirá.


Compilación

Requisitos previos

  • Android NDK (r25+)
  • Configura ANDROID_NDK_HOME o ANDROID_NDK_ROOT

Compilar

# Default (API 35)
make

# Specify API level
make API=34

# Specify NDK path
NDK=/path/to/android-ndk make

Artefacto

ghostlock — ejecutable ELF ARM64 enlazado estáticamente.


Uso

Configuración única

# 1. Enable ADB TCP mode
adb tcpip 5555

# 2. Push ADB key (required for bootstrap mode)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

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

Tras el primer éxito, resetprop establece automáticamente persist.adb.tcp.port=5555, lo que permite ejecuciones totalmente automáticas en reinicios posteriores.


Modos de ejecución

Exploit completo (contexto de shell ADB)

/data/local/tmp/a/e
  • perf disponible, fuga precisa del task_struct del proceso hijo
  • Dos etapas: W1 desactiva SELinux → W2 escalada de privilegios → carga de KernelSU

Modo bootstrap (contexto de aplicación, seccomp restringido)

/data/local/tmp/a/e --bootstrap
  1. Escritura 1 → desactivar SELinux
  2. Usar los permisos liberados para habilitar ADB TCP 5555 mediante setprop
  3. El cliente Mini ADB integrado se conecta a 127.0.0.1:5555
  4. Autenticación RSA con la clave previamente enviada
  5. Ejecución del exploit completo a través del shell ADB (sin seccomp)

Solo escritura 1

/data/local/tmp/a/e --write1
  • Hasta 20 intentos
  • Útil para depuración o desactivación temporal de SELinux

Detalles técnicos

1. Coincidencia del kernel en tiempo de ejecución

Los offsets se guardan en la tabla de búsqueda src/devices/offsets.h, indexada por uname -r. El programa realiza la coincidencia automáticamente al inicio; los kernels desconocidos se rechazan.

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 }  /* sentinel */
};

Fuentes de offsets

TipoCantidadExtracción
Símbolos globales de kallsyms28tools/extract_target.py
Campos de estructura BTF57tools/extract_btf.py
Valores derivados9Calculados automáticamente
Constantes fijas12Hardcodeadas

Estructuras verificadas por BTF

StructCamposPropósito
task_struct17Descriptor de proceso, cred, seccomp
rt_mutex_waiter6Objetivo de falsificación del UAF
cred4Credenciales, capacidades
seccomp3Estado del filtro seccomp
pipe_inode_info11Operaciones de pipe buffer
file_operations13Tabla fops falsa
mm_struct1Propietario del descriptor de memoria

2. Bypass de KASLR

Modo SLIDE — fuga de boot_id

Cuando los punteros del kernel están restringidos (kptr_restrict), se filtra la dirección base mediante boot_id sobrescrito con una dirección del kernel:

Read /proc/sys/kernel/random/boot_id
  └─ UUID contains nfulnl_logger address
      └─ KASLR slide = leaked_addr - image_offset
          └─ kaslr_base

Modo FOPS/CFI — fuga de la tabla fops

Cuando el dispositivo ashmem es accesible, se usan las primitivas de lectura/escritura de configfs para leer los punteros de función de la tabla fops de ashmem y calcular el offset de KASLR.

3. Heap spray del kernel

Falsifica objetos del kernel en páginas de orden 3 (32KB):

  • file_operations falsos — secuestrar el puntero fops del miscdevice de ashmem
  • rt_mutex_waiter falso — simular el nodo waiter de la cadena PI
  • task_struct falso — referencia de tarea durante el recorrido de PI
  • rt_mutex falso (bloqueo) — información correcta de waiter/owner

Implementado mediante SKB (socket buffer) + KernelSnitch:

  • KernelSnitch — colisión de hash de futex para filtrar direcciones de mm_struct
  • SKB spray — sendmsg para llenar el heap del kernel

4. Lectura/escritura de memoria física (pipe)

Después de obtener la base de KASLR, usa pipe buffers para el acceso a memoria a nivel físico:

1. Locate pipe buffer in physmap
2. Forge pipe_buffer ops table pointing to known pipe_buf_ops
3. Hijack pipe_buffer.page to target physical address
4. Arbitrary physical read/write via normal pipe operations

Compatibles: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Escritura en dos etapas

Escritura 1 — desactivar SELinux

Descargar herramienta