Viren in PDF-, JPG- und DOC-Dateien

Was ist ein Pufferüberlauf?

von - 25.06.2014
Programme legen die Daten, die sie gerade verarbeiten, im Arbeitsspeicher ab. Dazu reservieren sie meist mehrere und vor allem unterschiedlich große Bereiche des Arbeitsspeichers, sogenannte Puffer. Jeder Puffer ist dabei für unterschiedliche Daten gedacht.
Zero-Day-Patches: Die meisten Sicherheitslücken werden sofort geschlossen: 84 Prozent der im Jahr 2012 entdeckten Sicherheitslücken bei den 50 beliebtesten Programmen wurden innerhalb von 24 Stunden nach Entdeckung geschlossen. 2011 schafften die Herstell
Zero-Day-Patches: Die meisten Sicherheitslücken werden sofort geschlossen: 84 Prozent der im Jahr 2012 entdeckten Sicherheitslücken bei den 50 beliebtesten Programmen wurden innerhalb von 24 Stunden nach Entdeckung geschlossen. 2011 schafften die Hersteller das nur bei 72 Prozent.
(Quelle: Secunia)
Die Kapazität eines Puffers ist begrenzt. Denn sowohl das Betriebssystem als auch andere Programme benötigen Teile des Arbeitsspeichers für ihre Daten, weshalb ein Programm nicht beliebig viele und beliebig große Puffer anlegen kann. Das Programm legt stattdessen Puffer so an, dass die zwischenzuspeichernden Daten genau hineinpassen.
Will das Programm den Titel eines Word-Dokuments ablegen und darf dieser bis zu 256 Zeichen lang sein, reserviert das Programm für den Puffer auch nur einen Speicherbereich, in den bis zu 256 Zeichen hineinpassen.
Die Speicherbereiche sind aber nur logisch und nicht physisch voneinander getrennt. Der Puffer hat lediglich einen Startpunkt, aber kein Ende. Er beginnt also an einem bestimmten Punkt im Arbeitsspeicher und ist dann so lang, wie vom Programm festgelegt. Das Programm muss deshalb darauf achten, dass es auch nur so viele Daten liest und in den Puffer hineinschreibt, wie in den Puffer hineinpassen.
Bilderstrecke
9 Bilder
McAfee Internet Security 2014
Trend Micro Titanium Maximum Security
G Data Internet Security 2014
AVG Internet Security 2014

Schutz vor Viren & Co.:

Sicherheitspakete im Test

>>
Schreibt das Programm mehr Daten in den Puffer als vorgesehen, dann kommt es zu einem Pufferüberlauf, englisch Buffer Overflow. Die in den Puffer geschriebenen Daten laufen in andere Speicherbereiche über, in denen sie nichts zu suchen haben.

Warum ist ein Pufferüberlauf gefährlich?

Programme bestehen aus vielen unterschiedlichen Programmteilen. Diese werden nicht von Anfang bis Ende durchlaufen, sondern es werden immer nur die Programmteile ausgeführt, die für die aktuelle Berechnung gerade notwendig sind. Solche Unterprogramme drucken Text fett, speichern ein Dokument oder schließen eine Datei und öffnen eine neue. Programme springen zwischen den Unterprogrammen hin und her.
Wurde ein Unter­programm ausgeführt, dann springt das Programm wieder zurück zum Ausgangspunkt. Damit es nicht die Orientierung verliert und weiß, wo es vorher war, legt es auf einem Arbeitsstapel Rücksprungadressen ab. Der Arbeitsstapel, englisch Stack, ist ebenfalls im Arbeitsspeicher abgelegt. Auf diesen Arbeitsstapel hat eigentlich nur das Programm selbst Zugriff.
Außer es kommt zu einem Pufferüberlauf, bei dem angrenzende Speicher­bereiche mit Daten überschrieben werden. Der Überlauf kann so groß sein, dass nicht nur die im Puffer gespeicherten Daten überschrieben werden, sondern auch die auf dem Arbeitsstapel abgelegten Rücksprungadressen. Das Programm kommt durcheinander und stürzt bestenfalls nur ab. Exploits nutzen diese Verwirrung hingegen aus.
Verwandte Themen