Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer
Viele der aktuellen Exploits nutzen einen so genannten Buffer Overflow als Angriffsvektor. Wir beschreiben, wie ein Buffer Overflow entsteht, wie er sich auswirkt und wie Angreifer ihn ausnutzen können.

Jeder, der sich mit der Sicherheit von Computersystemen beschäftigt, stolpert über kurz oder lang über das Wort "Buffer Overflow". Der Begriff beschreibt eines der grundlegenden Probleme, die sich Dritte für einen Angriff auf ein Rechnersystem zu Nutze machen: Was aber steckt genau dahinter? In diesem Beitrag erfahren Sie alles, was man über Buffer Overflows wissen muss: wie sie entstehen, warum sie nicht verschwinden, wie Angreifer sie ausnutzen und welche Konsequenzen das hat.

Die Bezeichnung "Buffer Overflow" stammt aus der Programmierung und bezeichnet im Wesentlichen einen Programmfehler, bei dem ein Programmierer für bestimmte Daten weniger Speicher zur Verfügung stellt, als tatsächlich benötigt wird. Kommen die unerwartet vielen Daten an, so ist der zur Verfügung gestellte Puffer nicht ausreichend groß: Er läuft über.

Dieser Zustand kann für einen Einbruch ausgenutzt werden. Um zu verstehen wie, braucht man ein paar kleine Programmbeispiele. Die folgenden Beispiele sind dabei "C"-ähnlich beziehungsweise an x86-Assembler angelehnt.

Der Einstieg: Variablen

Zunächst muss man wissen, wie Daten in Variablen gespeichert werden. Bei einer Variablen handelt es sich im Wesentlichen um einen symbolischen Namen, der für einen Wert oder für eine Anzahl von Werten steht. Im Normalfall ist die kleinste beim Programmieren verwendete Einheit ein Byte - Variablen sind also symbolische Namen für ein oder mehrere Bytes.