Heap Functions Security Checks

Reading time: 5 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Daha fazla bilgi için kontrol edin:

unlink

Yapılan kontrollerin özeti:

  • Parçanın belirtilen boyutunun, bir sonraki parçadaki prev_size ile aynı olup olmadığını kontrol et
  • Hata mesajı: corrupted size vs. prev_size
  • Ayrıca P->fd->bk == P ve P->bk->fw == P kontrol et
  • Hata mesajı: corrupted double-linked list
  • Eğer parça küçük değilse, P->fd_nextsize->bk_nextsize == P ve P->bk_nextsize->fd_nextsize == P kontrol et
  • Hata mesajı: corrupted double-linked list (not small)

_int_malloc

Daha fazla bilgi için kontrol edin:

malloc & sysmalloc

  • Hızlı bin araması sırasında kontroller:
  • Eğer parça hizalanmamışsa:
  • Hata mesajı: malloc(): unaligned fastbin chunk detected 2
  • Eğer ileri parça hizalanmamışsa:
  • Hata mesajı: malloc(): unaligned fastbin chunk detected
  • Eğer döndürülen parçanın boyutu, hızlı bin içindeki indeksinden dolayı doğru değilse:
  • Hata mesajı: malloc(): memory corruption (fast)
  • Tcache'i doldurmak için kullanılan herhangi bir parça hizalanmamışsa:
  • Hata mesajı: malloc(): unaligned fastbin chunk detected 3
  • Küçük bin araması sırasında kontroller:
  • Eğer victim->bk->fd != victim ise:
  • Hata mesajı: malloc(): smallbin double linked list corrupted
  • Her hızlı bin parçası için yapılan konsolidasyon kontrolleri:
  • Eğer parça hizalanmamışsa tetikle:
  • Hata mesajı: malloc_consolidate(): unaligned fastbin chunk detected
  • Eğer parçanın boyutu, içinde bulunduğu indeks nedeniyle farklıysa:
  • Hata mesajı: malloc_consolidate(): invalid chunk size
  • Eğer önceki parça kullanılmıyorsa ve önceki parçanın boyutu, prev_chunk tarafından belirtilen boyuttan farklıysa:
  • Hata mesajı: corrupted size vs. prev_size in fastbins
  • Sıralanmamış bin araması sırasında kontroller:
  • Eğer parça boyutu garipse (çok küçük veya çok büyük):
  • Hata mesajı: malloc(): invalid size (unsorted)
  • Eğer bir sonraki parça boyutu garipse (çok küçük veya çok büyük):
  • Hata mesajı: malloc(): invalid next size (unsorted)
  • Eğer bir sonraki parçanın belirttiği önceki boyut, parçanın boyutundan farklıysa:
  • Hata mesajı: malloc(): mismatching next->prev_size (unsorted)
  • Eğer victim->bck->fd == victim değilse veya victim->fd == av (arena) değilse:
  • Hata mesajı: malloc(): unsorted double linked list corrupted
  • Her zaman sonuncusunu kontrol ettiğimiz için, fd'si her zaman arena yapısına işaret etmelidir.
  • Eğer bir sonraki parça, öncekinin kullanıldığını belirtmiyorsa:
  • Hata mesajı: malloc(): invalid next->prev_inuse (unsorted)
  • Eğer fwd->bk_nextsize->fd_nextsize != fwd ise:
  • Hata mesajı: malloc(): largebin double linked list corrupted (nextsize)
  • Eğer fwd->bk->fd != fwd ise:
  • Hata mesajı: malloc(): largebin double linked list corrupted (bk)
  • Büyük bin (indeksle) araması sırasında kontroller:
  • bck->fd-> bk != bck:
  • Hata mesajı: malloc(): corrupted unsorted chunks
  • Büyük bin (bir sonraki daha büyük) araması sırasında kontroller:
  • bck->fd-> bk != bck:
  • Hata mesajı: malloc(): corrupted unsorted chunks2
  • Üst parça kullanımı sırasında kontroller:
  • chunksize(av->top) > av->system_mem:
  • Hata mesajı: malloc(): corrupted top size

tcache_get_n

  • tcache_get_n içindeki kontroller:
  • Eğer parça hizalanmamışsa:
  • Hata mesajı: malloc(): unaligned tcache chunk detected

tcache_thread_shutdown

  • tcache_thread_shutdown içindeki kontroller:
  • Eğer parça hizalanmamışsa:
  • Hata mesajı: tcache_thread_shutdown(): unaligned tcache chunk detected

__libc_realloc

  • __libc_realloc içindeki kontroller:
  • Eğer eski işaretçi hizalanmamışsa veya boyut yanlışsa:
  • Hata mesajı: realloc(): invalid pointer

_int_free

Daha fazla bilgi için kontrol edin:

free

  • _int_free başlangıcındaki kontroller:
  • İşaretçi hizalanmış mı:
  • Hata mesajı: free(): invalid pointer
  • Boyut MINSIZE'dan büyük ve boyut da hizalanmışsa:
  • Hata mesajı: free(): invalid size
  • _int_free tcache içindeki kontroller:
  • Eğer mp_.tcache_count'dan fazla giriş varsa:
  • Hata mesajı: free(): too many chunks detected in tcache
  • Eğer giriş hizalanmamışsa:
  • Hata mesajı: free(): unaligned chunk detected in tcache 2
  • Eğer serbest bırakılan parça zaten serbest bırakılmışsa ve tcache'de parça olarak mevcutsa:
  • Hata mesajı: free(): double free detected in tcache 2
  • _int_free hızlı bin içindeki kontroller:
  • Eğer parçanın boyutu geçersizse (çok büyük veya küçük) tetikle:
  • Hata mesajı: free(): invalid next size (fast)
  • Eğer eklenen parça zaten hızlı binin üstüydü:
  • Hata mesajı: double free or corruption (fasttop)
  • Eğer üstteki parçanın boyutu, eklediğimiz parçanın boyutundan farklıysa:
  • Hata mesajı: invalid fastbin entry (free)

_int_free_merge_chunk

  • _int_free_merge_chunk içindeki kontroller:
  • Eğer parça üst parça ise:
  • Hata mesajı: double free or corruption (top)
  • Eğer bir sonraki parça arenanın sınırlarının dışındaysa:
  • Hata mesajı: double free or corruption (out)
  • Eğer parça kullanılmadı olarak işaretlenmemişse (sonraki parçanın prev_inuse'inde):
  • Hata mesajı: double free or corruption (!prev)
  • Eğer bir sonraki parçanın boyutu çok küçük veya çok büyükse:
  • Hata mesajı: free(): invalid next size (normal)
  • Eğer önceki parça kullanılmıyorsa, konsolidasyon yapmaya çalışacaktır. Ancak, prev_size önceki parçadaki belirtilen boyuttan farklıysa:
  • Hata mesajı: corrupted size vs. prev_size while consolidating

_int_free_create_chunk

  • _int_free_create_chunk içindeki kontroller:
  • Sıralanmamış bine bir parça eklerken, unsorted_chunks(av)->fd->bk == unsorted_chunks(av) kontrol et:
  • Hata mesajı: free(): corrupted unsorted chunks

do_check_malloc_state

  • do_check_malloc_state içindeki kontroller:
  • Eğer hizalanmamış hızlı bin parçası varsa:
  • Hata mesajı: do_check_malloc_state(): unaligned fastbin chunk detected

malloc_consolidate

  • malloc_consolidate içindeki kontroller:
  • Eğer hizalanmamış hızlı bin parçası varsa:
  • Hata mesajı: malloc_consolidate(): unaligned fastbin chunk detected
  • Eğer geçersiz hızlı bin parça boyutu varsa:
  • Hata mesajı: malloc_consolidate(): invalid chunk size

_int_realloc

  • _int_realloc içindeki kontroller:
  • Boyut çok büyük veya çok küçükse:
  • Hata mesajı: realloc(): invalid old size
  • Bir sonraki parçanın boyutu çok büyük veya çok küçükse:
  • Hata mesajı: realloc(): invalid next size

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin