Heap-Exploitation: Use-After-Free und Heap-Spraying
Verstehen Sie die Interna von glibc malloc, Use-After-Free-Bedingungen und Heap-Spray-Techniken.
Heap-Exploitation: Use-After-Free und Heap-Spraying ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Der Heap
Der Heap ist dynamischer Speicher, der zur Laufzeit über malloc()/free()/new/delete reserviert und freigegeben wird. Anders als beim Stack wird das Heap-Layout durch Muster beim Reservieren und Freigeben bestimmt, nicht durch den Aufruf-Stack. Heap-Schwachstellen sind in Browsern, Parsern und Netzwerk-Daemons häufig.
Use-After-Free (UAF)
Eine Use-After-Free-Schwachstelle tritt auf, wenn ein Programm einen Speicherbereich nach dessen Freigabe weiterverwendet. Wird der freigegebene Bereich mit vom Angreifer kontrollierten Daten neu reserviert, arbeitet das Programm nun über den veralteten Zeiger mit Angreiferdaten.
UAF-Beispiel
UAF-Muster:
// Vulnerable C code:
struct Object *obj = malloc(sizeof(*obj));
free(obj);
// Later, attacker causes a new malloc to fill the freed region
// with their data...
obj->method(); // now calls attacker's function pointer!Heap Feng Shui
Heap Feng Shui (auch Heap Grooming genannt) bezeichnet die Technik, den Heap-Allocator so zu beeinflussen, dass Objekte an bestimmten Positionen platziert werden und freigegebener Speicher kontrolliert wiederverwendet werden kann. Der Angreifer formt den Heap, indem er Reservierungen und Freigaben in einer genau festgelegten Reihenfolge auslöst.
Heap-Spraying
Heap-Spraying reserviert große Mengen vom Angreifer kontrollierter Daten (Shellcode und NOP-Sleds) im gesamten Heap. Wenn ein so großer Teil des Heaps gefüllt ist, landet ein fehlerhafter Zeiger mit hoher Wahrscheinlichkeit in den Daten des Angreifers. Diese Technik wird häufig zusammen mit UAF- oder Type-Confusion-Schwachstellen eingesetzt.
// JavaScript heap spray:
var spray = [];
for(var i = 0; i < 100000; i++) {
spray[i] = unescape("%90%90...shellcode...");
}Double Free
Ein Double Free tritt auf, wenn Speicher zweimal freigegeben wird. Die zweite Freigabe beschädigt die Metadaten des Heap-Allocators (Zeiger der Freiliste) und ermöglicht es einem Angreifer möglicherweise zu kontrollieren, wo die nächste Reservierung platziert wird — und dadurch an eine beliebige Adresse zu schreiben.
Heap-Buffer-Overflow
Wie bei Stack-Overflows schreibt ein Heap-Buffer-Overflow über das Ende einer Heap-Reservierung hinaus. Anders als bei Stack-Overflows ist das Ziel typischerweise die Heap-Metadaten (Größe, Vorwärts-/Rückwärtszeiger) oder benachbarte Reservierungen mit Funktionszeigern oder Vtable-Zeigern.
Type Confusion
Type Confusion tritt auf, wenn ein als ein bestimmter Typ reservierter Speicher als ein anderer Typ verwendet wird. Dies kommt häufig in JavaScript-Engines und C++-Code vor. Kann ein Angreifer die Reihenfolge der Reservierungen kontrollieren, kann er die Engine dazu bringen, Angreiferdaten als vertrauenswürdiges Objekt zu behandeln.
Interna von ptmalloc und tcmalloc
Das Verständnis des Heap-Allocators hilft bei der Exploit-Entwicklung. ptmalloc in glibc verwendet Bins (unsortierte, kleine und große) sowie Fastbins. Der tcache (thread-lokaler Cache) ist die erste Quelle für Reservierungen. Exploits zielen häufig auf die Beschädigung von Bins, um zukünftige Reservierungsadressen zu kontrollieren.
Schutzmaßnahmen
Schutzmaßnahmen gegen Heap-Exploitation:
- Heap-Randomisierung (Teil von ASLR) — randomisiert die Heap-Basisadresse
- Safe Unlinking — überprüft Vorwärts-/Rückwärtszeiger vor dem Entfernen aus einer Liste
- Erkennung von tcache poisoning — in glibc 2.32 hinzugefügt
- Pointer Mangling — verschlüsselt gespeicherte Zeiger im tcache
- Speichersichere Sprachen — Rust verhindert UAF bereits zur Kompilierzeit
Browser-Heap-Exploits
Die meisten Browser-0-Days beinhalten Heap-Schwachstellen in JavaScript-Engines (V8, SpiderMonkey). Moderne Browser verwenden mehrstufige Sandbox-Escape-Ketten: Heap-Schwachstelle im Renderer → Ausbruch in den Browser-Prozess → Ausweitung der OS-Berechtigungen. Für jeden Schritt ist eine eigene Technik erforderlich.
Schnelltest: Heap-Exploitation
Welche Schwachstelle ermöglicht es einem Angreifer, die Programmausführung zu kontrollieren, indem ein veralteter Zeiger auf Speicher verwendet wird, der bereits freigegeben und mit Angreiferdaten neu reserviert wurde?
Zusammenfassung der Lektion
Heap-Schwachstellen — UAF, Double Free, Heap-Overflow und Type Confusion — nutzen eine fehlerhafte Verwaltung des dynamischen Speichers aus. Use-After-Free ist die heutzutage am weitesten verbreitete Exploit-Klasse. Heap-Spraying maximiert die Wahrscheinlichkeit, auf Angreiferdaten zu treffen. Schutzmaßnahmen: ASLR, Safe Unlinking und Pointer Mangling. Speichersichere Sprachen wie Rust beseitigen diese Klassen vollständig.
Häufig gestellte Fragen
Ist die Lektion „Heap-Exploitation: Use-After-Free und Heap-Spraying“ kostenlos?
Ja — der vollständige Text von „Heap-Exploitation: Use-After-Free und Heap-Spraying“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Heap-Exploitation: Use-After-Free und Heap-Spraying“?
Verstehen Sie die Interna von glibc malloc, Use-After-Free-Bedingungen und Heap-Spray-Techniken. Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Heap-Exploitation: Use-After-Free und Heap-Spraying“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Stack Buffer Overflows
- Return-Oriented Programming (ROP)
- Format-String-Schwachstellen
- Heap-Exploitation: Use-After-Free und Heap-Spraying