SupraTix Logo
Fallbeispiel Pufferüberlauf (Buffer Overflow)

Fallbeispiel Pufferüberlauf (Buffer Overflow)

Öffentlich
Es sind noch 0 von None Plätzen verfügbar.

Das wohl berühmteste Beispiel eines Pufferüberlaufs ereignete sich am 04. Juni 1996. Die Trägerrakete Ariane 5, die vier Satelliten in die Erdumlaufbahn bringen sollte, explodierte 37 Sekunden nach dem Start. Dabei wurden keine Menschen verletzt, aber der Schaden belief sich auf stolze 290 Millionen US-Dollar.

Grund dafür war kein Hackerangriff auf die Europäische Weltraumorganisation (European Space Agency - ESA), sondern eine Schlamperei in der Programmierung, die zum Pufferüberlauf führte. Scheinbar wurde die Software von vorherigen Raketen benutzt und nicht umfangreich getestet.
Gemäß dem Hergang eines Pufferüberlaufs gibt es Zeichenketten, die eine gewisse Länge nicht überschreiten dürfen.

Abb. 1: Ariane vor dem Start (Quelle: ESA)


Abb. 2: Ariane nach dem Start (Quelle: ESA)

Die Daten werden als Zeichenkette gespeichert und dürfen eine gewisse Länge nicht überschreiten. Bei der Ariane 5 wurde der Einfluss der Puffer nicht berücksichtigt, sodass sich die Funktionsweise der Rakete veränderte. Denn es passten nur vier der sieben Variablen. Als Konsequenz wurden die Zeichen, die überfällig wurden, in die nächste Codierzeile übernommen oder sind besser gesagt „übergelaufen“ und haben die vorhandenen Aufgaben und Funktionen überschrieben. Dadurch wurden ursprüngliche Funktionsweisen redundant und das System brach zusammen.
Angreifer machen sich genau diese Tatsache zu nutze. Denn sie überlasten den Puffer absichtlich, sodass die Speicherstellen des neuen Speicherabschnitts verwendet werden. So speichert der Angreifer gezielt Speicherplätze um, was zu einer Funktionsveränderung oder zum Funktionsverlust führen kann.



Um den Prozess des Pufferüberlaufs besser zu verstehen, kann man sich die fehlerhafte Replikation der DNA vorstellen. Bei der Genmutation z. B. kann es passieren, dass ein Nukleotid (Baustein der DNA) in den DNA-Strang "zusätzlich" eingeschoben wird. Das hat zur Folge, dass sich das Leseraster des genetischen Codes, ab der Stelle der Mutation, verschiebt und es eben zu der Ausprägung einer Mutation kommen kann. Ein Programmierer sollte deshalb eine Funktion einfügen, die die eingegebene Datenmenge begrenzt und somit ein Überschreiben von Daten und damit auch einen Pufferüberlauf verhindert.


Watch-Party

Session wird geladen ...

Viewer: 0