Exploits entmystifiziert, Teil 2

Einen Stack-basierten Pufferüberlauf provozieren

| Autor / Redakteur: Thorsten Henning* / Stephan Augsten

Schwachstellen kurz erklärt

Schwachstellen sind fest an den Overwrite/Überschreiben-Teil im Exploitation-Fluss gebunden. Verschiedene Schwachstellen ermöglichen es dem Angreifer, Adressen in verschiedenen Teilen des Prozess-Adressbereichs zu überschreiben.

Die erste Art von Schwachstelle, die hier beschrieben werden soll, ist ein Stapel-basierter Pufferüberlauf (stack-based buffer overflow). Dieser Schwachstellen-Typ einer der ältesten, der in freier Wildbahn genutzt wird, und stellt immer noch einen bedeutenden Teil der aktuellen Bedrohungslandschaft dar.

Der Stack/Stapel

Ein typisches Computerprogramm besteht aus einem Hauptprogramm und Funktionen oder Unterprogrammen. Wenn ein Unterprogramm aufgerufen wird, führt es seine Aufgabe aus und gibt die Steuerung an das Hauptprogramm zurück. Aus der Perspektive des Speicheradressenraums befinden sich die Adressen des Hauptprogramms im Code-Bereich.

Beim Aufruf eines Unterprogramms wird ein Stapel aktiviert, um die lokalen Variablen zu speichern (was in etwa dem entspricht, was wir als Daten bezeichnen). Das Unterprogramm führt dann seine bestimmte Aufgabe aus. Wenn es fertig ist, übergibt es die Steuerung wieder an das Hauptprogramm.

Aus der Perspektive des Angreifers gibt es drei interessante Funktionen:

  • 1. Feste Größe: Die Größe des Stapels ist festgelegt und bestimmt den Zeitpunkt des Aufrufs. Zum Beispiel wird im Unterprogramm ein Array von 10 Zeichen deklariert. Dies wird die Größe des Stapels sein, unabhängig von den Argumenten, die an den Stapel weitergegeben werden.
  • 2. Rücksendeadresse: Der Return-Kontrollmechanismus funktioniert wie folgt: Der Stapel wird mit einer festen Speichergröße aufgerufen. Nehmen wir an, unserem 10-Zeichen-Stapel wird 100 zugewiesen. Dies bedeutet, dass die Adressen 91 bis 100 diesem Stapel zugewiesen sind. Außerdem enthält Adresse 90 die Adresse im Hauptprogramm, zu dem die CPU zurückkehren sollte, nachdem das Unterprogramm seine Aufgabe erfüllt hat. Dieser Speicherplatz wird als Rücksendeadresse bezeichnet.
  • 3. Der Stapel wächst nach unten: Wenn wir die tatsächlichen Argumente dem Stapel zuweisen, geht der erste an die höchste Adresse und wird dann durch die folgenden nach unten geschoben. Wenn wir eine 3-Zeichen-Eingabe unserem vereinfachten Stack zuleiten, geht das erste zur Adresse 100. Danach wird das zweite 100 einnehmen und das erste auf 99 schieben. Das dritte wird zu 100 gehen und das zweite auf 99 und das erste auf 98 verschoben. Da die Eingabe hier endet, gibt es keine Argumente mehr. Die Rücksendeadresse wird abgerufen von der CPU, die ihren Anweisungen folgt und zurück zum Hauptprogramm springt.

Bisher haben wir die Stack-Architektur ohne schädlichen Kontext beschrieben. Jetzt werden wir erklären, wie diese Architektur in böswilliger Absicht genutzt werden kann.

Inhalt des Artikels:

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 43793086 / Sicherheitslücken)