# Heap Functions Security Checks {{#include ../../../banners/hacktricks-training.md}} ## unlink Vir meer inligting, kyk: {{#ref}} unlink.md {{#endref}} Dit is 'n opsomming van die uitgevoerde kontroles: - Kontroleer of die aangeduide grootte van die stuk dieselfde is as die `prev_size` wat in die volgende stuk aangedui word - Foutboodskap: `corrupted size vs. prev_size` - Kontroleer ook dat `P->fd->bk == P` en `P->bk->fw == P` - Foutboodskap: `corrupted double-linked list` - As die stuk nie klein is nie, kontroleer dat `P->fd_nextsize->bk_nextsize == P` en `P->bk_nextsize->fd_nextsize == P` - Foutboodskap: `corrupted double-linked list (not small)` ## \_int_malloc Vir meer inligting, kyk: {{#ref}} malloc-and-sysmalloc.md {{#endref}} - **Kontroles tydens vinnige bin soektog:** - As die stuk nie uitgelijn is nie: - Foutboodskap: `malloc(): unaligned fastbin chunk detected 2` - As die vorentoe stuk nie uitgelijn is nie: - Foutboodskap: `malloc(): unaligned fastbin chunk detected` - As die teruggegee stuk 'n grootte het wat nie korrek is nie weens sy indeks in die vinnige bin: - Foutboodskap: `malloc(): memory corruption (fast)` - As enige stuk wat gebruik word om die tcache te vul nie uitgelijn is nie: - Foutboodskap: `malloc(): unaligned fastbin chunk detected 3` - **Kontroles tydens klein bin soektog:** - As `victim->bk->fd != victim`: - Foutboodskap: `malloc(): smallbin double linked list corrupted` - **Kontroles tydens konsolidasie** uitgevoer vir elke vinnige bin stuk: - As die stuk nie uitgelijn is nie, aktiveer: - Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected` - As die stuk 'n ander grootte het as die een wat dit behoort te wees weens die indeks waarin dit is: - Foutboodskap: `malloc_consolidate(): invalid chunk size` - As die vorige stuk nie in gebruik is nie en die vorige stuk 'n grootte het wat verskil van die een aangedui deur prev_chunk: - Foutboodskap: `corrupted size vs. prev_size in fastbins` - **Kontroles tydens onsortering bin soektog**: - As die stuk grootte vreemd is (te klein of te groot): - Foutboodskap: `malloc(): invalid size (unsorted)` - As die volgende stuk grootte vreemd is (te klein of te groot): - Foutboodskap: `malloc(): invalid next size (unsorted)` - As die vorige grootte wat deur die volgende stuk aangedui word verskil van die grootte van die stuk: - Foutboodskap: `malloc(): mismatching next->prev_size (unsorted)` - As nie `victim->bck->fd == victim` of nie `victim->fd == av (arena)` nie: - Foutboodskap: `malloc(): unsorted double linked list corrupted` - Aangesien ons altyd die laaste een kontroleer, moet dit altyd na die arena struktuur wys. - As die volgende stuk nie aandui dat die vorige in gebruik is nie: - Foutboodskap: `malloc(): invalid next->prev_inuse (unsorted)` - As `fwd->bk_nextsize->fd_nextsize != fwd`: - Foutboodskap: `malloc(): largebin double linked list corrupted (nextsize)` - As `fwd->bk->fd != fwd`: - Foutboodskap: `malloc(): largebin double linked list corrupted (bk)` - **Kontroles tydens groot bin (volgens indeks) soektog:** - `bck->fd-> bk != bck`: - Foutboodskap: `malloc(): corrupted unsorted chunks` - **Kontroles tydens groot bin (volgende groter) soektog:** - `bck->fd-> bk != bck`: - Foutboodskap: `malloc(): corrupted unsorted chunks2` - **Kontroles tydens Top stuk gebruik:** - `chunksize(av->top) > av->system_mem`: - Foutboodskap: `malloc(): corrupted top size` ## `tcache_get_n` - **Kontroles in `tcache_get_n`:** - As die stuk nie uitgelijn is nie: - Foutboodskap: `malloc(): unaligned tcache chunk detected` ## `tcache_thread_shutdown` - **Kontroles in `tcache_thread_shutdown`:** - As die stuk nie uitgelijn is nie: - Foutboodskap: `tcache_thread_shutdown(): unaligned tcache chunk detected` ## `__libc_realloc` - **Kontroles in `__libc_realloc`:** - As die ou pointer nie uitgelijn is nie of die grootte verkeerd was: - Foutboodskap: `realloc(): invalid pointer` ## `_int_free` Vir meer inligting, kyk: {{#ref}} free.md {{#endref}} - **Kontroles tydens die begin van `_int_free`:** - Pointer is uitgelijn: - Foutboodskap: `free(): invalid pointer` - Grootte groter as `MINSIZE` en grootte ook uitgelijn: - Foutboodskap: `free(): invalid size` - **Kontroles in `_int_free` tcache:** - As daar meer inskrywings is as `mp_.tcache_count`: - Foutboodskap: `free(): too many chunks detected in tcache` - As die inskrywing nie uitgelijn is nie: - Foutboodskap: `free(): unaligned chunk detected in tcache 2` - As die vrygestelde stuk reeds vrygestel is en teenwoordig is as 'n stuk in die tcache: - Foutboodskap: `free(): double free detected in tcache 2` - **Kontroles in `_int_free` vinnige bin:** - As die grootte van die stuk ongeldig is (te groot of klein) aktiveer: - Foutboodskap: `free(): invalid next size (fast)` - As die bygevoegde stuk reeds die top van die vinnige bin was: - Foutboodskap: `double free or corruption (fasttop)` - As die grootte van die stuk aan die top 'n ander grootte het as die stuk wat ons byvoeg: - Foutboodskap: `invalid fastbin entry (free)` ## **`_int_free_merge_chunk`** - **Kontroles in `_int_free_merge_chunk`:** - As die stuk die top stuk is: - Foutboodskap: `double free or corruption (top)` - As die volgende stuk buite die grense van die arena is: - Foutboodskap: `double free or corruption (out)` - As die stuk nie gemerk is as gebruik nie (in die prev_inuse van die volgende stuk): - Foutboodskap: `double free or corruption (!prev)` - As die volgende stuk 'n te klein of te groot grootte het: - Foutboodskap: `free(): invalid next size (normal)` - As die vorige stuk nie in gebruik is nie, sal dit probeer konsolideer. Maar, as die `prev_size` verskil van die grootte wat in die vorige stuk aangedui word: - Foutboodskap: `corrupted size vs. prev_size while consolidating` ## **`_int_free_create_chunk`** - **Kontroles in `_int_free_create_chunk`:** - Voeg 'n stuk by die onsortering bin, kontroleer of `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`: - Foutboodskap: `free(): corrupted unsorted chunks` ## `do_check_malloc_state` - **Kontroles in `do_check_malloc_state`:** - As misaligned fast bin stuk: - Foutboodskap: `do_check_malloc_state(): unaligned fastbin chunk detected` ## `malloc_consolidate` - **Kontroles in `malloc_consolidate`:** - As misaligned fast bin stuk: - Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected` - As verkeerde fast bin stuk grootte: - Foutboodskap: `malloc_consolidate(): invalid chunk size` ## `_int_realloc` - **Kontroles in `_int_realloc`:** - Grootte is te groot of te klein: - Foutboodskap: `realloc(): invalid old size` - Grootte van die volgende stuk is te groot of te klein: - Foutboodskap: `realloc(): invalid next size` {{#include ../../../banners/hacktricks-training.md}}