164 lines
6.6 KiB
Markdown

# 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 nepravilno poravnat:
- Poruka o grešci: `malloc(): unaligned fastbin chunk detected 2`
- Ako je napredni deo nepravilno poravnat:
- Poruka o grešci: `malloc(): unaligned fastbin chunk detected`
- Ako vraćeni deo ima veličinu 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 nepravilno poravnat:
- 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:
- Ako je deo nepravilno poravnat:
- 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 različitu 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čava 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 nepravilno poravnat:
- Poruka o grešci: `malloc(): unaligned tcache chunk detected`
## `tcache_thread_shutdown`
- **Provere u `tcache_thread_shutdown`:**
- Ako je deo nepravilno poravnat:
- Poruka o grešci: `tcache_thread_shutdown(): unaligned tcache chunk detected`
## `__libc_realloc`
- **Provere u `__libc_realloc`:**
- Ako je stari pokazivač nepravilno poravnat 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 poravnat:
- Poruka o grešci: `free(): invalid pointer`
- Veličina veća od `MINSIZE` i veličina takođe poravnata:
- 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 poravnat:
- Poruka o grešci: `free(): unaligned chunk detected in tcache 2`
- Ako je oslobođeni deo već bio oslobođen i prisutan 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:
- 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 premalu 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 nepravilno poravnat brzi bin deo:
- Poruka o grešci: `do_check_malloc_state(): unaligned fastbin chunk detected`
## `malloc_consolidate`
- **Provere u `malloc_consolidate`:**
- Ako je nepravilno poravnat brzi bin deo:
- Poruka o grešci: `malloc_consolidate(): unaligned fastbin chunk detected`
- Ako je veličina brzog bin dela 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}}