Stack Smashing

Was ist Stack Smashing?

Bei Software tritt ein Stack-Buffer-Überlauf auf, wenn ein Programm in einen adressierten Speicherbereich mehr Daten hineinschreibt als vorgesehen. Dies führt meist zu korrumpierten Daten und kann einen Absturz der Software zur Folge haben. Der Stapelüberlauf kann Teil eines Angriffs sein, der als Stack Smashing bezeichnet wird. Wenn das Programm mit besonderen Rechten läuft oder Daten von unsicheren Quellen, wie einem Webserver, verarbeitet, ist der Fehler ein potenzielles Sicherheitsrisiko. Die Stapelüberläufe zählen zu den häufigsten Sicherheitslücken in Software, die Angreifer über das Internet ausnutzen können. Im Rahmen eines Angriffs kann der Anwender den Stack verändern und zum Beispiel ausführbaren Code einschleusen. Auf diesem Weg verschafft sich ein Cyberkrimineller unautorisierten Zugriff auf einen PC und missbraucht diesen für seine Zwecke.

Was schützt gegen Stack Smashing?

In den vergangenen Jahren wurden mehrere Kontrollmechanismen entwickelt, die das Einschleusen schadhafter Software und Verursachen eines Buffer- bzw. Stapelüberlaufs verhindern. Eine entsprechend programmierte Software stellt das Auftreten eines Stapelüberlaufs fest und verhindert die Weiterleitung zu potenziell schädlichem Code. Auch kann die Ausführung des schadhaften Codes vom Stack unterbunden werden, ohne dass ein Überlauf festgestellt wurde. Weiter ist die zufällige Adressierung des Speicherbereichs möglich, was das Auffinden von Schadcode unzuverlässig macht. Bekannte Sicherheitslücken in den Programmen schließen die Entwickler durch kurzfristig bereitgestellte Fehlerkorrekturen (Patches). Eine nachhaltige Maßnahme zum Schutz vor Stack Smashing ist die Verwendung typensicherer Programmiersprachen wie Java und C#. Die Eigenschaften von Sprachen wie C und C++ machen das Auftreten der Überläufe wahrscheinlich und die Verhinderung sehr aufwendig.