Stapel zerschlagen

Definition - Was bedeutet Stack Smashing?

Stack Smashing ist eine Form der Sicherheitsanfälligkeit, bei der der Stack einer Computeranwendung oder eines Betriebssystems zum Überlaufen gezwungen wird. Dies kann dazu führen, dass das Programm / System untergraben und abgestürzt wird.

Ein Stapel, eine First-In-Last-Out-Schaltung, ist eine Form von Puffer, der Zwischenergebnisse von Operationen in sich enthält. Um dies zu vereinfachen, werden durch das Zerschlagen von Stapeln mehr Daten in einen Stapel eingefügt als durch seine Speicherkapazität. Erfahrene Hacker können absichtlich übermäßige Daten in den Stapel einfügen. Die überschüssigen Daten können in anderen Stapelvariablen gespeichert werden, einschließlich der Funktionsrückgabeadresse. Wenn die Funktion zurückkehrt, springt sie zum Schadcode auf dem Stapel, der das gesamte System beschädigen kann. Die benachbarten Daten auf dem Stapel sind betroffen und zwingen das Programm zum Absturz.

Technische.me erklärt Stack Smashing

Wenn das vom Stack Smashing betroffene Programm Daten aus nicht vertrauenswürdigen Netzwerken akzeptiert und mit speziellen Berechtigungen ausgeführt wird, liegt eine Sicherheitslücke vor. Wenn der Puffer Daten enthält, die von einem nicht vertrauenswürdigen Benutzer bereitgestellt wurden, kann der Stapel durch Einfügen von ausführbarem Code in das Programm beschädigt werden, wodurch unbefugter Zugriff auf einen Computer erlangt wird. Ein Angreifer kann auch die im Stapel gespeicherten Kontrollflussinformationen überschreiben.

Da Stack Smashing zu einer sehr schwerwiegenden Sicherheitslücke geworden ist, werden bestimmte Technologien implementiert, um die Stack Smashing-Katastrophe zu überwinden. Der Stapelpufferüberlaufschutz ändert die Organisation von Daten im Stapelrahmen eines Funktionsaufrufs, um kanarische Werte einzuschließen. Diese Werte zeigen bei Zerstörung an, dass ein Puffer im Speicher übergelaufen ist. Kanarische Werte überwachen Pufferüberläufe und werden zwischen den Steuerdaten und dem Puffer auf dem Stapel platziert. Dies stellt sicher, dass ein Pufferüberlauf zuerst den Kanarienvogel beschädigt. Eine fehlgeschlagene Überprüfung der Kanariendaten bedeutet einen Überlauf im Stapel. Die drei Arten von Kanarienvögeln sind Random, Terminator und Random XOR.

Der Terminator-Kanarienvogel basiert auf der Tatsache, dass der Angriff auf den Stapelpufferüberlauf von String-Operationen abhängt, die an Terminatoren enden. Zufällige Kanarienvögel werden zufällig aus einem Daemon zum Sammeln von Entropien generiert, wodurch verhindert wird, dass Angreifer Werte kennen. Bei der Programminitialisierung werden zufällige Kanarienvögel generiert und in globalen Variablen gespeichert. Zufällige XOR-Kanarienvögel sind zufällige Träger, die mithilfe von Kontrolldaten XOR-verschlüsselt werden. Es ist ähnlich wie bei zufälligen Kanarienvögeln, außer dass die "Read from Stack-Methode" zum Abrufen des Kanarienvogels komplex ist. Der Hacker benötigt den Kanarienvogel, den Algorithmus und die Kontrolldaten, um den ursprünglichen Kanarienvogel zu produzieren. Sie schützen vor Angriffen, bei denen Puffer in einer Struktur in Zeiger überlaufen, um den Zeiger so zu ändern, dass er auf ein Steuerdatenelement zeigt.