
Exploit del kernel de Android específico para el dispositivo para CVE-2026-64560 en compilaciones de OnePlus 13, que proporciona root temporal a través de ADB shell con payloads verificados y herramientas de portabilidad.
OP5D0DL1) CVE-2026-64560Adaptación específica para el dispositivo de la prueba de concepto de Android CVE-2026-64560 para las compilaciones exactas del OnePlus 13 (PJZ110) que se enumeran a continuación. Proporciona acceso root temporal para el arranque actual mediante un asistente que solo funciona a través de ADB-shell.
[!WARNING] Este es código de exploit de kernel experimental. Puede reiniciar el dispositivo, corromper el estado del kernel o causar pérdida de datos. Úsalo solo en un dispositivo que poseas o que estés explícitamente autorizado a probar. Haz una copia de seguridad de los datos importantes primero.
Este repositorio está dirigido a imágenes de kernel, y sus perfiles están dirigidos a huellas de compilación; una OTA puede cambiar una sin la otra. Ambas compilaciones a continuación incluyen el kernel idéntico byte a byte, por lo que comparten todos los offsets y solo difieren en la cadena de identificación del dispositivo. docs/BUILDS.md es el índice y el árbol de decisión para una nueva imagen — empieza por ahí.
BP2A.250605.015 | CP2A.260605.016 | |
|---|---|---|
| Android | 16 | 17 |
| Huella | OnePlus/PJZ110/OP5D0DL1:16/BP2A.250605.015/V.58c08ac-32ff28e-33c0954:user/release-keys | OnePlus/PJZ110/OP5D0DL1:17/CP2A.260605.016/V.34246cc-e2d62b-e2d628:user/release-keys |
| Kernel | 6.6.118-android15-8-g9bc34d5b0c79-abogki537459655-4k | same |
| Tamaño de página / CPUs | 4 KiB / 8 en línea | same |
| SHA-256 de la Image decodificada | ee5ee448d2985eeeb7a8b5ad2e1efc34eeb410a8beae0ab484504d739124d613 | same |
| Payload | bin/cve-2026-64560-fanout-op13-bp2a.250605.015 | bin/cve-2026-64560-fanout-op13-cp2a.260605.016 |
El ejecutor rechaza una huella inesperada y verifica cada payload incluido antes de la ejecución. Este repositorio no contiene imágenes de firmware, claves de dispositivo ni secretos únicos del dispositivo.
Requisitos:
adb disponible en el PATHDesde la raíz del repositorio:
sh scripts/boot-campaign.sh -s <serial> -p bin/cve-2026-64560-fanout-op13-cp2a.260605.016 -n 10
Después de ROOT_SUCCESS, cualquier terminal nueva puede abrir el shell root temporal:
adb -s <serial> shell -T /data/local/tmp/su
Ejecuta id para verificar uid=0(root). El acceso dura solo para el arranque actual; vuelve a ejecutarlo después de un reinicio. No se modifica ninguna partición de arranque, de proveedor ni del sistema.
El exploit contiene una carrera de kernel probabilística. La cadena alcanza la etapa de puente de forma fiable y supera su puerta de lectura aproximadamente en uno de cada ocho arranques, por lo que una tanda de arranques vacía no es evidencia de que algo esté roto — presupuesta arranques, y consulta docs/BUILDS.md para ver el único contador que parece una señal de fallo y no lo es.
scripts/boot-campaign.sh es el bucle ejecutor en POSIX sh, para hosts donde el host de PowerShell para scripts/root.ps1 no está disponible. Ambos aplican las mismas puertas.
Android NDK r29 y API 35 son los valores predeterminados para compilaciones reproducibles. El NDK no está presente por defecto, así que pasa su raíz:
.\scripts\build.ps1 -Profile profiles\op13\CP2A.260605.016.json -NdkRoot <path-to-ndk>
El script compila las estrategias del exploit y el asistente temporal-su, elimina los símbolos de los resultados y verifica sus valores SHA-256 fijados.
rotate se compila pero deliberadamente no se promueve: tumbó el kernel en este dispositivo y no se ha revalidado desde la recalibración del temporizador.
python tools/extract_image.py <boot.img> <out> # compare the Image digest first
python tools/port_target.py --profile profiles/op13/<BUILD>.json
Todo lo que posee una compilación lleva el nombre de la compilación, por lo que dos compilaciones de un mismo dispositivo nunca colisionan. Consulta docs/BUILDS.md para el árbol de decisión y docs/PORTING.md para la lista de verificación completa.
El framework de exploit que adapta este repositorio — las fuentes del exploit, las etapas de credenciales y restauración, el asistente temporal-su, la compilación reproducible, el ejecutor adaptativo y el conjunto de herramientas de portabilidad — proviene de la adaptación dada del Xiaomi 15:
Los offsets del OnePlus 13, el ajuste de la carrera y la validación aquí se midieron en este dispositivo en lugar de transferirse; los dos objetivos de kernel son imágenes diferentes, por lo que casi todas las direcciones difieren. El perfil y los payloads de dada se conservan como la referencia contra la que se validó originalmente el framework.
La prueba de concepto original, y la vulnerabilidad en sí, son anteriores a ambos:
Las revisiones exactas y las correcciones de Linux se enumeran en docs/UPSTREAM.md.
Apache License 2.0, heredada del trabajo upstream. Consulta LICENSE y NOTICE.
| Ruta | Propósito |
|---|
bin/ | Payloads de lanzamiento AArch64 verificados |
profiles/op13/<BUILD>.json | Descripciones de objetivos, una por huella de compilación |
profiles/dada/ | El objetivo Xiaomi 15 del que proviene este framework, conservado como referencia |
src/ | Fuentes en C, generadas por compilación a partir de las plantillas compartidas |
targets/ | Conjuntos de offsets medidos para una imagen de kernel |
evidence/ | Registros de cadena recortados de ejecuciones que obtuvieron root |
scripts/boot-campaign.sh | Bucle de arranque con puertas térmicas, de asentamiento y de tiempo de espera |
scripts/sweep.sh | Varios ajustes de configuración en un solo arranque |
scripts/root.ps1, build.ps1, new-target.ps1 | Ejecutor, compilación y andamiaje |
tools/extract_image.py | Imagen de kernel a partir de un volcado de arranque, ambos digests |
tools/kallsyms_extract.py | Tabla de símbolos a partir de una Image arm64 sin procesar (autovalidante) |
tools/ksym.py | Búsqueda de símbolos en una tabla extraída |
tools/btf_offsets.py | Offsets de miembros de struct a partir del blob BTF de la Image |
tools/port_target.py | Genera una fuente de compilación a partir de una plantilla + perfil |
docs/BUILDS.md | Índice de compilaciones, árbol de decisión, dificultades de la campaña |
docs/OP13.md | Derivación de cada offset, con la evidencia |
docs/PORTING.md | Adaptación a nuevas compilaciones y lista de verificación de promoción |
docs/UPSTREAM.md | Procedencia upstream y revisiones fijadas |