Aller au contenu
uencoder

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++

Outils associés

References