unlink
Codice
Spiegazione Grafica
Controlla questa ottima spiegazione grafica del processo di unlink:
Controlli di Sicurezza
Controlla se la dimensione indicata del chunk è la stessa di
prev_size
indicata nel chunk successivoControlla anche che
P->fd->bk == P
eP->bk->fw == P
Se il chunk non è piccolo, controlla che
P->fd_nextsize->bk_nextsize == P
eP->bk_nextsize->fd_nextsize == P
Leak
Un chunk unlinkato non pulisce gli indirizzi allocati, quindi avendo accesso a leggerlo, è possibile fare leak di alcuni indirizzi interessanti:
Leak di Libc:
Se P è situato all'inizio della lista doppiamente concatenata,
bk
punterà amalloc_state
in libcSe P è situato alla fine della lista doppiamente concatenata,
fd
punterà amalloc_state
in libcQuando la lista doppiamente concatenata contiene solo un chunk libero, P è nella lista doppiamente concatenata, e sia
fd
chebk
possono fare leak dell'indirizzo all'interno dimalloc_state
.
Leak di Heap:
Se P è situato all'inizio della lista doppiamente concatenata,
fd
punterà a un chunk disponibile nell'heapSe P è situato alla fine della lista doppiamente concatenata,
bk
punterà a un chunk disponibile nell'heapSe P è nella lista doppiamente concatenata, sia
fd
chebk
punteranno a un chunk disponibile nell'heap
Last updated