Heap Functions Security Checks
Impara e pratica l'hacking di AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'hacking di GCP:
HackTricks Training GCP Red Team Expert (GRTE)
unlink
Per ulteriori informazioni controlla:
unlinkQuesto è un riassunto dei controlli eseguiti:
Controlla se la dimensione indicata del chunk è la stessa di
prev_size
indicata nel chunk successivoMessaggio di errore:
dimensione danneggiata rispetto a prev_size
Controlla anche che
P->fd->bk == P
eP->bk->fw == P
Messaggio di errore:
lista doppiamente collegata danneggiata
Se il chunk non è piccolo, controlla che
P->fd_nextsize->bk_nextsize == P
eP->bk_nextsize->fd_nextsize == P
Messaggio di errore:
lista doppiamente collegata danneggiata (non piccola)
_int_malloc
Per ulteriori informazioni controlla:
malloc & sysmallocControlli durante la ricerca del fast bin:
Se il chunk è non allineato:
Messaggio di errore:
malloc(): rilevato chunk fastbin non allineato 2
Se il chunk successivo è non allineato:
Messaggio di errore:
malloc(): rilevato chunk fastbin non allineato
Se il chunk restituito ha una dimensione non corretta a causa del suo indice nel fast bin:
Messaggio di errore:
malloc(): corruzione della memoria (veloce)
Se un qualsiasi chunk utilizzato per riempire il tcache è non allineato:
Messaggio di errore:
malloc(): rilevato chunk fastbin non allineato 3
Controlli durante la ricerca del small bin:
Se
victim->bk->fd != victim
:Messaggio di errore:
malloc(): lista doppiamente collegata smallbin danneggiata
Controlli durante la consolidazione eseguiti per ogni chunk del fast bin:
Se il chunk è non allineato attiva:
Messaggio di errore:
malloc_consolidate(): rilevato chunk fastbin non allineato
Se il chunk ha una dimensione diversa da quella che dovrebbe a causa dell'indice in cui si trova:
Messaggio di errore:
malloc_consolidate(): dimensione del chunk non valida
Se il chunk precedente non è in uso e il chunk precedente ha una dimensione diversa da quella indicata da prev_chunk:
Messaggio di errore:
dimensione danneggiata rispetto a prev_size in fastbins
Controlli durante la ricerca del unsorted bin:
Se la dimensione del chunk è strana (troppo piccola o troppo grande):
Messaggio di errore:
malloc(): dimensione non valida (non ordinata)
Se la dimensione del chunk successivo è strana (troppo piccola o troppo grande):
Messaggio di errore:
malloc(): dimensione successiva non valida (non ordinata)
Se la dimensione precedente indicata dal chunk successivo differisce dalla dimensione del chunk:
Messaggio di errore:
malloc(): dimensione next->prev non corrispondente (non ordinata)
Se non
victim->bck->fd == victim
o nonvictim->fd == av (arena)
:Messaggio di errore:
malloc(): lista doppiamente collegata non ordinata danneggiata
Poiché stiamo sempre controllando l'ultimo, il suo fd dovrebbe puntare sempre alla struttura arena.
Se il chunk successivo non indica che il precedente è in uso:
Messaggio di errore:
malloc(): next->prev_inuse non valido (non ordinato)
Se
fwd->bk_nextsize->fd_nextsize != fwd
:Messaggio di errore:
malloc(): lista doppiamente collegata largebin danneggiata (nextsize)
Se
fwd->bk->fd != fwd
:Messaggio di errore:
malloc(): lista doppiamente collegata largebin danneggiata (bk)
Controlli durante la ricerca del large bin (per indice):
bck->fd-> bk != bck
:Messaggio di errore:
malloc(): chunk non ordinati corrotti
Controlli durante la ricerca del large bin (successivo più grande):
bck->fd-> bk != bck
:Messaggio di errore:
malloc(): chunk non ordinati corrotti2
Controlli durante l'uso del Top chunk:
chunksize(av->top) > av->system_mem
:Messaggio di errore:
malloc(): dimensione top corrotta
tcache_get_n
tcache_get_n
Controlli in
tcache_get_n
:Se il chunk è non allineato:
Messaggio di errore:
malloc(): rilevato chunk tcache non allineato
tcache_thread_shutdown
tcache_thread_shutdown
Controlli in
tcache_thread_shutdown
:Se il chunk è non allineato:
Messaggio di errore:
tcache_thread_shutdown(): rilevato chunk tcache non allineato
__libc_realloc
__libc_realloc
Controlli in
__libc_realloc
:Se il vecchio puntatore è non allineato o la dimensione era incorretta:
Messaggio di errore:
realloc(): puntatore non valido
_int_free
_int_free
Per ulteriori informazioni controlla:
freeControlli all'inizio di
_int_free
:Il puntatore è allineato:
Messaggio di errore:
free(): puntatore non valido
Dimensione maggiore di
MINSIZE
e dimensione anche allineata:Messaggio di errore:
free(): dimensione non valida
Controlli in
_int_free
tcache:Se ci sono più voci di
mp_.tcache_count
:Messaggio di errore:
free(): troppi chunk rilevati nel tcache
Se l'entry non è allineata:
Messaggio di errore:
free(): rilevato chunk non allineato nel tcache 2
Se il chunk liberato era già stato liberato e è presente come chunk nel tcache:
Messaggio di errore:
free(): doppia liberazione rilevata nel tcache 2
Controlli in
_int_free
fast bin:Se la dimensione del chunk è non valida (troppo grande o piccola) attiva:
Messaggio di errore:
free(): dimensione successiva non valida (veloce)
Se il chunk aggiunto era già in cima al fast bin:
Messaggio di errore:
doppia liberazione o corruzione (fasttop)
Se la dimensione del chunk in cima ha una dimensione diversa dal chunk che stiamo aggiungendo:
Messaggio di errore:
voce fastbin non valida (libera)
_int_free_merge_chunk
_int_free_merge_chunk
Controlli in
_int_free_merge_chunk
:Se il chunk è il chunk superiore:
Messaggio di errore:
double free or corruption (top)
Se il chunk successivo è al di fuori dei limiti dell'arena:
Messaggio di errore:
double free or corruption (out)
Se il chunk non è contrassegnato come in uso (nel prev_inuse del chunk successivo):
Messaggio di errore:
double free or corruption (!prev)
Se il chunk successivo ha una dimensione troppo piccola o troppo grande:
Messaggio di errore:
free(): invalid next size (normal)
Se il chunk precedente non è in uso, cercherà di consolidare. Ma, se la
prev_size
differisce dalla dimensione indicata nel chunk precedente:Messaggio di errore:
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunk
Controlli in
_int_free_create_chunk
:Aggiungendo un chunk nel bin non ordinato, controlla se
unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:Messaggio di errore:
free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_state
Controlli in
do_check_malloc_state
:Se il chunk del bin veloce non è allineato correttamente:
Messaggio di errore:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidate
Controlli in
malloc_consolidate
:Se il chunk del bin veloce non è allineato correttamente:
Messaggio di errore:
malloc_consolidate(): unaligned fastbin chunk detected
Se la dimensione del chunk del bin veloce non è corretta:
Messaggio di errore:
malloc_consolidate(): invalid chunk size
_int_realloc
_int_realloc
Controlli in
_int_realloc
:La dimensione è troppo grande o troppo piccola:
Messaggio di errore:
realloc(): invalid old size
La dimensione del chunk successivo è troppo grande o troppo piccola:
Messaggio di errore:
realloc(): invalid next size
Last updated