Heap Functions Security Checks
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες πληροφορίες ελέγξτε:
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)
Για περισσότερες πληροφορίες ελέγξτε:
malloc & sysmallocΈλεγχοι κατά την αναζήτηση γρήγορης bin:
Αν το κομμάτι είναι κακώς ευθυγραμμισμένο:
Μήνυμα σφάλματος: malloc(): unaligned fastbin chunk detected 2
Αν το μπροστινό κομμάτι είναι κακώς ευθυγραμμισμένο:
Μήνυμα σφάλματος: malloc(): unaligned fastbin chunk detected
Αν το επιστρεφόμενο κομμάτι έχει μέγεθος που δεν είναι σωστό λόγω του δείκτη του στη γρήγορη bin:
Μήνυμα σφάλματος: malloc(): memory corruption (fast)
Αν οποιοδήποτε κομμάτι που χρησιμοποιείται για να γεμίσει το tcache είναι κακώς ευθυγραμμισμένο:
Μήνυμα σφάλματος: malloc(): unaligned fastbin chunk detected 3
Έλεγχοι κατά την αναζήτηση μικρής bin:
Αν victim->bk->fd != victim
:
Μήνυμα σφάλματος: malloc(): smallbin double linked list corrupted
Έλεγχοι κατά την ενοποίηση που πραγματοποιούνται για κάθε κομμάτι γρήγορης bin:
Αν το κομμάτι είναι κακώς ευθυγραμμισμένο ενεργοποιήστε:
Μήνυμα σφάλματος: malloc_consolidate(): unaligned fastbin chunk detected
Αν το κομμάτι έχει διαφορετικό μέγεθος από αυτό που θα έπρεπε λόγω του δείκτη του:
Μήνυμα σφάλματος: malloc_consolidate(): invalid chunk size
Αν το προηγούμενο κομμάτι δεν είναι σε χρήση και το προηγούμενο κομμάτι έχει μέγεθος διαφορετικό από αυτό που υποδεικνύεται από το prev_chunk:
Μήνυμα σφάλματος: corrupted size vs. prev_size in fastbins
Έλεγχοι κατά την αναζήτηση αταξινόμητης bin:
Αν το μέγεθος του κομματιού είναι περίεργο (πολύ μικρό ή πολύ μεγάλο):
Μήνυμα σφάλματος: 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 του θα πρέπει να δείχνει πάντα στη δομή arena.
Αν το επόμενο κομμάτι δεν υποδεικνύει ότι το προηγούμενο είναι σε χρήση:
Μήνυμα σφάλματος: 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)
Έλεγχοι κατά την αναζήτηση μεγάλης bin (κατά δείκτη):
bck->fd-> bk != bck
:
Μήνυμα σφάλματος: malloc(): corrupted unsorted chunks
Έλεγχοι κατά την αναζήτηση μεγάλης bin (επόμενη μεγαλύτερη):
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
Για περισσότερες πληροφορίες ελέγξτε:
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
γρήγορη bin:
Αν το μέγεθος του κομματιού είναι μη έγκυρο (πολύ μεγάλο ή πολύ μικρό) ενεργοποιήστε:
Μήνυμα σφάλματος: free(): invalid next size (fast)
Αν το προστιθέμενο κομμάτι ήταν ήδη το κορυφαίο της γρήγορης bin:
Μήνυμα σφάλματος: 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
:
Προσθέτοντας ένα κομμάτι στην αταξινόμητη bin, ελέγξτε αν unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
Μήνυμα σφάλματος: free(): corrupted unsorted chunks
do_check_malloc_state
Έλεγχοι στο do_check_malloc_state
:
Αν το κομμάτι γρήγορης bin είναι κακώς ευθυγραμμισμένο:
Μήνυμα σφάλματος: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
Έλεγχοι στο malloc_consolidate
:
Αν το κομμάτι γρήγορης bin είναι κακώς ευθυγραμμισμένο:
Μήνυμα σφάλματος: malloc_consolidate(): unaligned fastbin chunk detected
Αν το μέγεθος του κομματιού γρήγορης bin είναι λανθασμένο:
Μήνυμα σφάλματος: malloc_consolidate(): invalid chunk size
_int_realloc
Έλεγχοι στο _int_realloc
:
Το μέγεθος είναι πολύ μεγάλο ή πολύ μικρό:
Μήνυμα σφάλματος: realloc(): invalid old size
Το μέγεθος του επόμενου κομματιού είναι πολύ μεγάλο ή πολύ μικρό:
Μήνυμα σφάλματος: realloc(): invalid next size
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)