Buffer Overflow Attacks

in Progammiersprachen ohne Bereichsprüfungen bei Arrays und Zeigern

Beispiel: ein Server-Programm speichert eine harmlose Information (die dem Nutzer gehört) direkt neben einer kritischen:

char h [10]; char c [10];
Das Ende eines Strings wird (in C) durch ein spezielles Zeichen 0 dargestellt

Angreifer überschreibt die 0 am Ende von h und liest danach h wieder aus --

while (0 != h[i]) { put (h[i]); i++; }
sieht dabei alle Zeichen von h und c



Johannes Waldmann 2006-06-27