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-for-OnePlus15T — (CVE-2026-43499)Exploit del kernel para OnePlus 15T con el bootloader bloqueado. | Kitploit
Herramientas/GitHubGitHub/cuteaplane/ghostlock-for-oneplus15t
Seguridad AndroidEscalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónSeguridad MóvilDesarrollo de PayloadsExplotación de Binarios
GitHubcuteaplane/ghostlock-for-oneplus15t

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-for-OnePlus15T

(CVE-2026-43499)Exploit del kernel para OnePlus 15T con el bootloader bloqueado.

Ver Repositorio
121hace 27 díasAún no revisado

GhostLock — OnePlus 15T

中文

Exploit de kernel dirigido a dispositivos OnePlus 15T 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.

Modificado a partir del repositorio original GhostLock-for-OnePlus, adaptado para el diseño de memoria física y la temporización de CPU del OnePlus 15T (PLZ110 / SM8850 / Snapdragon 8 Elite).


Tabla de contenidos

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

Resumen de la vulnerabilidad

Causa raíz

La llamada al sistema pselect6 copia fd_set a la pila del kernel. Cuando se combina con el mecanismo de espera 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

root@kitploit:~
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

DispositivoNombre claveSoCKernelFirmwareEstado
OnePlus 15TPLZ110SM8850 (Snapdragon 8 Elite)6.12.38-android16-5-g844001fb8721-ab14552068-4kColorOS 16.0.9.400✅ Verificado

Para Ace 6T y OnePlus 15, consulta el repositorio original.


Requisitos previos

ksud (requerido para KernelSU)

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

FuenteNotas
APK de ReSukiSU (recomendado)Instala ReSukiSU; el APK incluye

Sin ksud, el exploit sigue obteniendo una 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

root@kitploit:~
# 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 inicial

root@kitploit:~
# 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)

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

Modo bootstrap (contexto de app, seccomp restringido)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. Escritura 1 → desactivar SELinux
  2. Usa 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 transferida previamente
  5. Ejecución del exploit completo a través de la shell ADB (sin seccomp)

Solo escritura 1

root@kitploit:~
/data/local/tmp/a/e --write1
  • Hasta 20 intentos
  • Útil para depuración o para desactivar SELinux temporalmente

Detalles técnicos

1. Coincidencia del kernel en tiempo de ejecución

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

root@kitploit:~
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

Estructuras verificadas por BTF

2. Evasión de KASLR

Modo SLIDE — fuga de boot_id

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

root@kitploit:~
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, usa las primitivas de lectura/escritura de configfs para leer los punteros a 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 falsa — secuestra el puntero fops del miscdevice ashmem
  • rt_mutex_waiter falsa — simula el nodo waiter de la cadena PI
  • task_struct falsa — referencia de tarea durante el recorrido de PI
  • rt_mutex falsa (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)

Tras obtener la base de KASLR, usa los búferes de pipe para acceder a la memoria a nivel físico:

root@kitploit:~
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

Soportadas: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Escritura en dos etapas

Escritura 1 — desactivar SELinux

root@kitploit:~
Target: selinux_state.enforcing (offset 0x00)
Method: child-node PI write → forge waiter __rb_parent_color
        pointing to selinux_enforcing - 8
        rb-tree rebalance writes 0x00

Escritura 2 — escalar a root

root@kitploit:~
Target: child process cred pointer
Method: 1. fork child → perf_find_task() locate task_struct
        2. calculate cred field offset
        3. child-node PI write → cred = init_cred (uid=0, full caps)
        4. clear seccomp (TIF_SECCOMP + seccomp struct zeroed)

Tras sobrescribir cred, se realiza una verificación de lectura de las capacidades.

6. Cliente Mini ADB integrado

src/core/miniadb.c — cliente ligero del protocolo ADB para el modo bootstrap:

root@kitploit:~
1. TCP connect 127.0.0.1:5555
2. A_CNXN → connection request
3. A_AUTH → RSA token challenge
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → signed response
6. A_CNXN → connection established
7. A_OPEN "shell:/data/local/tmp/a/e" → full exploit

Admite los algoritmos de firma SHA-1 y SHA-256.


Estructura de archivos

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Build configuration (NDK cross-compile)
├── README.md                       # Documentation
├── src/
│   ├── core/                       # Core exploit code
│   │   ├── main.c                  # Entry point: two-stage write + root shell
│   │   ├── fops.c                  # FOPS/CFI mode: pselect route, PI write, KASLR leak
│   │   ├── util.c                  # Utilities: heap spray, KASLR, kernel R/W primitives
│   │   ├── slide.c                 # SLIDE mode: boot_id KASLR leak + pselect route
│   │   ├── pipe.c                  # Pipe buffer physical memory R/W (physrw)
│   │   ├── root.c                  # Cred overwrite, seccomp clear, root child mgmt
│   │   ├── miniadb.c              # Built-in ADB client (TCP + RSA auth)
│   │   ├── common.h               # Global macros, structs, declarations, constants
│   │   ├── target.h               # Target memory layout / struct offsets / KASLR params
│   │   ├── offset.h               # Compile-time target config bridge (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — mm_struct address leak
│   │       ├── kernelsnitch.h     # Core algorithm: futex hash collision + brute-force
│   │       ├── futex_hash.h       # Futex hash function
│   │       ├── timeutils.h        # CPU timestamp measurement (RDTSC)
│   │       └── utils.h            # Helper macros (pr_info / SYSCHK / ASSERT etc.)
│   └── devices/                   # Device offset tables
│       ├── offsets.h              # Aggregate all device offsets (lookup table + sentinel)
│       ├── ace6t/offsets.h        # OnePlus Ace 6T offsets (2 kernel versions)
│       └── op15/offsets.h         # OnePlus 15 offsets (1 kernel version)
└── tools/                         # Offset extraction toolchain
    ├── extract_target.py          # Extract kallsyms global symbol offsets (28 items)
    └── extract_btf.py             # Extract BTF struct field offsets (57 items)

Resumen de los módulos principales


Añadir nuevos dispositivos

Este repositorio ha sido modificado; consulta el repositorio original para más detalles.


Preguntas frecuentes

P: ¿No hay salida al ejecutarlo?

Asegúrate de que estás ejecutándolo en una shell ADB. El contexto de app requiere --bootstrap.

P: ¿"no offsets for this kernel"?

Tu versión de kernel aún no es compatible. Sigue Añadir nuevos dispositivos para extraer los offsets y recompilar.

P: ¿La escritura 1 sigue fallando?

  • Asegúrate de fijar el proceso al núcleo de CPU correcto (macro CORE)
  • Ajusta la temporización de PSELECT_ENTER_DELAY_USEC
  • Comprueba si hay procesos que interfieran

P: ¿perf devuelve 0 en la escritura 2?

  • Comprueba si seccomp bloquea perf_event_open (usa --bootstrap en contexto de app)
  • Verifica que la evasión de KASLR se ha realizado correctamente (kaslr_base válido)

P: ¿KernelSU no se carga?

  • Confirma que ksud existe y es ejecutable
  • Comprueba la integridad del archivo de política de red (corrección de load_policy)

Licencia

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

Descargar herramienta
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
libksud.so
Lanzamiento de CIDescárgalo de CI de ReSukiSU (ksud-aarch64-linux-android.zip)
TipoCantidadExtracción
Símbolos globales de kallsyms28tools/extract_target.py
Campos de estructuras BTF57tools/extract_btf.py
Valores derivados9Calculados automáticamente
Constantes fijas12Codificadas (hardcoded)
EstructuraCamposPropósito
task_struct17Descriptor de proceso, cred, seccomp
rt_mutex_waiter6Objetivo de falsificación del UAF
cred4Credenciales, capacidades
seccomp3Estado del filtro de seccomp
pipe_inode_info11Operaciones de búfer de pipe
file_operations13Tabla fops falsa
mm_struct1Propietario del descriptor de memoria
MóduloArchivo(s)Responsabilidad
Entradamain.cProcesamiento de CLI, despacho de W1/W2, flujo de bootstrap
Ruta PIfops.c / slide.cDisposición de la pila pselect/select, manipulación de la cadena futex PI
KASLRutil.c / fops.c / slide.cEvasión de doble modo: fuga de boot_id + fuga de la tabla fops
Heap Sprayutil.cAsignación de páginas de orden 3, SKB spray, disposición de los objetos falsificados
Phys R/Wpipe.cSecuestro de búferes de pipe, acceso arbitrario a memoria física
Escalada de Privilegiosroot.cSobrescritura de cred, verificación de capacidades, limpieza de seccomp
ADBminiadb.cCliente ligero del protocolo ADB, autenticación RSA
Motor de Fugaskernelsnitch/Colisión de hash de futex para localizar mm_struct