Vérifications de sécurité des fonctions de tas
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
unlink
Pour plus d'infos, consultez :
Voici un résumé des vérifications effectuées :
- Vérifiez si la taille indiquée du morceau est la même que le
prev_size
indiqué dans le morceau suivant - Message d'erreur :
corrupted size vs. prev_size
- Vérifiez également que
P->fd->bk == P
etP->bk->fw == P
- Message d'erreur :
corrupted double-linked list
- Si le morceau n'est pas petit, vérifiez que
P->fd_nextsize->bk_nextsize == P
etP->bk_nextsize->fd_nextsize == P
- Message d'erreur :
corrupted double-linked list (not small)
_int_malloc
Pour plus d'infos, consultez :
- Vérifications lors de la recherche dans le fast bin :
- Si le morceau est mal aligné :
- Message d'erreur :
malloc(): unaligned fastbin chunk detected 2
- Si le morceau suivant est mal aligné :
- Message d'erreur :
malloc(): unaligned fastbin chunk detected
- Si le morceau retourné a une taille incorrecte à cause de son index dans le fast bin :
- Message d'erreur :
malloc(): memory corruption (fast)
- Si un morceau utilisé pour remplir le tcache est mal aligné :
- Message d'erreur :
malloc(): unaligned fastbin chunk detected 3
- Vérifications lors de la recherche dans le small bin :
- Si
victim->bk->fd != victim
: - Message d'erreur :
malloc(): smallbin double linked list corrupted
- Vérifications lors de la consolidation effectuées pour chaque morceau de fast bin :
- Si le morceau est mal aligné, déclenchez :
- Message d'erreur :
malloc_consolidate(): unaligned fastbin chunk detected
- Si le morceau a une taille différente de celle qu'il devrait avoir à cause de l'index dans lequel il se trouve :
- Message d'erreur :
malloc_consolidate(): invalid chunk size
- Si le morceau précédent n'est pas utilisé et que le morceau précédent a une taille différente de celle indiquée par prev_chunk :
- Message d'erreur :
corrupted size vs. prev_size in fastbins
- Vérifications lors de la recherche dans le unsorted bin :
- Si la taille du morceau est étrange (trop petite ou trop grande) :
- Message d'erreur :
malloc(): invalid size (unsorted)
- Si la taille du morceau suivant est étrange (trop petite ou trop grande) :
- Message d'erreur :
malloc(): invalid next size (unsorted)
- Si la taille précédente indiquée par le morceau suivant diffère de la taille du morceau :
- Message d'erreur :
malloc(): mismatching next->prev_size (unsorted)
- Si
victim->bck->fd != victim
ouvictim->fd != av (arena)
: - Message d'erreur :
malloc(): unsorted double linked list corrupted
- Comme nous vérifions toujours le dernier, son fd devrait toujours pointer vers la structure arena.
- Si le morceau suivant n'indique pas que le précédent est en cours d'utilisation :
- Message d'erreur :
malloc(): invalid next->prev_inuse (unsorted)
- Si
fwd->bk_nextsize->fd_nextsize != fwd
: - Message d'erreur :
malloc(): largebin double linked list corrupted (nextsize)
- Si
fwd->bk->fd != fwd
: - Message d'erreur :
malloc(): largebin double linked list corrupted (bk)
- Vérifications lors de la recherche dans le large bin (par index) :
bck->fd-> bk != bck
:- Message d'erreur :
malloc(): corrupted unsorted chunks
- Vérifications lors de la recherche dans le large bin (suivant plus grand) :
bck->fd-> bk != bck
:- Message d'erreur :
malloc(): corrupted unsorted chunks2
- Vérifications lors de l'utilisation du Top chunk :
chunksize(av->top) > av->system_mem
:- Message d'erreur :
malloc(): corrupted top size
tcache_get_n
- Vérifications dans
tcache_get_n
: - Si le morceau est mal aligné :
- Message d'erreur :
malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
- Vérifications dans
tcache_thread_shutdown
: - Si le morceau est mal aligné :
- Message d'erreur :
tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
- Vérifications dans
__libc_realloc
: - Si l'ancien pointeur est mal aligné ou si la taille était incorrecte :
- Message d'erreur :
realloc(): invalid pointer
_int_free
Pour plus d'infos, consultez :
- Vérifications au début de
_int_free
: - Le pointeur est aligné :
- Message d'erreur :
free(): invalid pointer
- Taille supérieure à
MINSIZE
et taille également alignée : - Message d'erreur :
free(): invalid size
- Vérifications dans
_int_free
tcache : - S'il y a plus d'entrées que
mp_.tcache_count
: - Message d'erreur :
free(): too many chunks detected in tcache
- Si l'entrée n'est pas alignée :
- Message d'erreur :
free(): unaligned chunk detected in tcache 2
- Si le morceau libéré avait déjà été libéré et est présent comme morceau dans le tcache :
- Message d'erreur :
free(): double free detected in tcache 2
- Vérifications dans
_int_free
fast bin : - Si la taille du morceau est invalide (trop grande ou trop petite), déclenchez :
- Message d'erreur :
free(): invalid next size (fast)
- Si le morceau ajouté était déjà le haut du fast bin :
- Message d'erreur :
double free or corruption (fasttop)
- Si la taille du morceau en haut a une taille différente de celle du morceau que nous ajoutons :
- Message d'erreur :
invalid fastbin entry (free)
_int_free_merge_chunk
- Vérifications dans
_int_free_merge_chunk
: - Si le morceau est le top chunk :
- Message d'erreur :
double free or corruption (top)
- Si le morceau suivant est en dehors des limites de l'arène :
- Message d'erreur :
double free or corruption (out)
- Si le morceau n'est pas marqué comme utilisé (dans le prev_inuse du morceau suivant) :
- Message d'erreur :
double free or corruption (!prev)
- Si le morceau suivant a une taille trop petite ou trop grande :
- Message d'erreur :
free(): invalid next size (normal)
- Si le morceau précédent n'est pas utilisé, il essaiera de consolider. Mais, si le
prev_size
diffère de la taille indiquée dans le morceau précédent : - Message d'erreur :
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
- Vérifications dans
_int_free_create_chunk
: - En ajoutant un morceau dans le unsorted bin, vérifiez si
unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
: - Message d'erreur :
free(): corrupted unsorted chunks
do_check_malloc_state
- Vérifications dans
do_check_malloc_state
: - Si le morceau de fast bin est mal aligné :
- Message d'erreur :
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
- Vérifications dans
malloc_consolidate
: - Si le morceau de fast bin est mal aligné :
- Message d'erreur :
malloc_consolidate(): unaligned fastbin chunk detected
- Si la taille du morceau de fast bin est incorrecte :
- Message d'erreur :
malloc_consolidate(): invalid chunk size
_int_realloc
- Vérifications dans
_int_realloc
: - La taille est trop grande ou trop petite :
- Message d'erreur :
realloc(): invalid old size
- La taille du morceau suivant est trop grande ou trop petite :
- Message d'erreur :
realloc(): invalid next size
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.