Double Free
Un double free consiste à appeler free deux fois sur le même pointeur, corrompant les métadonnées du tas et pouvant permettre des écritures arbitraires ou des plantages.
Objectif
Comprendre les dégâts qu'un double free inflige au gestionnaire de tas et ses défenses ; un défaut classique de sécurité mémoire.
Mécanisme
Au deuxième free du même pointeur, le gestionnaire du tas réinsère le bloc déjà libéré dans la liste libre, créant des cycles ou des blocs chevauchants, si bien qu'un malloc ultérieur peut renvoyer de la mémoire chevauchante. Défenses : mettre le pointeur à NULL, comptage de références.
Cas d’usage
- Analyse de sécurité du tas
- Audit de gestion mémoire
- Sécurité C/C++