Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2022-46395-qemu — # Laboratório baseado em QEMU para reproduzir a condição de corrida CVE-2022-46395 no driver de GPU Arm Mali r36p0. Inclui PoC, scripts de build e empacotamento de initramfs para pesquisa local de vulnerabilidades e testes de regressão. | Kitploit
Ferramentas/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Análise de VulnerabilidadesExploraçãoFuzzingAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

# Laboratório baseado em QEMU para reproduzir a condição de corrida CVE-2022-46395 no driver de GPU Arm Mali r36p0. Inclui PoC, scripts de build e empacotamento de initramfs para pesquisa local de vulnerabilidades e testes de regressão.

Ver Repositório
11há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Laboratório QEMU r36p0 CVE-2022-46395

Este repositório contém um laboratório QEMU/no-Mali para reproduzir a condição de gatilho portátil da CVE-2022-46395 contra a linhagem do driver Arm Mali r36p0.

O laboratório destina-se a pesquisa local de vulnerabilidades e testes de regressão. Ele não inclui o payload de escalonamento de privilégios específico do Pixel do exploit original. No modo LAB_QEMU, o PoC é interrompido após demonstrar que a janela de corrida (race) soft-event/user-buffer foi alcançada.

Estrutura do Repositório

  • poc/: PoC da CVE-2022-46395 adaptado para QEMU. As chamadas de log e de propriedades do Android são substituídas, e o patch de texto do kernel do Pixel é desativado sob LAB_QEMU.
  • src/google-gpu-raviole-android13/: código-fonte do módulo GPU do Google Pixel de android.googlesource.com/kernel/google-modules/gpu, branch android-gs-raviole-5.10-android13. O mali_kbase/Kbuild incluído identifica o driver como r36p0-01eac0.
  • scripts/: scripts auxiliares para build, empacotamento do initramfs, boot do QEMU e reprodução em uma única execução.
  • docs/: notas de análise local e relatórios de reprodução.
  • logs/: logs de evidência selecionados de execuções locais bem-sucedidas.

Binários gerados, arquivos initramfs, arquivos-objeto e a maioria dos logs de execução são ignorados pelo Git. Reconstrua-os localmente com os scripts abaixo.

Requisitos do Host

Os scripts foram usados em uma VM Linux com:

  • bash, make, gcc, file, cpio, gzip, modinfo
  • busybox em /bin/busybox
  • qemu-system-x86_64
  • uma árvore de kernel Linux 5.10 x86_64 KASAN preparada que possa compilar módulos externos

Por padrão, os scripts esperam a árvore do kernel e a imagem de boot em:

../build/linux-5.10-kasan
../build/linux-5.10-kasan/arch/x86/boot/bzImage

Você pode substituir esses caminhos com KDIR e KERNEL_IMAGE.

Reprodução

Clone o repositório e entre nele:

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

Execute o fluxo completo de build/empacotamento/boot:

MAX_ATTEMPTS=2000 ./scripts/reproduce.sh

Se o seu kernel KASAN não estiver no diretório irmão padrão ../build:

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

A execução local bem-sucedida utilizou este ajuste de temporização:

MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh

Para logs de tentativas mais detalhados:

MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
  ./scripts/reproduce.sh

Passos Manuais

O script de execução única é equivalente a:

./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

Variáveis de ambiente úteis:

  • KDIR: árvore de build do kernel usada para compilar mali_kbase.ko
  • KERNEL_IMAGE: bzImage passado para o QEMU
  • QEMU_LOG: caminho do log de saída
  • QEMU_MEM: tamanho da memória do QEMU, padrão 1536M
  • QEMU_SMP: número de CPUs do QEMU, padrão 3
  • MAX_ATTEMPTS: limite de tentativas do PoC, padrão 2000
  • UNMAP_OFFSET_NS: deslocamento de temporização da corrida, padrão -800000
  • VERBOSE_ATTEMPTS=1: exibir detalhes por tentativa
  • KASAN_UAF_MODE=1: carregar o módulo com a opção de probe KASAN UAF usada por scripts/reproduce_kasan_uaf.sh

Evidência Esperada

Uma execução bem-sucedida imprime linhas como:

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

O log de evidência de referência é:

logs/qemu-cve-2022-46395-r36p0-unmap-minus800us.log

A condição principal de sucesso é err=0, read=3 e fault < reset. Isso indica que a janela de corrida foi alcançada contra r36p0-01eac0 no QEMU sem Mali.

Notas

  • Este é um gatilho de laboratório QEMU, não uma cadeia completa de exploit de dispositivo.
  • O estágio final original do Pixel depende de offsets de texto do kernel ARM64 codificados e não é usado intencionalmente aqui.
  • Se o QEMU sair sem reproduzir a corrida, execute novamente com um MAX_ATTEMPTS maior ou ajuste UNMAP_OFFSET_NS.
Baixar ferramenta