Heap Functions Security Checks

Naučite i vežbajte hakovanje AWS-a:HackTricks Training AWS Red Team Expert (ARTE) Naučite i vežbajte hakovanje GCP-a: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Za više informacija pogledajte:

unlink

Ovo je sažetak izvršenih provera:

  • Proverite da li je naznačena veličina bloka ista kao prev_size naznačena u sledećem bloku

  • Poruka o grešci: corrupted size vs. prev_size

  • Proverite takođe da li P->fd->bk == P i P->bk->fw == P

  • Poruka o grešci: corrupted double-linked list

  • Ako blok nije mali, proverite da li 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:

malloc & sysmalloc
  • Provere tokom pretrage brzih binova:

  • Ako je blok neusaglašen:

  • Poruka o grešci: malloc(): unaligned fastbin chunk detected 2

  • Ako je sledeći blok neusaglašen:

  • Poruka o grešci: malloc(): unaligned fastbin chunk detected

  • Ako vraćeni blok ima veličinu koja nije ispravna zbog svog indeksa u brzom binu:

  • Poruka o grešci: malloc(): memory corruption (fast)

  • Ako je bilo koji blok korišćen za popunjavanje tcache-a neusaglaš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 brzi bin blok:

  • Ako je blok neusaglašen pokreni:

  • Poruka o grešci: malloc_consolidate(): unaligned fastbin chunk detected

  • Ako blok ima drugačiju veličinu od one koju bi trebalo zbog indeksa u kojem se nalazi:

  • Poruka o grešci: malloc_consolidate(): invalid chunk size

  • Ako prethodni blok nije u upotrebi i prethodni blok 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 bloka čudna (previše mala ili previše velika):

  • Poruka o grešci: malloc(): invalid size (unsorted)

  • Ako je veličina sledećeg bloka čudna (previše mala ili previše velika):

  • Poruka o grešci: malloc(): invalid next size (unsorted)

  • Ako veličina prethodnog naznačena od strane sledećeg bloka se razlikuje od veličine bloka:

  • 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

  • Pošto uvek proveravamo poslednji, njegov fd bi uvek trebalo da pokazuje na strukturu arene.

  • Ako sledeći blok 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 vrhunskog bloka:

  • chunksize(av->top) > av->system_mem:

  • Poruka o grešci: malloc(): corrupted top size

tcache_get_n

  • Provere u tcache_get_n:

  • Ako je blok neusaglašen:

  • Poruka o grešci: malloc(): unaligned tcache chunk detected

tcache_thread_shutdown

  • Provere u tcache_thread_shutdown:

  • Ako je blok neusaglašen:

  • Poruka o grešci: tcache_thread_shutdown(): unaligned tcache chunk detected

__libc_realloc

  • Provere u __libc_realloc:

  • Ako je stari pokazivač neusaglašen ili je veličina bila neispravna:

  • Poruka o grešci: realloc(): invalid pointer

_int_free

Za više informacija pogledajte:

free
  • Provere tokom početka _int_free:

  • Pokazivač je usaglašen:

  • Poruka o grešci: free(): invalid pointer

  • Veličina veća od MINSIZE i takođe usaglašena:

  • Poruka o grešci: free(): invalid size

  • Provere u _int_free tcache-u:

  • Ako ima više unosa od mp_.tcache_count:

  • Poruka o grešci: free(): too many chunks detected in tcache

  • Ako unos nije usaglašen:

  • Poruka o grešci: free(): unaligned chunk detected in tcache 2

  • Ako je oslobođeni blok već bio oslobođen i prisutan kao blok u tcache-u:

  • Poruka o grešci: free(): double free detected in tcache 2

  • Provere u _int_free brzom binu:

  • Ako je veličina bloka neispravna (previše velika ili mala) pokreni:

  • Poruka o grešci: free(): invalid next size (fast)

  • Ako je dodati blok već bio na vrhu brzog bina:

  • Poruka o grešci: double free or corruption (fasttop)

  • Ako veličina bloka na vrhu ima drugačiju veličinu od bloka koji dodajemo:

  • Poruka o grešci: invalid fastbin entry (free)

_int_free_merge_chunk

  • Provere u _int_free_merge_chunk:

  • Ako je chunk vrhunski chunk:

  • Poruka o grešci: double free or corruption (top)

  • Ako je sledeći chunk van granica arene:

  • Poruka o grešci: double free or corruption (out)

  • Ako chunk nije označen kao korišćen (u prev_inuse od sledećeg chunk-a):

  • Poruka o grešci: double free or corruption (!prev)

  • Ako sledeći chunk ima previše malu ili previše veliku veličinu:

  • Poruka o grešci: free(): invalid next size (normal)

  • Ako prethodni chunk nije u upotrebi, pokušaće da konsoliduje. Ali, ako se prev_size razlikuje od veličine navedene u prethodnom chunk-u:

  • Poruka o grešci: corrupted size vs. prev_size while consolidating

_int_free_create_chunk

  • Provere u _int_free_create_chunk:

  • Dodavanje chunk-a u nesortirani bin, provera da li je 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 fast bin chunk nepravilno poravnat:

  • Poruka o grešci: do_check_malloc_state(): unaligned fastbin chunk detected

malloc_consolidate

  • Provere u malloc_consolidate:

  • Ako je fast bin chunk nepravilno poravnat:

  • Poruka o grešci: malloc_consolidate(): unaligned fastbin chunk detected

  • Ako je nepravilna veličina fast bin chunk-a:

  • Poruka o grešci: malloc_consolidate(): invalid chunk size

_int_realloc

  • Provere u _int_realloc:

  • Veličina je previše velika ili previše mala:

  • Poruka o grešci: realloc(): invalid old size

  • Veličina sledećeg chunk-a je previše velika ili previše mala:

  • Poruka o grešci: realloc(): invalid next size

Last updated