CyberGlossary

Vulnérabilités

Double libération

Aussi appelé: Vulnérabilité double-free

Définition

Bug de sûreté mémoire où le même bloc du tas est libéré deux fois, corrompant les métadonnées d'allocateur et permettant souvent l'exécution de code arbitraire.

Une double libération survient lorsque free()/delete est appelé plus d'une fois sur le même pointeur. Les listes libres ou bins de l'allocateur deviennent incohérents, ce qui permet à l'attaquant de faire renvoyer par une allocation ultérieure une mémoire qu'il influence ou superposée à des objets vivants — une primitive menant à des écritures arbitraires et à l'exécution de code. Référencé sous CWE-415, ce bug coexiste souvent avec des UAF et double-fetch. Défenses : modèles de propriété unique (RAII, smart pointers), mise à NULL après libération, allocateurs durcis détectant le double-free (protection tcache de glibc, scudo), tests AddressSanitizer et langages memory-safe.

Exemples

  • CVE-2015-1322 : double-free du tcache glibc conduisant à une corruption de tas.
  • CVE-2019-19377 : double-free dans btrfs Linux déclenché par des images malformées.

Termes liés