Fastbin double free
Article pour comprendre & utiliser la double free.
Fastbin
Le fastbin est une liste de chunk free d'une certaine taille. Allant de 0x10 à 0x80.
Voici un schéma de l'état du fastbin :
Pour résumer, le fastbin va permettre si le programme à besoin d'une allocation d'une similaire de pouvoir rapidement re-allouer le chunk.
Double Free
La double free est une vulnérabilité sur le heap. Dans le cas où un développeur oublie de mettre à NULL le pointer vers le chunk lors du free :
Des protections ont été mises en place pour empêcher de pouvoir faire des doubles free du style :
Mais il est possible de faire :
Tcache
La glibc 2.26 a introduit une nouvelle fonctionnalité appelée tcache. Il s'agit d'une liste chaînée qui contient des blocs mémoire qui ont été free, permettant au tcache de stocker des blocs pour chaque taille de bin.
Il s'agit d'un extrait du code de malloc. Avant de mettre un chunk dans le tcache, il va vérifier si il n'y est pas déja.
Le tcache a une taille maximun de 7. Si il y'a un 8 chunk d'une taille similaire qui est free alors il sera mis dans le bins qui lui correspond (Fastbin, largebin ...).
Last updated