Er entsteht häufig durch fehlende oder falsche Längenprüfungen in Sprachen, die direkten Speicherzugriff erlauben. Die Ergebnisse reichen von beschädigten Daten und Abstürzen bis hin zu — unter bestimmten Bedingungen — unbefugter Codeausführung.
Puffer können auf dem Stack, dem Heap oder anderen Speicherbereichen liegen, und die Schwäche kann eine unsichere Kopie, eine falsche Größenberechnung oder einen Out-of-bounds Write betreffen. Die überschriebene Stelle, die Angreiferkontrolle, die Plattform und Laufzeitschutzmaßnahmen prägen Ausnutzbarkeit und Folgen.
Wichtigste Punkte
GrundursachenreduktionWo machbar speichersichere Sprachen und Schnittstellen bevorzugen, Längen und Ganzzahlberechnungen validieren, unbegrenzte Operationen vermeiden und das Zusammenwirken mit nativen oder anderweitig speicherunsicheren Komponenten prüfen.
VerifikationFokussiertes Code Review, statische Analyse, Compiler-Diagnosen, Sanitizer, Fuzzing und Regressionstests nutzen, um Fehler zu finden und zu bestätigen, dass Korrekturen die zugrunde liegende Fehlerklasse abdecken.
LaufzeitschichtenCompiler- und Betriebssystemschutz wie Canaries, nicht ausführbarer Speicher und Adresszufälligkeit kann manche Ausnutzung erschweren, während Isolation und Least Privilege die Folgen einengen können.
Wichtige EinschränkungEin Buffer Overflow erlaubt nicht automatisch Codeausführung; er kann auch nur Daten beschädigen oder einen Prozess beenden. Laufzeit-Mitigationen sind Defense in Depth, kein Ersatz für das Entfernen der fehlerhaften Speicheroperation.