Angriffe auf Programme

Angriffe auf Programme erfolgen entweder durch den Benutzer selbst, um beispielsweise bei der Installation von Software den Aktivierungs-Prozess, bei dem die Eingabe einer gültigen Seriennummer erforderlich ist, zu „überspringen“ oder durch einen Angreifer, der sich dadurch Zugang zu Informationen verschafft.

Buffer Overflow

Das Prinzip des Angriffs ist, eine gutartige Software mittels Ausführung von Malware anzugreifen um den eigentlichen Programmablauf zu stören/zu verändern.

Der Buffer Overflow nutzt dabei die in einem Programm fehlende Überprüfung einer Eingabe als Schwachstelle aus um dadurch den zu kleinen allokierten Speicher zu überschreiben. Dieser Angriff gehört zu den häufigsten Schwachstellen in Programmen. Buffer Overflows können auch über das Netzwerk durchgeführt werden. Man unterscheidet im wesentlichen zwischen Heap-basierten und Stapel-basierten Buffer Overflows.

Der Heap-basierte Angriffe überschreibt den für ein Programm reservieren Speicherplatz. Der Stapel-basierte Buffer Overflow funktioniert über die Nutzer-Eingaben in einem Programm, welche im flüchtigen Speicher, dem Stapel oder Stack zwischengespeichert wird. Das ausgeführte Programm reserviert für die Eingabe vom Benutzer Speicherplatz, indem das System die Rücksprung-Speicheradresse auf dem Stack platziert und dann die Benutzereingabe. Im Normalfall ruft dann das Programm die zwischengespeicherte Eingabe vom Stack ab und führt das Programm an der darunter liegenden Rücksprung-Speicheradresse weiter aus. Jedoch wird beim Buffer Overflow durch eine zulange / zu große Eingabe die Rücksprung-Speicheradresse überschrieben, der Stack läuft über. Durch eine gezielte Eingabe kann man nun die Rücksprung–Speicheradresse so verändern, dass das Programm an einer gewünschten Stelle weiter läuft. Dadurch lassen sich beispielsweise Überprüfungen von Seriennummern bei Programmen „überspringen“.

Smashing the Stack

Eigenen Programmcode einfügen

NOP-Slide/Sled

Gegenmaßnahmen

Programmierung

Stackverwaltung

auf Systemebene