Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-28664-PoC — PoC skeleton per CVE-2021-28664, un caso di use-after-free nel driver GPU Mali kbase, che dimostra una primitiva di lettura/scrittura arbitraria della memoria fisica del kernel su Android ARM64. | Kitploit
Strumenti/GitHubGitHub/woaphone/cve-2021-28664-poc
Sicurezza AndroidMemory ForensicsAnalisi delle VulnerabilitàExploitSicurezza MobileSicurezza Hardware e IoTPaper e RicercaApprendimento e FormazioneBinary Exploitation
GitHubwoaphone/cve-2021-28664-poc

CVE-2021-28664-PoC

PoC skeleton per CVE-2021-28664, un caso di use-after-free nel driver GPU Mali kbase, che dimostra una primitiva di lettura/scrittura arbitraria della memoria fisica del kernel su Android ARM64.

12620 giorni 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
Vedi Repository

CVE-2021-28664-PoC

Scheletro di PoC per la primitiva di lettura/scrittura arbitraria della memoria fisica del kernel tramite UAF nel driver GPU Mali kbase (CVE-2021-28664). Rivolto a piattaforme ARM64 Android generiche, indipendente da qualsiasi produttore o modello specifico.

L'ambito della ricerca si ferma esclusivamente alla "primitiva di lettura/scrittura arbitraria della memoria fisica del kernel": come trasformare un use-after-free in un driver GPU in una capacità di lettura/scrittura della memoria del kernel stabile, controllabile e in grado di fallire in modo sicuro.

Questo repository non fornisce alcun attacco. Non contiene exploit completi, non contiene codice eseguibile direttamente, non contiene offset/seriali/firmware di alcun dispositivo; è vietato utilizzare qualsiasi contenuto per attività offensive (vedi sotto).


Disclaimer / Esclusione di responsabilità (lettura obbligatoria)

  1. Questo repository non fornisce attacchi. Questo repository è una retrospettiva tecnica sui principi della vulnerabilità e sulle primitive di corruzione della memoria, contiene solo documentazione metodologica e template didattici con tutti i valori specifici del dispositivo lasciati vuoti. Non può essere utilizzato direttamente per attaccare alcun dispositivo.
  2. Attacchi vietati. È severamente vietato utilizzare il contenuto di questo repository su dispositivi non autorizzati, dispositivi altrui o per qualsiasi scopo illegale; tutte le conseguenze derivanti sono a carico esclusivo dell'utente e non riguardano l'autore.
  3. Gli esperimenti di ricerca sono stati condotti esclusivamente su dispositivi di proprietà dell'autore, con lo scopo di riprodurre la vulnerabilità e condurre ricerca sulla sicurezza.
  4. CVE-2021-28664 è stato corretto a monte (Arm/Mali) nel 2021; i sistemi interessati sono quelli con driver/firmware obsoleti non aggiornati da lungo tempo. Il valore di questa ricerca risiede nella comprensione dei principi di sfruttamento delle vulnerabilità storiche e negli approcci di rilevamento dal punto di vista difensivo.
  5. Il contenuto di questo repository è fornito "AS IS", senza alcuna garanzia esplicita o implicita.
  6. Se rappresenti un produttore/team di sicurezza e necessiti di maggiori dettagli, contatta l'autore tramite GitHub.

Ambito di applicabilità

Tecnicamente applicabile (prerequisiti affinché ogni fase della catena di sfruttamento sia valida)

FasePrerequisito
Vulnerabilità in séLa versione del driver Mali kbase ricade nell'intervallo interessato da CVE-2021-28664 (serie r precedente alla correzione a monte); indipendente dalla versione del kernel, dipende solo dal driver
Risorse GPU/dev/mali accessibile al processo corrispondente; MEM_ALLOC supporta buffer di grandi dimensioni SAME_VA; il comportamento di MEM_ALIAS è conforme alla descrizione della vulnerabilità
Riutilizzo della pipeLinux ≥ 4.5 (introduzione di pipe_buf_operations), verificato su 4.9 ~ 4.14; F_SETPIPE_SZ consente di ridurre la pipe a una singola pagina
Leak KASLRKernel con CONFIG_RANDOMIZE_BASE abilitato (arm64 ≥ 4.6); anon_pipe_buf_ops presente nella tabella dei simboli pubblici
Modello di indirizzamento fisicoarm64 + layout vmemmap; sizeof(struct page) e formato delle page table devono essere misurati empiricamente, non presunti

Tecnicamente non applicabile

  • Driver Mali con CVE-2021-28664 già corretto (dopo la correzione della versione r);
  • Piattaforme con GPU non Mali (questa catena dipende profondamente dal comportamento alias/MMU-dump di kbase);
  • Kernel recenti con differenze significative nella struttura pipe_buffer/nei controlli di copy_page_to_iter (a partire dalla 5.x è necessario ricontrollare in base al codice sorgente corrispondente; la struttura della catena è consultabile ma i dettagli non sono universali);
  • Ambienti senza permessi di accesso a /dev/mali (limitazioni SELinux/policy del produttore).

Dichiarazione sui limiti

  • Questo repository copre solo le primitive di lettura/scrittura; l'individuazione di obiettivi specifici del kernel dopo aver ottenuto la primitiva, l'ulteriore sfruttamento o l'escalation di privilegi non rientrano nell'ambito di questo repository.
  • Tutte le costanti relative al dispositivo sono lasciate vuote nei template con TODO(DEVICE); l'adattamento è un lavoro di reverse engineering a carico dell'utente, il repository non lo fornisce.

Contesto della vulnerabilità

CVE-2021-28664: il percorso MEM_ALIAS del driver Mali kbase manca del controllo sui permessi GPU_WR, consentendo a un attaccante di fare alias di pagine di memoria GPU già liberate nel proprio spazio di indirizzamento GPU, creando una "visibilità/scrittura persistente lato GPU su pagine fisiche già liberate" — un use-after-free che attraversa il confine GPU/kernel.

Il valore dello sfruttamento non risiede nella memoria GPU stessa, ma nel fatto che:

  1. Le pagine fisiche liberate vengono riallocate dal slab/buddy del kernel a oggetti del kernel (in questa ricerca, pipe_buffer);
  2. La vista alias della GPU può ancora vedere queste pagine → è possibile leggere e scrivere i campi degli oggetti attualmente in uso dal kernel;
  3. Sfruttando il job WRITE_VALUE della GPU per modificare in modo mirato le pagine visibili tramite alias.

Fino a dove arriva questa ricerca

buffer GPU victim + dump delle page table MMU → costruzione della mappa degli indirizzi fisici
  → trigger del rilascio del buffer per creare pressione → spray di pipe (F_SETPIPE_SZ ridotto)
  → l'array pipe_buffer finisce nell'area liberata (riutilizzo UAF cross-cache)
  → scansione del puntatore ops tramite vista alias → leak di anon_pipe_buf_ops → KASLR slide
  → riscrittura GPU dei campi page / offset / len di pipe_buffer
  → sfruttando i percorsi legittimi di read/write della pipe
  ⇒ lettura di pagina fisica arbitraria (falsificazione del puntatore page)
  ⇒ scrittura di pagina fisica arbitraria (percorso di scrittura pipe merge)
  ⇒ utilizzo di una pagina a contenuto noto come oracle di auto-verifica, per garantire che lettura/scrittura non cada in aree vuote/non mappate

Fino a qui.

Punti tecnici chiave (ogni punto ha una sezione dedicata in docs/)

  • Cancelli di sicurezza multilivello: prima di qualsiasi lettura fisica è necessario superare molteplici controlli di overlap / autoconsistenza / contiguità / auto-verifica del contenuto; al fallimento di uno qualsiasi, ripristinare immediatamente lo stato e uscire — la disciplina ingegneristica più importante dell'intera ricerca.
  • Le insidie del modello di indirizzamento fisico: contaminazione dei flag software nelle PTE della GPU, troncamento a 32 bit degli indirizzi fisici, randomizzazione KASLR anche della base fisica dell'immagine del kernel, differenze nelle implementazioni page_to_virt dei produttori, aree riservate no-map che non esistono affatto nella mappatura lineare (leggerle causa panic).
  • Gestione dell'ambiguità m: l'ambiguità dei bit alti dell'indirizzo fisico non va mai risolta per ipotesi; si utilizza l'"oracle della pagina a contenuto noto" per l'auto-verifica del contenuto.
  • Durata della primitiva e fallimento sicuro: le sonde di lettura hanno un budget di tentativi; superato il limite è necessario abbandonare il ciclo corrente; ogni percorso di uscita di ogni esperimento deve ripristinare i campi degli oggetti manomessi.

Struttura del repository

Scarica lo strumento