CyberGlossary

Schwachstellen

Speicherleck

Auch bekannt als: Ressourcenleck

Definition

Defekt, bei dem nicht mehr benötigter Speicher nicht an den Allokator zurückgegeben wird, sodass Ressourcen erschöpft werden und das System Leistung verliert oder abstürzt.

Ein Speicherleck (CWE-401) entsteht, wenn ein Programm Speicher allokiert und alle Referenzen darauf verliert, ohne ihn freizugeben. Mit der Zeit wächst das Working Set, die Performance sinkt, Swap wird strapaziert, und schließlich beendet das OS den Prozess oder weist neue Arbeit ab. Die meisten Lecks sind Zuverlässigkeitsprobleme; sie können jedoch zu Sicherheitsfragen werden: Lang laufende Dienste mit angreifergesteuerten Triggerpunkten werden zu DoS-Verstärkern. Lecks umfassen auch nicht freigegebene Kernel-Objekte, Filedeskriptoren, Sockets oder GPU-Ressourcen. Abwehr: Profiling (Valgrind, ASan/LSan, heaptrack), Besitzdisziplin (RAII, Smart Pointers), kontinuierliche Lasttests und GC-Sprachen. Ein „Memory Leak" im kryptografischen Sinn (Aufdecken von Speicherinhalt) ist eher eine Informationsoffenlegung.

Beispiele

  • Langlaufender Webserver, dessen Per-Request-Allokationen nie freigegeben werden.
  • Kernel-Modul, das skb-Puffer nicht freigibt und Systemspeicher verbraucht.

Verwandte Begriffe