Heap Functions Security Checks
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Informationen siehe:
unlinkDies ist eine Zusammenfassung der durchgeführten Prüfungen:
Überprüfe, ob die angegebene Größe des Chunks mit der prev_size
übereinstimmt, die im nächsten Chunk angegeben ist
Fehlermeldung: corrupted size vs. prev_size
Überprüfe auch, dass P->fd->bk == P
und P->bk->fw == P
Fehlermeldung: corrupted double-linked list
Wenn der Chunk nicht klein ist, überprüfe, dass P->fd_nextsize->bk_nextsize == P
und P->bk_nextsize->fd_nextsize == P
Fehlermeldung: corrupted double-linked list (not small)
Für weitere Informationen siehe:
malloc & sysmallocPrüfungen während der schnellen Bin-Suche:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected 2
Wenn der vorwärts gerichtete Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected
Wenn der zurückgegebene Chunk eine Größe hat, die aufgrund seines Index in der schnellen Bin nicht korrekt ist:
Fehlermeldung: malloc(): memory corruption (fast)
Wenn ein Chunk, der verwendet wird, um den tcache zu füllen, nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected 3
Prüfungen während der kleinen Bin-Suche:
Wenn victim->bk->fd != victim
:
Fehlermeldung: malloc(): smallbin double linked list corrupted
Prüfungen während der Konsolidierung für jeden schnellen Bin-Chunk:
Wenn der Chunk nicht ausgerichtet ist, wird ausgelöst:
Fehlermeldung: malloc_consolidate(): unaligned fastbin chunk detected
Wenn der Chunk eine andere Größe hat als die, die er haben sollte, aufgrund des Index, in dem er sich befindet:
Fehlermeldung: malloc_consolidate(): invalid chunk size
Wenn der vorherige Chunk nicht in Gebrauch ist und der vorherige Chunk eine andere Größe hat als die, die von prev_chunk angegeben ist:
Fehlermeldung: corrupted size vs. prev_size in fastbins
Prüfungen während der unsortierten Bin-Suche:
Wenn die Chunk-Größe seltsam ist (zu klein oder zu groß):
Fehlermeldung: malloc(): invalid size (unsorted)
Wenn die Größe des nächsten Chunks seltsam ist (zu klein oder zu groß):
Fehlermeldung: malloc(): invalid next size (unsorted)
Wenn die vorherige Größe, die vom nächsten Chunk angegeben wird, von der Größe des Chunks abweicht:
Fehlermeldung: malloc(): mismatching next->prev_size (unsorted)
Wenn nicht victim->bck->fd == victim
oder nicht victim->fd == av (arena)
:
Fehlermeldung: malloc(): unsorted double linked list corrupted
Da wir immer den letzten überprüfen, sollte sein fd immer auf die Arena-Struktur zeigen.
Wenn der nächste Chunk nicht angibt, dass der vorherige in Gebrauch ist:
Fehlermeldung: malloc(): invalid next->prev_inuse (unsorted)
Wenn fwd->bk_nextsize->fd_nextsize != fwd
:
Fehlermeldung: malloc(): largebin double linked list corrupted (nextsize)
Wenn fwd->bk->fd != fwd
:
Fehlermeldung: malloc(): largebin double linked list corrupted (bk)
Prüfungen während der großen Bin (nach Index) Suche:
bck->fd-> bk != bck
:
Fehlermeldung: malloc(): corrupted unsorted chunks
Prüfungen während der großen Bin (nächster größerer) Suche:
bck->fd-> bk != bck
:
Fehlermeldung: malloc(): corrupted unsorted chunks2
Prüfungen während der Verwendung des Top-Chunks:
chunksize(av->top) > av->system_mem
:
Fehlermeldung: malloc(): corrupted top size
tcache_get_n
Prüfungen in tcache_get_n
:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
Prüfungen in tcache_thread_shutdown
:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
Prüfungen in __libc_realloc
:
Wenn der alte Zeiger nicht ausgerichtet ist oder die Größe falsch war:
Fehlermeldung: realloc(): invalid pointer
_int_free
Für weitere Informationen siehe:
freePrüfungen zu Beginn von _int_free
:
Zeiger ist ausgerichtet:
Fehlermeldung: free(): invalid pointer
Größe größer als MINSIZE
und Größe ebenfalls ausgerichtet:
Fehlermeldung: free(): invalid size
Prüfungen im _int_free
tcache:
Wenn es mehr Einträge als mp_.tcache_count
gibt:
Fehlermeldung: free(): too many chunks detected in tcache
Wenn der Eintrag nicht ausgerichtet ist:
Fehlermeldung: free(): unaligned chunk detected in tcache 2
Wenn der freigegebene Chunk bereits freigegeben wurde und als Chunk im tcache vorhanden ist:
Fehlermeldung: free(): double free detected in tcache 2
Prüfungen im _int_free
schnellen Bin:
Wenn die Größe des Chunks ungültig ist (zu groß oder zu klein), wird ausgelöst:
Fehlermeldung: free(): invalid next size (fast)
Wenn der hinzugefügte Chunk bereits der Top des schnellen Bins war:
Fehlermeldung: double free or corruption (fasttop)
Wenn die Größe des Chunks an der Spitze eine andere Größe hat als der Chunk, den wir hinzufügen:
Fehlermeldung: invalid fastbin entry (free)
_int_free_merge_chunk
Prüfungen in _int_free_merge_chunk
:
Wenn der Chunk der Top-Chunk ist:
Fehlermeldung: double free or corruption (top)
Wenn der nächste Chunk außerhalb der Grenzen der Arena liegt:
Fehlermeldung: double free or corruption (out)
Wenn der Chunk nicht als verwendet markiert ist (im prev_inuse des folgenden Chunks):
Fehlermeldung: double free or corruption (!prev)
Wenn der nächste Chunk eine zu kleine oder zu große Größe hat:
Fehlermeldung: free(): invalid next size (normal)
Wenn der vorherige Chunk nicht in Gebrauch ist, wird versucht, zu konsolidieren. Aber wenn die prev_size
von der Größe abweicht, die im vorherigen Chunk angegeben ist:
Fehlermeldung: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
Prüfungen in _int_free_create_chunk
:
Hinzufügen eines Chunks in die unsortierte Bin, überprüfe, ob unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
Fehlermeldung: free(): corrupted unsorted chunks
do_check_malloc_state
Prüfungen in do_check_malloc_state
:
Wenn der schnelle Bin-Chunk nicht ausgerichtet ist:
Fehlermeldung: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
Prüfungen in malloc_consolidate
:
Wenn der schnelle Bin-Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc_consolidate(): unaligned fastbin chunk detected
Wenn die Größe des schnellen Bin-Chunks falsch ist:
Fehlermeldung: malloc_consolidate(): invalid chunk size
_int_realloc
Prüfungen in _int_realloc
:
Größe ist zu groß oder zu klein:
Fehlermeldung: realloc(): invalid old size
Größe des nächsten Chunks ist zu groß oder zu klein:
Fehlermeldung: realloc(): invalid next size
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)