Heap Functions Security Checks

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Kwa maelezo zaidi angalia:

{{#ref}} unlink.md {{#endref}}

Hii ni muhtasari wa ukaguzi uliofanywa:

  • Angalia kama ukubwa ulioonyeshwa wa kipande ni sawa na prev_size iliyoonyeshwa katika kipande kinachofuata
  • Ujumbe wa kosa: corrupted size vs. prev_size
  • Angalia pia kwamba P->fd->bk == P na P->bk->fw == P
  • Ujumbe wa kosa: corrupted double-linked list
  • Ikiwa kipande si kidogo, angalia kwamba P->fd_nextsize->bk_nextsize == P na P->bk_nextsize->fd_nextsize == P
  • Ujumbe wa kosa: corrupted double-linked list (not small)

_int_malloc

Kwa maelezo zaidi angalia:

{{#ref}} malloc-and-sysmalloc.md {{#endref}}

  • Ukaguzi wakati wa kutafuta fast bin:
  • Ikiwa kipande hakiko sawa:
  • Ujumbe wa kosa: malloc(): unaligned fastbin chunk detected 2
  • Ikiwa kipande cha mbele hakiko sawa:
  • Ujumbe wa kosa: malloc(): unaligned fastbin chunk detected
  • Ikiwa kipande kilichorejeshwa kina ukubwa usio sahihi kwa sababu ya index yake katika fast bin:
  • Ujumbe wa kosa: malloc(): memory corruption (fast)
  • Ikiwa kipande chochote kilichotumika kujaza tcache hakiko sawa:
  • Ujumbe wa kosa: malloc(): unaligned fastbin chunk detected 3
  • Ukaguzi wakati wa kutafuta small bin:
  • Ikiwa victim->bk->fd != victim:
  • Ujumbe wa kosa: malloc(): smallbin double linked list corrupted
  • Ukaguzi wakati wa kuunganishwa unafanywa kwa kila kipande cha fast bin:
  • Ikiwa kipande hakiko sawa trigger:
  • Ujumbe wa kosa: malloc_consolidate(): unaligned fastbin chunk detected
  • Ikiwa kipande kina ukubwa tofauti na kile kinachopaswa kwa sababu ya index iliyo ndani yake:
  • Ujumbe wa kosa: malloc_consolidate(): invalid chunk size
  • Ikiwa kipande cha awali hakitumiki na kipande cha awali kina ukubwa tofauti na kile kilichoonyeshwa na prev_chunk:
  • Ujumbe wa kosa: corrupted size vs. prev_size in fastbins
  • Ukaguzi wakati wa kutafuta unsorted bin:
  • Ikiwa ukubwa wa kipande ni wa ajabu (mdogo sana au mkubwa sana):
  • Ujumbe wa kosa: malloc(): invalid size (unsorted)
  • Ikiwa ukubwa wa kipande kinachofuata ni wa ajabu (mdogo sana au mkubwa sana):
  • Ujumbe wa kosa: malloc(): invalid next size (unsorted)
  • Ikiwa ukubwa wa awali ulioonyeshwa na kipande kinachofuata unatofautiana na ukubwa wa kipande:
  • Ujumbe wa kosa: malloc(): mismatching next->prev_size (unsorted)
  • Ikiwa si victim->bck->fd == victim au si victim->fd == av (arena):
  • Ujumbe wa kosa: malloc(): unsorted double linked list corrupted
  • Kwa kuwa kila wakati tunakagua la mwisho, fd yake inapaswa kuelekeza kila wakati kwenye muundo wa arena.
  • Ikiwa kipande kinachofuata hakionyeshi kwamba cha awali kinatumika:
  • Ujumbe wa kosa: malloc(): invalid next->prev_inuse (unsorted)
  • Ikiwa fwd->bk_nextsize->fd_nextsize != fwd:
  • Ujumbe wa kosa: malloc(): largebin double linked list corrupted (nextsize)
  • Ikiwa fwd->bk->fd != fwd:
  • Ujumbe wa kosa: malloc(): largebin double linked list corrupted (bk)
  • Ukaguzi wakati wa kutafuta large bin (kwa index):
  • bck->fd-> bk != bck:
  • Ujumbe wa kosa: malloc(): corrupted unsorted chunks
  • Ukaguzi wakati wa kutafuta large bin (next bigger):
  • bck->fd-> bk != bck:
  • Ujumbe wa kosa: malloc(): corrupted unsorted chunks2
  • Ukaguzi wakati wa matumizi ya Top chunk:
  • chunksize(av->top) > av->system_mem:
  • Ujumbe wa kosa: malloc(): corrupted top size

tcache_get_n

  • Ukaguzi katika tcache_get_n:
  • Ikiwa kipande hakiko sawa:
  • Ujumbe wa kosa: malloc(): unaligned tcache chunk detected

tcache_thread_shutdown

  • Ukaguzi katika tcache_thread_shutdown:
  • Ikiwa kipande hakiko sawa:
  • Ujumbe wa kosa: tcache_thread_shutdown(): unaligned tcache chunk detected

__libc_realloc

  • Ukaguzi katika __libc_realloc:
  • Ikiwa pointer ya zamani haiko sawa au ukubwa ulikuwa sio sahihi:
  • Ujumbe wa kosa: realloc(): invalid pointer

_int_free

Kwa maelezo zaidi angalia:

{{#ref}} free.md {{#endref}}

  • Ukaguzi wakati wa mwanzo wa _int_free:
  • Pointer iko sawa:
  • Ujumbe wa kosa: free(): invalid pointer
  • Ukubwa ni mkubwa kuliko MINSIZE na ukubwa pia umewekwa sawa:
  • Ujumbe wa kosa: free(): invalid size
  • Ukaguzi katika _int_free tcache:
  • Ikiwa kuna entries zaidi ya mp_.tcache_count:
  • Ujumbe wa kosa: free(): too many chunks detected in tcache
  • Ikiwa entry haiko sawa:
  • Ujumbe wa kosa: free(): unaligned chunk detected in tcache 2
  • Ikiwa kipande kilichofutwa tayari kilikuwa kimefutwa na kiko kama kipande katika tcache:
  • Ujumbe wa kosa: free(): double free detected in tcache 2
  • Ukaguzi katika _int_free fast bin:
  • Ikiwa ukubwa wa kipande sio sahihi (mkubwa sana au mdogo sana) trigger:
  • Ujumbe wa kosa: free(): invalid next size (fast)
  • Ikiwa kipande kilichoongezwa tayari kilikuwa juu ya fast bin:
  • Ujumbe wa kosa: double free or corruption (fasttop)
  • Ikiwa ukubwa wa kipande kilichoko juu una ukubwa tofauti na kipande tunachoongeza:
  • Ujumbe wa kosa: invalid fastbin entry (free)

_int_free_merge_chunk

  • Ukaguzi katika _int_free_merge_chunk:
  • Ikiwa kipande ni kipande cha juu:
  • Ujumbe wa kosa: double free or corruption (top)
  • Ikiwa kipande kinachofuata kiko nje ya mipaka ya arena:
  • Ujumbe wa kosa: double free or corruption (out)
  • Ikiwa kipande hakijapangwa kama kinachotumika (katika prev_inuse kutoka kipande kinachofuata):
  • Ujumbe wa kosa: double free or corruption (!prev)
  • Ikiwa kipande kinachofuata kina ukubwa mdogo sana au mkubwa sana:
  • Ujumbe wa kosa: free(): invalid next size (normal)
  • Ikiwa kipande cha awali hakitumiki, kitajaribu kuunganishwa. Lakini, ikiwa prev_size inatofautiana na ukubwa ulioonyeshwa katika kipande cha awali:
  • Ujumbe wa kosa: corrupted size vs. prev_size while consolidating

_int_free_create_chunk

  • Ukaguzi katika _int_free_create_chunk:
  • Kuongeza kipande katika unsorted bin, angalia ikiwa unsorted_chunks(av)->fd->bk == unsorted_chunks(av):
  • Ujumbe wa kosa: free(): corrupted unsorted chunks

do_check_malloc_state

  • Ukaguzi katika do_check_malloc_state:
  • Ikiwa fast bin chunk haiko sawa:
  • Ujumbe wa kosa: do_check_malloc_state(): unaligned fastbin chunk detected

malloc_consolidate

  • Ukaguzi katika malloc_consolidate:
  • Ikiwa fast bin chunk haiko sawa:
  • Ujumbe wa kosa: malloc_consolidate(): unaligned fastbin chunk detected
  • Ikiwa ukubwa wa fast bin chunk sio sahihi:
  • Ujumbe wa kosa: malloc_consolidate(): invalid chunk size

_int_realloc

  • Ukaguzi katika _int_realloc:
  • Ukubwa ni mkubwa sana au mdogo sana:
  • Ujumbe wa kosa: realloc(): invalid old size
  • Ukubwa wa kipande kinachofuata ni mkubwa sana au mdogo sana:
  • Ujumbe wa kosa: realloc(): invalid next size

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks