Angriffe durch Pufferüberlauf (buffer overflow)

Dezember 2016

Einführung zum buffer overflow

Angriffe durch « Pufferüberlauf  » (auf englisch « Buffer overflow » ) sollen ein Programm dazu bringen, einen bestimmten Code auszuführen, und sendem ihm dabei größere Datenmengen als vorgesehen.

Programme, die parametrische Eingangsdaten akzeptieren, speichern sie temporär in einem Bereich des Speichers, der Puffer (auf Englisch buffer) genannt wird. Allerdings können manche Lesefunktionen, wie die strcpy() Funktionen der Sprache C, nicht mit dieser Art von Überlauf umgehen, das hat den Absturz der Anwendung zur Folge und kann zur Ausführung des beliebigen Codes führen und so Zugang zum System erlauben.

Die Durchführung dieser Art von Angriff ist sehr kompliziert, da genaues Wissen über die Programmarchitektur und Prozessoren von Nöten ist. Allerdings gibt es viele Exploits, die in der Lage sind, diesen Angriff zu automatisieren und ihn damit auch für Quasi-Neulinge zugänglich macht.

Funktionsprinzip

Das Funktionsprinzip eines Pufferüberlaufs hängt stark mit der Architektur des Prozessors zusammen, auf dem die anzugreifende Ausführung läuft.

Die von einer Aufwendung aufgenommenen Daten werden im Arbeitsspeicher gespeichert, in einem Bereich, der Puffer genannt wird. Ein richtig konzipiertes Programm sieht eine Maximalgröße für Eingangsdaten vor und überprüft, ob die aufgenommenen Daten diesen Wert überschreiten.

Die Anweisungen und Daten eines laufenden Programms werden laufend provisorisch gespeichert, in einem Bereich, der Stapelspeicher heißt (auf Englisch stack). Die Daten, die hinter den Puffer liegen, enthalten eine Retour-Adresse (genannt Befehlszähler) durch den das Programm weiterläuft. Wenn die Größe der Daten die Größe des Puffers überschreitet, wird die Retour-Adresse überschrieben, das Programm liest dann eine fehlerhafte Adresse ein, was zu einer Schutzverletzung führt (auf Englisch segmentation fault) der Anwendung.

Ein Hacker mit guten technischen Kenntnissen kann kann sicher stellen, dass die überschriebene Speicheradresse einer realen Adresse entspricht, die zum Beispiel im Puffer selbst liegt. Indem er Anweisungen in den Puffer schreibt (beliebiger Code), kann er diese also leicht ausführen.

So ist es möglich, Anweisungen in den Puffer einzuschreiben, die eine Eingabe-Schnittstelle öffnen kann (auf Englisch shell) und es dem Hacker ermöglicht, das System zu steuern. Dieser beliebige Code, der die Ausführung der Eingabe-Schnittstelle ermöglicht, heißt shellcode.

So schützt man sich vor Buffer overflow

Vor dieser Art des Angriffs kann man sich schützen, indem man Anwendungen mit hochentwickelten Programmiersprachen erstellt, bei denen die Speicherzuteilung genau geregelt wird, oder mit Sprachen niedrigeren Niveaus, und dabei sichere Funktionsbibliotheken verwendet (zum Beispiel strncpy() Funktionen).

Es werden regelmäßig Sicherheitswarnungen veröffentlicht, die auf die Anfälligkeit bestimmter Anwendungen für Buffer overflow Angriffe hinweisen. Daraufhin veröffentlichen die Herausgeber der betroffenen Software in der Regel Korrekturen (patchs) durch die sich die Schwachstelle ausbessern lässt. Jeder System- und Netzwerkadministrator sollte auf dem laufenden bleiben, was die Sicherheitswarnungen betrifft und die Patches so schnell wie möglich installieren.

Weitere Informationen


Lesen Sie auch :


Buffer overflow attacks
Buffer overflow attacks
Ataques por desbordamiento de búfer
Ataques por desbordamiento de búfer
Attaques par débordement de tampon (buffer overflow)
Attaques par débordement de tampon (buffer overflow)
Attacchi buffer overflow
Attacchi buffer overflow
Ataques por profusão de tampão  (buffer overflow)
Ataques por profusão de tampão (buffer overflow)
Das Dokument mit dem Titel « Angriffe durch Pufferüberlauf (buffer overflow) » aus CCM (de.ccm.net) wird zur Verfügung gestellt unter den Bedingungen der Creative Commons Lizenz. Sie dürfen das Dokument verwenden, verändern sowie Vervielfältigungen dieser Seite erstellen, unter den Bedingungen, die in der vorgenannten Lizenz erwähnt sind und unter der gleichzeitigen Bedingung, dass Sie im Rahmen Ihrer Verwendung, Veränderung oder Vervielfältigung nach außen hin klar und deutlich auf den Urheber (= de.ccm.net) des Dokuments hinweisen.