Home

Pufferüberlauf

Ein Pufferüberlauf, auch Buffer Overflow genannt, ist ein Sicherheitsproblem in der Informatik, das auftritt, wenn ein Programm mehr Daten in einen festgelegten Speicherpuffer schreibt, als dieser aufnehmen kann. Der Schreibvorgang überschreibt angrenzenden Speicher, was zu unerwartetem Verhalten, Datenkorruption oder Abstürzen führen kann. Pufferüberläufe treten besonders dort auf, wo Speichergrenzen nicht zuverlässig geprüft werden, zum Beispiel beim Kopieren von Strings oder beim Verarbeiten von Benutzereingaben.

Ursachen und Typen umfassen vor allem ungesicherte Speicherzugriffe in Programmiersprachen ohne automatische Grenzkontrollen, wie C oder

Folgen eines Pufferüberlaufs reichen von Abstürzen, Datenverlust bis hin zu Sicherheitslücken, die eine Ausführung von fremdem

Schutzmaßnahmen umfassen sprach- und compilerseitige Grenzkontrollen, speicherverwahrende Techniken und sichere Programmierpraktiken. Dazu gehören automatische Speicherverwaltung in

C++.
Häufige
Ursachen
sind
die
Verwendung
unsicherer
Funktionen
(etwa
das
Kopieren
von
Strings
ohne
Grenzprüfung),
falsche
Größenangaben
oder
Off-by-one-Fehler.
Es
gibt
verschiedene
Varianten,
darunter
stackbasierte
Überläufe
(in
dem
Stackrahmen
gespeicherte
Rücksprungadressen
oder
Variablen
werden
überschrieben)
und
heapbasierte
Überläufe
(auf
dem
Heap
gespeicherte
Datenstrukturen).
Auch
Format-String-Schwachstellen
gehören
zu
verwandten
Problemen,
die
oft
zusammen
mit
Überläufen
auftreten
können.
Code
ermöglichen
können.
Solche
Schwachstellen
werden
häufig
für
Angriffe
genutzt,
die
Kontrolle
über
ein
System
erlangen
oder
Berechtigungen
erhöhen.
sicheren
Sprachen,
Stack-Canaries,
Address
Space
Layout
Randomization
(ASLR),
Data
Execution
Prevention
(DEP/NX)
sowie
sorgfältige
Eingabevalidierung
und
der
Einsatz
sicherer
Bibliotheksfunktionen.