CyberGlossary

Vulnérabilités

Fuite mémoire

Aussi appelé: Fuite de ressources

Définition

Défaut où la mémoire qui n'est plus nécessaire n'est pas rendue à l'allocateur, épuisant progressivement la mémoire disponible et dégradant ou faisant planter le système.

Une fuite mémoire (CWE-401) survient lorsqu'un programme alloue de la mémoire et perd toutes les références vers celle-ci sans la libérer. Au fil du temps, le working set du processus grossit, les performances chutent, le swap s'emballe et l'OS finit par tuer le processus ou refuser de nouvelles requêtes. La plupart des fuites sont un problème de fiabilité, mais peuvent devenir un problème de sécurité : un service de longue durée exposé à des déclencheurs contrôlés par l'attaquant devient un amplificateur de déni de service. Cela inclut aussi les objets noyau, descripteurs, sockets ou ressources GPU non libérés. Défenses : profilage (Valgrind, ASan/LSan, heaptrack), discipline de propriété (RAII, smart pointers), tests de charge continus et GC au niveau du langage. La « fuite mémoire » au sens cryptographique (divulgation du contenu) est plus correctement appelée divulgation d'information.

Exemples

  • Serveur web de longue durée dont les allocations par requête ne sont jamais libérées.
  • Module noyau oubliant de libérer des buffers skb et drainant la mémoire système.

Termes liés