hacktricks/binary-exploitation/heap/heap-functions-security-checks.md

6.1 KiB

Controlli di sicurezza delle funzioni di heap

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Questa funzione rimuove un chunk da una lista doppiamente collegata. I controlli comuni garantiscono che la struttura della lista collegata rimanga consistente durante lo scollegamento dei chunk.

  • Controlli di coerenza:
  • Verifica se P->fd->bk == P e P->bk->fd == P.
  • Messaggio di errore: corrupted double-linked list

_int_malloc

Questa funzione è responsabile dell'allocazione di memoria dall'heap. I controlli qui garantiscono che la memoria non venga corrotta durante l'allocazione.

  • Controllo della dimensione di Fastbin:
  • Quando si rimuove un chunk da un fastbin, assicurarsi che la dimensione del chunk sia nell'intervallo del fastbin.
  • Messaggio di erroro: malloc(): memory corruption (fast)
  • Controllo di coerenza di Smallbin:
  • Quando si rimuove un chunk da un smallbin, assicurarsi che i collegamenti precedente e successivo nella lista doppiamente collegata siano coerenti.
  • Messaggio di errore: malloc(): smallbin double linked list corrupted
  • Controllo dell'intervallo di memoria di Unsorted Bin:
  • Assicurarsi che la dimensione dei chunk nell'unsorted bin sia compresa nei limiti minimi e massimi.
  • Messaggio di errore: malloc(): memory corruption | malloc(): invalid next size (unsorted)
  • Controllo di coerenza di Unsorted Bin (Primo Scenario):
  • Quando si inserisce un chunk di resto nell'unsorted bin, controllare se unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Messaggio di errore: malloc(): corrupted unsorted chunks
  • Controllo di coerenza di Unsorted Bin (Secondo Scenario):
  • Come il controllo precedente, ma attivato quando si inserisce dopo aver diviso un chunk veloce o piccolo.
  • Messaggio di errore: malloc(): corrupted unsorted chunks 2

_int_free

Questa funzione libera la memoria precedentemente allocata. I controlli qui aiutano a garantire una corretta deallocazione della memoria e a prevenire la corruzione della memoria.

  • Controllo dei limiti del puntatore:
  • Assicurarsi che il puntatore liberato non si avvolga attorno alla memoria.
  • Messaggio di errore: free(): invalid pointer
  • Controllo della dimensione:
  • Assicurarsi che la dimensione del chunk liberato sia almeno MINSIZE o un multiplo di MALLOC_ALIGNMENT.
  • Messaggio di errore: free(): invalid size
  • Controllo della dimensione di Fastbin:
  • Per i chunk fastbin, assicurarsi che la dimensione del chunk successivo sia nei limiti minimi e massimi.
  • Messaggio di errore: free(): invalid next size (fast)
  • Controllo di Double Free di Fastbin:
  • Quando si inserisce un chunk in un fastbin, assicurarsi che il chunk in testa non sia lo stesso di quello inserito.
  • Messaggio di errore: double free or corruption (fasttop)
  • Controllo di coerenza di Fastbin:
  • Quando si inserisce in un fastbin, assicurarsi che le dimensioni del chunk in testa e del chunk inserito siano uguali.
  • Messaggio di errore: invalid fastbin entry (free)
  • Controllo di coerenza del Top Chunk:
  • Per i chunk non fastbin, assicurarsi che il chunk non sia lo stesso del top chunk.
  • Messaggio di errore: double free or corruption (top)
  • Controllo dei limiti di memoria:
  • Assicurarsi che il chunk successivo per memoria sia nei limiti dell'arena.
  • Messaggio di errore: double free or corruption (out)
  • Controllo del bit Prev_inuse:
  • Assicurarsi che il bit precedente-in-uso nel chunk successivo sia contrassegnato.
  • Messaggio di errore: double free or corruption (!prev)
  • Controllo della dimensione normale:
  • Assicurarsi che la dimensione del chunk successivo sia nei range validi.
  • Messaggio di errore: free(): invalid next size (normal)
  • Controllo di coerenza di Unsorted Bin:
  • Quando si inserisce un chunk fuso nell'unsorted bin, controllare se unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Messaggio di errore: free(): corrupted unsorted chunks
Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks: