Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-64788 — Proof-of-concept per CVE-2026-64788, una use-after-free nell'estensione del kernel IOGPUFamily su iOS 26.6, che dimostra lo sfruttamento tramite la creazione di texture Metal e heap spraying. | Kitploit
Strumenti/GitHubGitHub/bytev0rtex/cve-2026-64788
Sicurezza iOSAnalisi delle VulnerabilitàExploitReverse EngineeringSicurezza MobileBinary Exploitation
GitHubbytev0rtex/cve-2026-64788

CVE-2026-64788

Proof-of-concept per CVE-2026-64788, una use-after-free nell'estensione del kernel IOGPUFamily su iOS 26.6, che dimostra lo sfruttamento tramite la creazione di texture Metal e heap spraying.

Vedi Repository
19h 40m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Componente: estensione kernel IOGPUFamily (com.apple.iokit.IOGPUFamily)
Interessati: iOS / iPadOS 26.6 (23G71) e versioni precedenti
Corretto in: iOS / iPadOS 26.6.1 (23G83)
Tipo: Use-After-Free in IOGPUDevice::create_resource_iosurface
Impatto: corruzione della memoria del kernel; dereferenziazione UAF confermata su A14 (iPhone 12)


Crediti

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


Causa principale

IOGPUDevice::create_resource_iosurface alloca un oggetto IOGPUSysMemory (~0x100 byte, zona ) e lo registra nella tabella delle risorse IOSurface del dispositivo. Prima di restituire il controllo, un controllo di overflow delle dimensioni viene attivato tramite . Il percorso di overflow dirama verso un ritorno di errore , lasciando una voce attiva nella tabella delle risorse che punta a memoria liberata.

kalloc.256
ADDS width+height → b.hs
senza rilasciare l'oggetto
root@kitploit:~
create_resource_iosurface:
  kalloc(0x100) → obj          ; IOGPUSysMemory allocato
  table[new_id] = obj           ; registrato con un riferimento
  ADDS w_result, w_width, w_height
  b.hs error_path               ; ← overflow: salta qui
error_path:
  ; oggetto NON rilasciato, voce della tabella NON cancellata
  return kIOReturnInvalid

La voce stantia nella tabella persiste finché lo stesso ID di risorsa non viene riutilizzato o il dispositivo non viene chiuso.


Dereferenziazione UAF

IOGPUDevice::set_resource_purgeable(id) cerca l'ID stantio tramite get_resource_by_id(), trova la voce pendente e vi accede in modo non virtuale:

OffsetOperazioneDescrizione
+0x010cldaddl w9(-4), w8, [obj+0x24]Decremento atomico di [obj+0x24]; vecchio valore → w8
+0x0128cbz w8, skip; ldr x1, [obj+0x28]Se il vecchio [+0x24] != 0: carica [obj+0x28] come argomento per IOGPUMemory::setAllocation
+0x0134ldr x0, [obj+0x10]Carica [obj+0x10] come argomento IOCommandGate; cbz → skip se 0

Comportamento del PoC

Il PoC attiva la UAF utilizzando newTextureWithDescriptor:iosurface:plane: di Metal con dimensioni di overflow appositamente costruite. Prima della dereferenziazione UAF:

  • 300× MTLBuffer(0x100, StorageModeShared) spruzzati per riempire lo slot kalloc.256 liberato
  • I dati dello spray impostano [+0x10]=0, [+0x24]=0, [+0x28]=0 → Call2 e Call3 vengono saltate in sicurezza
  • La dereferenziazione UAF procede su memoria heap controllata dall'attaccante

Rilevamento del trigger: set_resource_purgeable su una risorsa inesistente restituisce 0xe00002c2. Dopo che la UAF + lo spray reclamano lo slot, la stessa chiamata restituisce 0xe0002be (risorsa trovata, Call1 attivata) — confermando che la voce stantia viene elaborata con i nostri dati spray.


Note sullo sfruttamento su iOS 26

La segregazione delle zone in iOS 26 colloca gli oggetti IOGPUSysMemory liberati nuovamente in una lista libera di zona type-stable. Sia [obj+0x10] (IOMemoryDescriptor) che [obj+0x18] (IOGPUDevice) mantengono conteggi di retain esterni e rimangono attivi dopo che l'oggetto è stato liberato. Di conseguenza, completeMemory() viene sempre eseguito su dati ivar validi — la dereferenziazione UAF è confermata ma una primitiva di lettura/scrittura del kernel tramite questo solo percorso è bloccata su iOS 26 senza una primitiva secondaria per rompere la segregazione delle zone.


Requisiti

  • iOS 26.6 (23G71) o versioni precedenti
  • GPU Apple A-series (testata: A14 Bionic, iPhone 12)
  • Nessuna entitlement richiesta — raggiungibile da qualsiasi app sandboxed con supporto Metal

Build

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

Oppure apri in Xcode, imposta un team di firma valido ed esegui sul dispositivo.


Cronologia

DataEvento
2026-08-17iOS 26.6.1 rilasciato con la correzione
2026-08-17Crediti Apple pubblicati nell'advisory di sicurezza

Riferimenti

  • Apple Security Advisory — iOS 26.6.1
  • Post su Full Disclosure
Scarica lo strumento