Security1O1 avatar

[DE] Bufferoverflow - Die Theorie

security101

Published: 28 Mar 2018 › Updated: 28 Mar 2018[DE] Bufferoverflow - Die Theorie

[DE] Bufferoverflow - Die Theorie

Bei einem Bufferoverflow oder Pufferüberlauf werden Daten, die oftmals als Benutzereingaben eingelesen werden, in einen Speicherbereich geschrieben, der nicht dafür gedacht war. Indem größere Datenmengen als eigentlich vom Entwickler dafür reserviert eingelesen werden, "läuft" dieser "über" und wird auf den entsprechenden nächsten Bereich geschrieben.

D1ED1184-8C1E-4DDD-BF10-FB8E233FC1E8.jpeg
Quelle

Vorallem Programmiersprachen, die weitestgehend direkt in Machinencode kompiliert werden sind bei Programmierfehlern anfällig (z.B C/C++ etc.). Bei diesen Sprachen ist der Entwickler selbst für die Prüfung der Speicherbereiche verantwortlich. Das ist einer der Gründe, warum bereits vorhandene Algoithmen (die sich bewährt haben) nicht neu entwickelt werden sollten.
Java oder Pyhton sowie andere Hochsprachen nutzen Kontrollstrukturen des Betriebssystems, die solche Speicherüberläufe detektieren und vermeiden können.

Prinzipiell unterscheidet man zwischen Stack- und Heap-Overflows. Also dynamisch alloziertem und statischem Speicher.

In diesem Minimalbeispiel möchte ich mich auf einen Stack-Overflow beschränken.

void stack_overflow(const char *foo)
{
    char bar[7];
    strcpy(bar, foo);
}

Wird die Funktion nun aufgerufen:

stack_overflow("abcdefghij")

So ergibt sich ein Buffer Overflow, da nicht genug Speicher für bar[] allokiert wurde. Die Funktion strcpy(), die in diesem Fall unsere Eingabe in bar[] kopiert ist ein Beispiel für eine Funktion die oft zu Überläufen führen kann, wenn nicht auf die Grenzen geachtet wird.

Frage an die Kenner: Warum würde der Aufruf der Methode mit "steemit" als Parameter auch zu einem Buffer-Overflow führen ?

Abhängig von dem ensprechenden Programm kann dieses dabei abstürzen und ein weitestgehend unkontrolliertes Verhalten aufweisen.

Wird ein Bufferoverflow absichtlich erzeugt, so meist in der Absicht Code auf dem Zielsystem auszuführen. Die Ausführungsprivilegien entsprechen hierbei denen, des betroffenen Prozesses. Dies kann erreicht werden, indem Sprungadressen im Speicher abgelegt werden, die auf andere Speicherbereiche verweisen. So kann beispielsweise eine Rücksprungadresse auf eine Funktion diese ausführen.

Ich werde zeitnah einen ausführlichen Beitrag mit einem Beispiel schreiben.

Vielen Dank fürs Lesen !

Leave [DE] Bufferoverflow - Die Theorie to:

Written by

IT Security / Kryptowährungen

Read more #deutsch posts


Best Posts From Security1O1

We have not curated any of security101's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From Security1O1