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-46395-qemu — Laboratorio basado en QEMU para reproducir la condición de carrera CVE-2022-46395 en el controlador de GPU Arm Mali r36p0. Incluye PoC, scripts de compilación y empaquetado de initramfs para la investigación local de vulnerabilidades y pruebas de regresión. | Kitploit
Herramientas/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Análisis de VulnerabilidadesExplotaciónFuzzingAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

Laboratorio basado en QEMU para reproducir la condición de carrera CVE-2022-46395 en el controlador de GPU Arm Mali r36p0. Incluye PoC, scripts de compilación y empaquetado de initramfs para la investigación local de vulnerabilidades y pruebas de regresión.

Ver Repositorio
2hace 3 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

Laboratorio QEMU r36p0 para CVE-2022-46395

Este repositorio contiene un laboratorio QEMU/no-Mali para reproducir la condición desencadenante portable de CVE-2022-46395 contra la familia de controladores Arm Mali r36p0.

El laboratorio está pensado para investigación local de vulnerabilidades y pruebas de regresión. No incluye la carga útil de escalada de privilegios específica de Pixel del exploit original. En el modo LAB_QEMU, el PoC se detiene después de demostrar que se alcanzó la ventana de carrera soft-event/user-buffer.

Estructura del repositorio

  • poc/: PoC de CVE-2022-46395 adaptado a QEMU. Las llamadas de registro y propiedades de Android se reemplazan, y el parcheo de texto del kernel de Pixel está deshabilitado bajo LAB_QEMU.
  • src/google-gpu-raviole-android13/: código fuente del módulo de GPU de Google Pixel de android.googlesource.com/kernel/google-modules/gpu, rama android-gs-raviole-5.10-android13. El incluido identifica el controlador como .
mali_kbase/Kbuild
r36p0-01eac0
  • scripts/: compilación, empaquetado de initramfs, arranque de QEMU y utilidades de reproducción de una sola ejecución.
  • docs/: notas de análisis local e informes de reproducción.
  • logs/: registros de evidencia seleccionados de ejecuciones locales exitosas.
  • Los binarios generados, los archivos initramfs, los ficheros objeto y la mayoría de los registros de ejecución son ignorados por Git. Reconstruye estos localmente con los scripts siguientes.

    Requisitos del host

    Los scripts se usaron en una máquina virtual Linux con:

    • bash, make, gcc, file, cpio, gzip, modinfo
    • busybox en /bin/busybox
    • qemu-system-x86_64
    • un árbol del kernel Linux 5.10 x86_64 con KASAN preparado que pueda compilar módulos externos

    Por defecto, los scripts esperan el árbol del kernel y la imagen de arranque en:

    root@kitploit:~
    ../build/linux-5.10-kasan
    ../build/linux-5.10-kasan/arch/x86/boot/bzImage
    

    Puedes sobrescribir esas rutas con KDIR y KERNEL_IMAGE.

    Reproducción

    Clona el repositorio y accede a él:

    root@kitploit:~
    git clone https://github.com/Gao-Zuin/cve-2022-46395-qemu.git
    cd cve-2022-46395-qemu
    

    Ejecuta el flujo completo de compilación/empaquetado/arranque:

    root@kitploit:~
    MAX_ATTEMPTS=2000 ./scripts/reproduce.sh
    

    Si tu kernel KASAN no está en el directorio hermano ../build predeterminado:

    root@kitploit:~
    KDIR=/path/to/linux-5.10-kasan \
    KERNEL_IMAGE=/path/to/linux-5.10-kasan/arch/x86/boot/bzImage \
    MAX_ATTEMPTS=2000 \
    ./scripts/reproduce.sh
    

    La ejecución local exitosa usó esta temporización:

    root@kitploit:~
    MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh
    

    Para un registro de intentos más detallado:

    root@kitploit:~
    MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
      ./scripts/reproduce.sh
    

    Pasos manuales

    El script de una sola ejecución equivale a:

    root@kitploit:~
    ./scripts/build_r36p0_no_mali.sh
    ./scripts/build_poc.sh
    MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/package_initramfs.sh
    ./scripts/run_qemu.sh
    

    Variables de entorno útiles:

    • KDIR: árbol de compilación del kernel usado para compilar mali_kbase.ko
    • KERNEL_IMAGE: bzImage pasado a QEMU
    • QEMU_LOG: ruta del registro de salida
    • QEMU_MEM: tamaño de memoria de QEMU, por defecto 1536M
    • QEMU_SMP: número de CPUs de QEMU, por defecto 3
    • MAX_ATTEMPTS: límite de reintentos del PoC, por defecto 2000
    • UNMAP_OFFSET_NS: desplazamiento de temporización de la carrera, por defecto -800000
    • VERBOSE_ATTEMPTS=1: imprime los detalles de cada intento
    • KASAN_UAF_MODE=1: carga el módulo con la opción de sonda KASAN UAF usada por scripts/reproduce_kasan_uaf.sh

    Evidencia esperada

    Una ejecución exitosa imprime líneas como:

    root@kitploit:~
    mali mali.0: Kernel DDK version r36p0-01eac0
    r36p0-01eac0 (UK version 11.34)
    /dev/mali0
    finished reset: 703956220 fault: 682115150 68 err 0 read 3
    qemu lab mode: CVE-2022-46395 soft-event/user-buffer race reproduced
    qemu lab mode: reproduction completed after 17 attempts
    [init] PoC status: 0
    

    El registro de evidencia de referencia es:

    root@kitploit:~
    logs/qemu-cve-2022-46395-r36p0-unmap-minus800us.log
    

    La condición clave de éxito es err=0, read=3 y fault < reset. Eso indica que se alcanzó la ventana de carrera contra r36p0-01eac0 en QEMU sin Mali.

    Notas

    • Esto es un disparador de laboratorio QEMU, no una cadena de explotación completa de dispositivo.
    • La etapa final original de Pixel depende de desplazamientos de texto del kernel ARM64 codificados y no se usa aquí intencionadamente.
    • Si QEMU sale sin reproducir la carrera, vuelve a ejecutarlo con un MAX_ATTEMPTS mayor o ajusta UNMAP_OFFSET_NS.
    Descargar herramienta