Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 527

Heap-Overflow

Geprüft vonCybersecurity entrepreneur & security researcher

Was ist Heap-Overflow?

Heap-OverflowEin Pufferüberlauf, der in dynamisch alloziertem Speicher auftritt und häufig Allokator-Metadaten, Funktionszeiger oder virtuelle Methodentabellen von Objekten beschädigt.


Ein Heap-Overflow schreibt über das Ende eines im Heap allozierten Puffers hinaus und überschreibt dabei benachbarte Chunks oder die Verwaltungs-Metadaten, die von malloc/free, jemalloc, mimalloc oder anderen Allokatoren verwaltet werden. Anders als bei Stack-Overflows gibt es hier keine Rücksprungadresse, die sich direkt kapern ließe; stattdessen beschädigen Angreifer Daten, denen das Programm später vertraut – den Funktionszeiger eines benachbarten Objekts, einen C++-vtable-Zeiger, den Kontrollblock eines Smart Pointers oder die Verkettungszeiger der Freispeicherliste des Allokators, die bei free() verwendet werden (das klassische „unlink"-Primitiv).

Da das Heap-Layout nicht deterministisch ist, hängt die Ausnutzung vom Heap-Grooming / Feng Shui ab: durch gezielte Allokationen und Freigaben wird ein nützliches Ziel unmittelbar hinter dem verwundbaren Puffer platziert. Ein kanonisches Beispiel aus der Praxis ist GHOST (CVE-2015-0235), ein Heap-Overflow in der Funktion __nss_hostname_digits_dots() der glibc, erreichbar über gethostbyname(); Qualys demonstrierte 2015 die vollständige Remote-Code-Ausführung gegen den Exim-Mailserver, und die Schwachstelle bestand still seit glibc 2.2. CVE-2018-4407 zeigte dieselbe Klasse im XNU-Kernel von Apple, aus der Ferne durch ein einziges präpariertes TCP-Paket auslösbar.

flowchart TD
  A[Opferobjekt + verwundbaren Puffer benachbart allozieren] --> B[Heap-Grooming platziert Ziel hinter dem Puffer]
  B --> C[Overflow schreibt über das Pufferende hinaus]
  C --> D{Beschädigtes Ziel}
  D -->|Allokator-Metadaten| E[free unlink -> beliebiger Schreibzugriff]
  D -->|Funktionszeiger / vtable| F[Kontrollfluss umlenken]
  E --> G[Codeausführung]
  F --> G

Die Abwehr kombiniert das Härten des Allokators (Integritätsprüfungen der Metadaten, sicheres Unlinking, Chunk-Isolation, Guard Pages) mit ASLR, CFI, Sandboxing und der Migration zu speichersicheren Sprachen wie Rust. Heap-Overflows bleiben zentral für die Ausnutzung von Browsern, Kerneln und Dokument-Parsern und tauchen häufig in den siegreichen Ketten von Pwn2Own auf.

Beispiele

  1. 01

    GHOST (CVE-2015-0235) – ein Heap-Overflow in gethostbyname der glibc, erreichbar über Exim-Mailserver.

  2. 02

    CVE-2018-4407 – ein Heap-Overflow in den TCP-Optionen des XNU-Kernels, über das Netzwerk auslösbar.

Häufige Fragen

Was ist Heap-Overflow?

Ein Pufferüberlauf, der in dynamisch alloziertem Speicher auftritt und häufig Allokator-Metadaten, Funktionszeiger oder virtuelle Methodentabellen von Objekten beschädigt. Es gehört zur Kategorie Schwachstellen der Cybersicherheit.

Was bedeutet Heap-Overflow?

Ein Pufferüberlauf, der in dynamisch alloziertem Speicher auftritt und häufig Allokator-Metadaten, Funktionszeiger oder virtuelle Methodentabellen von Objekten beschädigt.

Wie schützt man sich gegen Heap-Overflow?

Schutzmaßnahmen gegen Heap-Overflow kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.

Welche anderen Bezeichnungen gibt es für Heap-Overflow?

Übliche alternative Bezeichnungen: Heap-Pufferüberlauf.

Verwandte Begriffe

Siehe auch