Heap Functions Security Checks

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: 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 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 P->fd->bk == P i P->bk->fw == P
  • Poruka o grešci: corrupted double-linked list
  • Ako deo 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 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 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-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:
  • Ako je deo neusklađen, pokrenite:
  • 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č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 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:

free

  • 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 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) pokrenite:
  • 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 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:
  • 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:
  • 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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks