# Heap Functions Security Checks {{#include ../../../banners/hacktricks-training.md}} ## unlink Za više informacija pogledajte: {{#ref}} unlink.md {{#endref}} Ovo je sažetak izvršenih provera: - Proverite da li je naznačena veličina dela ista kao `prev_size` naznačena u sledećem delu - Poruka o grešci: `corrupted size vs. prev_size` - Takođe proverite da li je `P->fd->bk == P` i `P->bk->fw == P` - Poruka o grešci: `corrupted double-linked list` - Ako deo nije mali, proverite da li je `P->fd_nextsize->bk_nextsize == P` i `P->bk_nextsize->fd_nextsize == P` - Poruka o grešci: `corrupted double-linked list (not small)` ## \_int_malloc Za više informacija pogledajte: {{#ref}} malloc-and-sysmalloc.md {{#endref}} - **Provere tokom pretrage brzih binova:** - Ako je deo neusklađen: - Poruka o grešci: `malloc(): unaligned fastbin chunk detected 2` - Ako je napredni deo neusklađen: - Poruka o grešci: `malloc(): unaligned fastbin chunk detected` - Ako je vraćeni deo veličine koja nije ispravna zbog svog indeksa u brzom binu: - Poruka o grešci: `malloc(): memory corruption (fast)` - Ako je bilo koji deo korišćen za popunjavanje tcache-a neusklađen: - Poruka o grešci: `malloc(): unaligned fastbin chunk detected 3` - **Provere tokom pretrage malih binova:** - Ako `victim->bk->fd != victim`: - Poruka o grešci: `malloc(): smallbin double linked list corrupted` - **Provere tokom konsolidacije** izvršene za svaki deo brzog bin-a: - Ako je deo neusklađen: - Poruka o grešci: `malloc_consolidate(): unaligned fastbin chunk detected` - Ako deo ima drugačiju veličinu od one koju bi trebao imati zbog indeksa u kojem se nalazi: - Poruka o grešci: `malloc_consolidate(): invalid chunk size` - Ako prethodni deo nije u upotrebi i prethodni deo ima veličinu koja se razlikuje od one naznačene od strane prev_chunk: - Poruka o grešci: `corrupted size vs. prev_size in fastbins` - **Provere tokom pretrage nesortiranih binova**: - Ako je veličina dela čudna (previše mala ili previše velika): - Poruka o grešci: `malloc(): invalid size (unsorted)` - Ako je veličina sledećeg dela čudna (previše mala ili previše velika): - Poruka o grešci: `malloc(): invalid next size (unsorted)` - Ako se prethodna veličina naznačena od strane sledećeg dela razlikuje od veličine dela: - Poruka o grešci: `malloc(): mismatching next->prev_size (unsorted)` - Ako nije `victim->bck->fd == victim` ili nije `victim->fd == av (arena)`: - Poruka o grešci: `malloc(): unsorted double linked list corrupted` - Kako uvek proveravamo poslednji, njegov fd bi trebao uvek da pokazuje na strukturu arena. - Ako sledeći deo ne naznačuje da je prethodni u upotrebi: - Poruka o grešci: `malloc(): invalid next->prev_inuse (unsorted)` - Ako `fwd->bk_nextsize->fd_nextsize != fwd`: - Poruka o grešci: `malloc(): largebin double linked list corrupted (nextsize)` - Ako `fwd->bk->fd != fwd`: - Poruka o grešci: `malloc(): largebin double linked list corrupted (bk)` - **Provere tokom pretrage velikih binova (po indeksu):** - `bck->fd-> bk != bck`: - Poruka o grešci: `malloc(): corrupted unsorted chunks` - **Provere tokom pretrage velikih binova (sledeći veći):** - `bck->fd-> bk != bck`: - Poruka o grešci: `malloc(): corrupted unsorted chunks2` - **Provere tokom korišćenja Top dela:** - `chunksize(av->top) > av->system_mem`: - Poruka o grešci: `malloc(): corrupted top size` ## `tcache_get_n` - **Provere u `tcache_get_n`:** - Ako je deo neusklađen: - Poruka o grešci: `malloc(): unaligned tcache chunk detected` ## `tcache_thread_shutdown` - **Provere u `tcache_thread_shutdown`:** - Ako je deo neusklađen: - Poruka o grešci: `tcache_thread_shutdown(): unaligned tcache chunk detected` ## `__libc_realloc` - **Provere u `__libc_realloc`:** - Ako je stari pokazivač neusklađen ili je veličina bila neispravna: - Poruka o grešci: `realloc(): invalid pointer` ## `_int_free` Za više informacija pogledajte: {{#ref}} free.md {{#endref}} - **Provere na početku `_int_free`:** - Pokazivač je usklađen: - Poruka o grešci: `free(): invalid pointer` - Veličina veća od `MINSIZE` i veličina takođe usklađena: - Poruka o grešci: `free(): invalid size` - **Provere u `_int_free` tcache:** - Ako ima više unosa nego `mp_.tcache_count`: - Poruka o grešci: `free(): too many chunks detected in tcache` - Ako unos nije usklađen: - Poruka o grešci: `free(): unaligned chunk detected in tcache 2` - Ako je oslobođeni deo već bio oslobođen i prisutan je kao deo u tcache: - Poruka o grešci: `free(): double free detected in tcache 2` - **Provere u `_int_free` brzom binu:** - Ako je veličina dela neispravna (prevelika ili premala) pokreni: - Poruka o grešci: `free(): invalid next size (fast)` - Ako je dodatni deo već bio vrh brzog bin-a: - Poruka o grešci: `double free or corruption (fasttop)` - Ako veličina dela na vrhu ima drugačiju veličinu od dela koji dodajemo: - Poruka o grešci: `invalid fastbin entry (free)` ## **`_int_free_merge_chunk`** - **Provere u `_int_free_merge_chunk`:** - Ako je deo vrh deo: - Poruka o grešci: `double free or corruption (top)` - Ako je sledeći deo van granica arene: - Poruka o grešci: `double free or corruption (out)` - Ako deo nije označen kao korišćen (u prev_inuse od sledećeg dela): - Poruka o grešci: `double free or corruption (!prev)` - Ako sledeći deo ima previše malu ili preveliku veličinu: - Poruka o grešci: `free(): invalid next size (normal)` - Ako prethodni deo nije u upotrebi, pokušaće da konsoliduje. Ali, ako se `prev_size` razlikuje od veličine naznačene u prethodnom delu: - Poruka o grešci: `corrupted size vs. prev_size while consolidating` ## **`_int_free_create_chunk`** - **Provere u `_int_free_create_chunk`:** - Dodavanje dela u nesortirani bin, proverite da li `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`: - Poruka o grešci: `free(): corrupted unsorted chunks` ## `do_check_malloc_state` - **Provere u `do_check_malloc_state`:** - Ako je deo neusklađen brzog bin-a: - Poruka o grešci: `do_check_malloc_state(): unaligned fastbin chunk detected` ## `malloc_consolidate` - **Provere u `malloc_consolidate`:** - Ako je deo neusklađen brzog bin-a: - Poruka o grešci: `malloc_consolidate(): unaligned fastbin chunk detected` - Ako je veličina dela brzog bin-a neispravna: - Poruka o grešci: `malloc_consolidate(): invalid chunk size` ## `_int_realloc` - **Provere u `_int_realloc`:** - Veličina je prevelika ili premala: - Poruka o grešci: `realloc(): invalid old size` - Veličina sledećeg dela je prevelika ili premala: - Poruka o grešci: `realloc(): invalid next size` {{#include ../../../banners/hacktricks-training.md}}