Heap Functions Security Checks
Last updated
Last updated
Lernen Sie und üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie und üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Informationen siehe:
unlinkDies ist eine Zusammenfassung der durchgeführten Überprüfungen:
Überprüfen Sie, ob die angegebene Größe des Chunks mit der im nächsten Chunk angegebenen prev_size
übereinstimmt
Fehlermeldung: corrupted size vs. prev_size
Überprüfen Sie auch, ob P->fd->bk == P
und P->bk->fw == P
Fehlermeldung: corrupted double-linked list
Wenn der Chunk nicht klein ist, überprüfen Sie, ob 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 & sysmallocÜberprüfungen während der Suche im Fast Bin:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected 2
Wenn der vorwärts liegende Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected
Wenn der zurückgegebene Chunk eine Größe hat, die aufgrund seines Index im Fast Bin nicht korrekt ist:
Fehlermeldung: malloc(): memory corruption (fast)
Wenn ein beliebiger Chunk, der verwendet wird, um den Tcache zu füllen, nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned fastbin chunk detected 3
Überprüfungen während der Suche im Small Bin:
Wenn victim->bk->fd != victim
:
Fehlermeldung: malloc(): smallbin double linked list corrupted
Überprüfungen während der Konsolidierung für jeden Fast Bin Chunk durchgeführt:
Wenn der Chunk nicht ausgerichtet ist, auslösen:
Fehlermeldung: malloc_consolidate(): unaligned fastbin chunk detected
Wenn der Chunk eine andere Größe hat als die, die er aufgrund des Index haben sollte:
Fehlermeldung: malloc_consolidate(): invalid chunk size
Wenn der vorherige Chunk nicht verwendet wird und der vorherige Chunk eine Größe hat, die von prev_chunk angegeben ist, abweicht:
Fehlermeldung: corrupted size vs. prev_size in fastbins
Überprüfungen während der Suche im Unsorted Bin:
Wenn die Chunkgröß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 vom nächsten Chunk angegebene vorherige Größe 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 Benutzung 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)
Überprüfungen während der Suche im Large Bin (nach Index):
bck->fd-> bk != bck
:
Fehlermeldung: malloc(): corrupted unsorted chunks
Überprüfungen während der Suche im Large Bin (nächstes Größeres):
bck->fd-> bk != bck
:
Fehlermeldung: malloc(): corrupted unsorted chunks2
Überprüfungen während der Verwendung des Top-Chunks:
chunksize(av->top) > av->system_mem
:
Fehlermeldung: malloc(): corrupted top size
tcache_get_n
Überprüfungen in tcache_get_n
:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
Überprüfungen in tcache_thread_shutdown
:
Wenn der Chunk nicht ausgerichtet ist:
Fehlermeldung: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
Überprüfungen in __libc_realloc
:
Wenn der alte Zeiger nicht ausgerichtet ist oder die Größe inkorrekt war:
Fehlermeldung: realloc(): invalid pointer
_int_free
Für weitere Informationen siehe:
freeÜberprü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
Überprüfungen im _int_free
Tcache:
Wenn es mehr Einträge gibt als mp_.tcache_count
:
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
Überprüfungen im _int_free
Fast Bin:
Wenn die Größe des Chunks ungültig ist (zu groß oder zu klein) auslösen:
Fehlermeldung: free(): invalid next size (fast)
Wenn der hinzugefügte Chunk bereits oben im Fast Bin war:
Fehlermeldung: double free or corruption (fasttop)
Wenn die Größe des Chunks oben eine andere Größe als der hinzugefügte Chunk hat:
Fehlermeldung: invalid fastbin entry (free)
_int_free_merge_chunk
Überprüfungen in _int_free_merge_chunk
:
Wenn der Chunk der oberste 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 Benutzung ist, wird versucht zu konsolidieren. Aber, wenn sich die prev_size
von der im vorherigen Chunk angegebenen Größe unterscheidet:
Fehlermeldung: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
Überprüfungen in _int_free_create_chunk
:
Beim Hinzufügen eines Chunks in den unsortierten Bin wird überprüft, ob unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
Fehlermeldung: free(): corrupted unsorted chunks
do_check_malloc_state
Überprüfungen in do_check_malloc_state
:
Bei falsch ausgerichtetem Fast Bin Chunk:
Fehlermeldung: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
Überprüfungen in malloc_consolidate
:
Bei falsch ausgerichtetem Fast Bin Chunk:
Fehlermeldung: malloc_consolidate(): unaligned fastbin chunk detected
Bei falscher Größe des Fast Bin Chunks:
Fehlermeldung: malloc_consolidate(): invalid chunk size
_int_realloc
Überprü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