Heap Functions Security Checks
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
For more info check:
unlinkЦе резюме виконаних перевірок:
Перевірте, чи вказаний розмір блоку такий же, як prev_size
, вказаний у наступному блоці
Повідомлення про помилку: corrupted size vs. prev_size
Також перевірте, що P->fd->bk == P
і P->bk->fw == P
Повідомлення про помилку: corrupted double-linked list
Якщо блок не малий, перевірте, що P->fd_nextsize->bk_nextsize == P
і P->bk_nextsize->fd_nextsize == P
Повідомлення про помилку: corrupted double-linked list (not small)
For more info check:
malloc & sysmallocПеревірки під час швидкого пошуку бінів:
Якщо блок неправильно вирівняний:
Повідомлення про помилку: malloc(): unaligned fastbin chunk detected 2
Якщо наступний блок неправильно вирівняний:
Повідомлення про помилку: malloc(): unaligned fastbin chunk detected
Якщо повернутий блок має неправильний розмір через свій індекс у швидкому біні:
Повідомлення про помилку: malloc(): memory corruption (fast)
Якщо будь-який блок, що використовується для заповнення tcache, неправильно вирівняний:
Повідомлення про помилку: malloc(): unaligned fastbin chunk detected 3
Перевірки під час пошуку малих бінів:
Якщо victim->bk->fd != victim
:
Повідомлення про помилку: malloc(): smallbin double linked list corrupted
Перевірки під час консолідації, виконувані для кожного блоку швидкого біна:
Якщо блок неправильно вирівняний, викликайте:
Повідомлення про помилку: malloc_consolidate(): unaligned fastbin chunk detected
Якщо блок має інший розмір, ніж той, який повинен бути через індекс, в якому він знаходиться:
Повідомлення про помилку: malloc_consolidate(): invalid chunk size
Якщо попередній блок не використовується, а попередній блок має розмір, відмінний від вказаного prev_chunk:
Повідомлення про помилку: corrupted size vs. prev_size in fastbins
Перевірки під час пошуку неупорядкованих бінів:
Якщо розмір блоку дивний (занадто малий або занадто великий):
Повідомлення про помилку: malloc(): invalid size (unsorted)
Якщо розмір наступного блоку дивний (занадто малий або занадто великий):
Повідомлення про помилку: malloc(): invalid next size (unsorted)
Якщо попередній розмір, вказаний наступним блоком, відрізняється від розміру блоку:
Повідомлення про помилку: malloc(): mismatching next->prev_size (unsorted)
Якщо не victim->bck->fd == victim
або не victim->fd == av (arena)
:
Повідомлення про помилку: malloc(): unsorted double linked list corrupted
Оскільки ми завжди перевіряємо останній, його fd завжди має вказувати на структуру арени.
Якщо наступний блок не вказує, що попередній використовується:
Повідомлення про помилку: malloc(): invalid next->prev_inuse (unsorted)
Якщо fwd->bk_nextsize->fd_nextsize != fwd
:
Повідомлення про помилку: malloc(): largebin double linked list corrupted (nextsize)
Якщо fwd->bk->fd != fwd
:
Повідомлення про помилку: malloc(): largebin double linked list corrupted (bk)
Перевірки під час пошуку великого біна (за індексом):
bck->fd-> bk != bck
:
Повідомлення про помилку: malloc(): corrupted unsorted chunks
Перевірки під час пошуку великого біна (наступний більший):
bck->fd-> bk != bck
:
Повідомлення про помилку: malloc(): corrupted unsorted chunks2
Перевірки під час використання Top chunk:
chunksize(av->top) > av->system_mem
:
Повідомлення про помилку: malloc(): corrupted top size
tcache_get_n
Перевірки в tcache_get_n
:
Якщо блок неправильно вирівняний:
Повідомлення про помилку: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
Перевірки в tcache_thread_shutdown
:
Якщо блок неправильно вирівняний:
Повідомлення про помилку: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
Перевірки в __libc_realloc
:
Якщо старий вказівник неправильно вирівняний або розмір був неправильним:
Повідомлення про помилку: realloc(): invalid pointer
_int_free
For more info check:
freeПеревірки на початку _int_free
:
Вказівник вирівняний:
Повідомлення про помилку: free(): invalid pointer
Розмір більший за MINSIZE
і розмір також вирівняний:
Повідомлення про помилку: free(): invalid size
Перевірки в _int_free
tcache:
Якщо є більше записів, ніж mp_.tcache_count
:
Повідомлення про помилку: free(): too many chunks detected in tcache
Якщо запис не вирівняний:
Повідомлення про помилку: free(): unaligned chunk detected in tcache 2
Якщо звільнений блок вже був звільнений і присутній як блок у tcache:
Повідомлення про помилку: free(): double free detected in tcache 2
Перевірки в _int_free
швидкому біні:
Якщо розмір блоку недійсний (занадто великий або малий), викликайте:
Повідомлення про помилку: free(): invalid next size (fast)
Якщо доданий блок вже був верхнім у швидкому біні:
Повідомлення про помилку: double free or corruption (fasttop)
Якщо розмір блоку на верху має інший розмір, ніж блок, який ми додаємо:
Повідомлення про помилку: invalid fastbin entry (free)
_int_free_merge_chunk
Перевірки в _int_free_merge_chunk
:
Якщо блок є верхнім блоком:
Повідомлення про помилку: double free or corruption (top)
Якщо наступний блок знаходиться за межами кордонів арени:
Повідомлення про помилку: double free or corruption (out)
Якщо блок не позначений як використаний (в prev_inuse наступного блоку):
Повідомлення про помилку: double free or corruption (!prev)
Якщо наступний блок має занадто малий або занадто великий розмір:
Повідомлення про помилку: free(): invalid next size (normal)
Якщо попередній блок не використовується, він спробує консолідувати. Але, якщо prev_size
відрізняється від розміру, вказаного в попередньому блоці:
Повідомлення про помилку: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
Перевірки в _int_free_create_chunk
:
Додаючи блок у неупорядкований бін, перевірте, чи unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
Повідомлення про помилку: free(): corrupted unsorted chunks
do_check_malloc_state
Перевірки в do_check_malloc_state
:
Якщо неправильно вирівняний блок швидкого біна:
Повідомлення про помилку: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
Перевірки в malloc_consolidate
:
Якщо неправильно вирівняний блок швидкого біна:
Повідомлення про помилку: malloc_consolidate(): unaligned fastbin chunk detected
Якщо неправильний розмір блоку швидкого біна:
Повідомлення про помилку: malloc_consolidate(): invalid chunk size
_int_realloc
Перевірки в _int_realloc
:
Розмір занадто великий або занадто малий:
Повідомлення про помилку: realloc(): invalid old size
Розмір наступного блоку занадто великий або занадто малий:
Повідомлення про помилку: realloc(): invalid next size
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)