Was ist ein Stapelpufferüberlauf?
Ein Stapelspeicherüberlauf tritt auf, wenn ein Programm einen Eintrag in den Arbeitsspeicher eines Computers vornimmt, der länger als der zugewiesene Speicherplatz ist. In einigen Fällen kann dies andere Daten im Speicher beschädigen und Probleme beim Ausführen des Computers verursachen. In anderen Fällen kann ein Stapelpufferüberlauf von einer böswilligen Anwendung ausgenutzt werden, um die Kontrolle über andere Teile des Computers zu übernehmen.
Der Name eines Stapelpufferüberlaufs leitet sich zunächst von dem Stapel ab, der quasi eine aktive Liste ist, in der Daten organisiert sind: Der Begriff stammt aus der Analogie des Stapelns physischer Elemente. Eine Version davon, der Aufrufstapel, ist die Liste, die ein Computerprogramm verwendet, um die verschiedenen Teile des Programms, die zu einem bestimmten Zeitpunkt ablaufenden Unterprogramme, zu verfolgen. Da die Anrufliste nur vorübergehend ausgeführt wird und ein schneller Zugriff erforderlich ist, befindet sie sich im Arbeitsspeicher des Computers und nicht im permanenten Speicher wie der Festplatte.
Da moderne Betriebssysteme die gleichzeitige Ausführung mehrerer Programme ermöglichen, ist es erforderlich, die Speicherzuweisung zu organisieren, einschließlich des Aufrufs von Stapeln. Dies erfolgt effizient durch Zuweisen von Puffern, einem Speicherbereich, der so groß ist, dass er den von einem bestimmten Puffer benötigten maximalen Speicherplatz bewältigt. In den meisten Fällen bleibt ein Teil des Speicherplatzes ungenutzt, sodass er als Puffer zwischen den Daten aus verschiedenen Anwendungen fungiert und Raum für die Bewältigung lässt, wenn plötzlich zusätzlicher Speicherplatz benötigt wird. Eine Möglichkeit, dies zu visualisieren, wäre, sich eine Bibliothek vorzustellen, die jedem Themenbereich eine bestimmte Menge an Speicherplatz zuweist und dafür sorgt, dass ein zusätzlicher Raum für die Bewältigung verbleibt, wenn sich beispielsweise alle Bücher zu einem Thema in der Bibliothek am befinden Gleichzeitig, anstatt dass einer von ihnen ausgecheckt wird.
Ein Stapelspeicherüberlauf tritt auf, wenn ein Programm Aufrufspeicherdaten so in den Puffer schreibt, dass der zugewiesene Speicherplatz überschritten wird. Dies kann versehentlich passieren, normalerweise durch einen Programmfehler. Wenn eine Anwendung beispielsweise so konzipiert ist, dass der Benutzer eine Telefonnummer eingeben kann, die Anzahl der Zeichen jedoch unbegrenzt ist, kann ein Hacker das unbegrenzte Feld möglicherweise verwenden, um absichtlich einen Stapelpufferüberlauf zu verursachen . Abhängig von der Funktionsweise des Betriebssystems kann der Hacker indirekt auf eine andere Anwendung oder auf das Betriebssystem selbst zugreifen.
Es gibt verschiedene Ansätze, um den Auswirkungen eines Stapelpufferüberlaufs entgegenzuwirken. Eine davon ist als Adressraum-Layout-Randomisierung bekannt. Dadurch werden die wichtigsten Datenbereiche auf dem Computer zufällig angeordnet. Die Idee ist, dass ein Hacker die Sicherheitslücke nicht zuverlässig ausnutzen kann, selbst wenn er einen Stapelpufferüberlauf verursacht oder ausnutzt.