Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-1065 — Exploração de prova de conceito para CVE-2024-1065, demonstrando exploração de cache de página por meio de um use-after-free no driver de kernel GPU ARM Mali para alcançar execução arbitrária de código como root sem modificação de disco. | Kitploit
Ferramentas/GitHubGitHub/kuzeyardabulut/cve-2024-1065
Escalada de PrivilégiosForensia de MemóriaAnálise de VulnerabilidadesExploraçãoShellcodeDesenvolvimento de PayloadsExploração de Binários
GitHubkuzeyardabulut/cve-2024-1065

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

CVE-2024-1065

Exploração de prova de conceito para CVE-2024-1065, demonstrando exploração de cache de página por meio de um use-after-free no driver de kernel GPU ARM Mali para alcançar execução arbitrária de código como root sem modificação de disco.

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

CVE-2024-1065 — Prova de Conceito de Exploração de Cache de Página

Exploit de prova de conceito para CVE-2024-1065, um use-after-free de página física no driver do kernel da GPU ARM Mali. O exploit demonstra exploração de cache de página: colocando em corrida uma página MIGRATE_MOVABLE liberada na imagem de código em memória de um binário SUID e, em seguida, sobrescrevendo-a para alcançar execução arbitrária de código como root sem modificar nenhum arquivo em disco.

Apenas para fins de pesquisa. Esta PoC tem como alvo uma vulnerabilidade corrigida em um sistema de teste x86 controlado. O caminho de código vulnerável não pode ser acionado a partir do espaço do usuário em dispositivos Pixel de produção.


Como Funciona

  1. Acionar UAF — Uma página anônima é importada para o driver da GPU Mali via KBASE_IOCTL_MEM_IMPORT e mapeada duas vezes no espaço do usuário. Liberar ambos os mapeamentos retorna a página física para a lista livre de pares MIGRATE_MOVABLE enquanto cpu_mapping2 ainda possui um alias para ela.

  2. Spray no cache de página — O exploit abre /usr/bin/passwd 100 vezes e repetidamente desaloja a página em PAGE_OFFSET com posix_fadvise(POSIX_FADV_DONTNEED), em seguida aciona uma falta de cache com pread. Cada falta força o kernel a alocar uma nova página MIGRATE_MOVABLE, percorrendo a lista livre até que a página UAF seja escolhida.

  3. Confirmar sobreposição — Uma leitura de byte de sonda através de cpu_mapping2 em MAIN_OFFSET confirma que a página UAF agora suporta a entrada de cache de página do binário. Valores 0x00 e 0x61 indicam falha; qualquer outra coisa é código binário real.

  4. Injetar shellcode — memcpy através de cpu_mapping2 sobrescreve main() com shellcode que chama setuid(0), setgid(0) e execve("/bin/sh").

  5. Executar — execve("/usr/bin/passwd") é chamado. O carregador ELF mapeia as páginas de cache de página do binário como executáveis. A página corrompida já está presente — nenhuma leitura de disco ocorre — então o shellcode executa como root.


Requisitos


Compilação

root@kitploit:~
gcc -O2 -o exploit exploit.c

Uso

root@kitploit:~
./exploit

Saída esperada:

root@kitploit:~
[*] Abriu /usr/bin/passwd x100
[*] MEM_IMPORT: flags=0x...  gpu_va=0x...  va_pages=0x1
[*] gpu_mapping  (VA 1): 0x...
[*] cpu_mapping2 (VA 2): 0x...
[*] UAF acionado — mapeamento obsoleto ativo em 0x...
[*] Fazendo spray no cache de página (100 tentativas)...
[+] Sobreposição confirmada na tentativa N (byte=0xf3) — cpu_mapping2 possui alias para o cache de página!
[*] Shellcode escrito. Acionando execve...
# id
uid=0(root) gid=0(root) groups=0(root)

Redefinição de alvo

Todos os valores específicos do alvo são definidos no topo de exploit.c:

root@kitploit:~
#define TARGET_BINARY  "/usr/bin/passwd"
#define PAGE_OFFSET    0x4000   /* offset do arquivo da página contendo main() */
#define MAIN_OFFSET    0xbc0    /* offset intra-página de main()               */

Para redirecionar para um binário diferente, encontre o offset da função desmontando _start no endereço do ponto de entrada (readelf -h), então calcule:

root@kitploit:~
PAGE_OFFSET = sym_va & ~0xfff
MAIN_OFFSET = sym_va &  0xfff

Verifique antes de executar:

root@kitploit:~
dd if=<TARGET_BINARY> bs=1 skip=$((PAGE_OFFSET + MAIN_OFFSET)) count=8 2>/dev/null | xxd

Solução de problemas


Referências

  • CVE-2024-1065 — Relatório de bug do Project Zero
  • Dirty Pagetable — Black Hat USA 2023
  • A Vulnerabilidade Dirty Pipe (CVE-2022-0847)
Baixar ferramenta
RequisitoValor
Arquiteturax86-64
Kernel5.15 (testado em 5.15.0+)
Config do kernelCONFIG_MALI_NO_MALI=y, CONFIG_MALI_CSF_SUPPORT=y, r48
Dispositivo/dev/mali0 acessível a partir do espaço do usuário
Binário alvo/usr/bin/passwd (SUID root)
SintomaCausaSolução
Spray falha após 100 tentativasPágina UAF consumida antes da janela de corridaPré-desaloje a página alvo antes de acionar o UAF; aumente NUM_FDS
kernel BUG at mm/page_poison.cVerificação de sonda passou no byte de veneno de página 0xaaAdicione probe != 0xaa à verificação de confirmação
SYSCHK falha em MEM_IMPORTDriver Mali não carregado ou versão erradaVerifique CONFIG_MALI_NO_MALI e o handshake da versão do driver