Fastbin Dup — Double-free sur fastbins
★★★★★
Principe
L'attaque fastbin dup exploite un double-free sur un chunk de taille fastbin pour insérer deux fois le même chunk dans la liste, permettant ensuite d'allouer un chunk à une adresse arbitraire (ex: au-dessus d'une cible).
Déroulé
a = malloc(0x40); b = malloc(0x40)
free(a); free(b); free(a) # double free (b entre les deux
# contourne le check 'double free')
# La fastbin contient : a -> b -> a
x = malloc(0x40) # renvoie a
# écrire un faux fd dans a pour pointer vers la cible
*x = target_addr - 0x10
malloc(0x40); malloc(0x40)
chunk = malloc(0x40) # renvoie target_addr Contraintes & parade
Le faux chunk doit passer le check de taille (champ size cohérent avec la fastbin). glibc moderne ajoute tcache (à remplir d'abord) et le pointeur key anti-double-free, ainsi que le safe-linking (chiffrement des fd).