Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Buffer Overflow als Angriffsvektor

Nachdem Sie nun wissen, was ein Buffer Overflow eigentlich ist, stellt sich nun die Frage: Wie kann so etwas von einem Angreifer ausgenutzt werden?

Ein Programm, das eine Aufgabe erfüllt, ist umfangreicher als das bisher vorliegende Beispielprogramm, das gerade mal über 6 Zeilen Quellcode verfügt. Wenn man sich diese 6 Zeilen genauer ansieht, stellt man auch fest, dass sogar diese eine ganze Menge an Funktionalität haben, von der man zunächst nicht erklären kann, woher sie stammt. So wird beispielsweise eine Funktion mit dem Namen strcpy und eine andere mit dem Namen Puts aufgerufen.

Beide wurden aber nicht selbst programmiert, sondern - im Fall von C - vom Hersteller des Compilers in Form von Bibliotheken zur Verfügung gestellt. Man kann Funktionen auch selbst programmieren. Das ist praktisch, denn damit ist man in der Lage, Programmfunktionalität in kleinere, übersichtlichere Päckchen aufzuteilen.

Bei der Gelegenheit könnte man auch gleich den Hauptteil des Programms in einer Funktion verpacken und die einzelnen Teilaufgaben in separaten Funktionen unterbringen. Diese Hauptfunktion hat in C den Namen main. Eine derartig aufgeschlüsselte Version des bisherigen Beispielprogramms könnte dann in etwa wie folgt aussehen:

Main() {