164 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Heap Functions Security Checks
{{#include ../../../banners/hacktricks-training.md}}
## unlink
Daha fazla bilgi için kontrol edin:
{{#ref}}
unlink.md
{{#endref}}
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:
{{#ref}}
malloc-and-sysmalloc.md
{{#endref}}
- **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:
{{#ref}}
free.md
{{#endref}}
- **`_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`
{{#include ../../../banners/hacktricks-training.md}}