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-2026-64788 — Prova de conceito para CVE-2026-64788, um use-after-free na extensão de kernel IOGPUFamily no iOS 26.6, demonstrando exploração via criação de textura Metal e heap spraying. | Kitploit
Ferramentas/GitHubGitHub/bytev0rtex/cve-2026-64788
Segurança iOSAnálise de VulnerabilidadesExploraçãoEngenharia ReversaSegurança MóvelExploração de Binários
GitHubbytev0rtex/cve-2026-64788

CVE-2026-64788

Prova de conceito para CVE-2026-64788, um use-after-free na extensão de kernel IOGPUFamily no iOS 26.6, demonstrando exploração via criação de textura Metal e heap spraying.

Ver Repositório
1há 9h 40mAinda 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

CVE-2026-64788 — Use-After-Free no IOGPUFamily

Componente: Extensão de kernel IOGPUFamily (com.apple.iokit.IOGPUFamily)
Afetado: iOS / iPadOS 26.6 (23G71) e anteriores
Corrigido em: iOS / iPadOS 26.6.1 (23G83)
Tipo: Use-After-Free em IOGPUDevice::create_resource_iosurface
Impacto: Corrupção de memória do kernel; dereferência de UAF confirmada no A14 (iPhone 12)


Créditos

Descoberto por: f00l (@PPPF00L), 3ndy1 (@_3ndy1), Minghao Lin (@Y1nkoc), 云散花折, Arjanit Isufi
(conforme Apple Security Advisory — iOS 26.6.1)


Causa Raiz

IOGPUDevice::create_resource_iosurface aloca um objeto IOGPUSysMemory (~0x100 bytes, zona ) e o registra na tabela de recursos IOSurface do dispositivo. Antes de retornar, uma verificação de estouro de dimensão é acionada via . O caminho de estouro ramifica para um retorno de erro , deixando uma entrada ativa na tabela de recursos que aponta para memória liberada.

kalloc.256
ADDS width+height → b.hs
sem liberar o objeto
root@kitploit:~
create_resource_iosurface:
  kalloc(0x100) → obj          ; IOGPUSysMemory alocado
  table[new_id] = obj           ; registrado com uma referência
  ADDS w_result, w_width, w_height
  b.hs error_path               ; ← estouro: salta para cá
error_path:
  ; objeto NÃO liberado, entrada da tabela NÃO limpa
  return kIOReturnInvalid

A entrada obsoleta da tabela persiste até que o mesmo ID de recurso seja reutilizado ou o dispositivo seja fechado.


Dereferência de UAF

IOGPUDevice::set_resource_purgeable(id) procura o ID obsoleto via get_resource_by_id(), encontra a entrada pendente e a acessa de forma não virtual:

OffsetOperaçãoDescrição
+0x010cldaddl w9(-4), w8, [obj+0x24]Decremento atômico de [obj+0x24]; valor antigo → w8
+0x0128cbz w8, skip; ldr x1, [obj+0x28]Se o antigo [+0x24] != 0: carrega [obj+0x28] como argumento para IOGPUMemory::setAllocation
+0x0134ldr x0, [obj+0x10]Carrega [obj+0x10] como argumento do IOCommandGate; cbz → skip se 0

Comportamento do PoC

O PoC aciona o UAF usando newTextureWithDescriptor:iosurface:plane: do Metal com dimensões de estouro manipuladas. Antes da dereferência de UAF:

  • 300× MTLBuffer(0x100, StorageModeShared) pulverizados para preencher o slot kalloc.256 liberado
  • Os dados da pulverização definem [+0x10]=0, [+0x24]=0, [+0x28]=0 → Call2 e Call3 são ignorados com segurança
  • A dereferência de UAF prossegue em memória de heap controlada pelo atacante

Detecção do gatilho: set_resource_purgeable em um recurso inexistente retorna 0xe00002c2. Após o UAF + pulverização recuperar o slot, a mesma chamada retorna 0xe0002be (recurso encontrado, Call1 disparada) — confirmando que a entrada obsoleta está sendo processada com nossos dados de pulverização.


Notas de Exploração no iOS 26

O sequestro de zona no iOS 26 coloca objetos IOGPUSysMemory liberados de volta em uma lista livre de zona estável por tipo. Tanto [obj+0x10] (IOMemoryDescriptor) quanto [obj+0x18] (IOGPUDevice) mantêm contagens de retenção externas e permanecem ativos após o objeto ser liberado. Como resultado, completeMemory() sempre executa em dados ivar válidos — a dereferência de UAF é confirmada, mas uma primitiva de leitura/escrita no kernel apenas por este caminho é bloqueada no iOS 26 sem uma primitiva secundária para quebrar o sequestro de zona.


Requisitos

  • iOS 26.6 (23G71) ou anterior
  • GPU da série A da Apple (testado: A14 Bionic, iPhone 12)
  • Nenhuma entitlement necessária — acessível a partir de qualquer app sandboxed com suporte a Metal

Build

root@kitploit:~
clang -arch arm64 -framework Metal -framework IOSurface \
      -framework IOKit -framework Foundation \
      -o poc poc/poc_iogpu_uaf.m

Ou abra no Xcode, defina uma equipe de assinatura válida e execute no dispositivo.


Linha do Tempo

DataEvento
2026-08-17iOS 26.6.1 lançado com a correção
2026-08-17Créditos da Apple publicados no advisory de segurança

Referências

  • Apple Security Advisory — iOS 26.6.1
  • Post no Full Disclosure
Baixar ferramenta