hackweb
appunti di hacking e tecnologia
IT EN
menù principale
menù utente
non sei loggato

Use-after-free: usare memoria già liberata

29 settembre 2025 · 1 min di lettura · #binary-exploitation #heap #uaf

Dopo free(p), p resta puntato (dangling). Se l'allocatore riassegna quel chunk a un altro oggetto, usare p legge/scrive l'oggetto nuovo.

Sfruttarlo

Lo schema classico: liberi un oggetto con una funzione virtuale (vtable/puntatore a funzione), rialloci un buffer della stessa dimensione riempito con dati tuoi, poi l'oggetto vecchio viene "usato" e chiama il puntatore che ora controlli.

free(obj);
spray(size_of_obj, controlled_bytes);  // riempi il chunk liberato
obj->method();  // salta all'indirizzo che hai scritto

Difesa

Azzera i puntatori dopo la free. Usa smart pointer/ownership (Rust li elimina per costruzione). Allocatori con quarantena e delayed reuse, ASAN in test, e mitigazioni come pointer authentication (ARM) o CFI riducono l'impatto.


« torna alla home

ultimi post
 
il tuo indirizzo IP:
216.73.216.108
visitatore #0
MOTD:
Ogni astrazione perde da qualche parte.
Qui guardiamo dove.
argomenti