Stack Smashing

Was ist Stack Smashing?
Stack-Smashing ist eine Form der Schwachstelle, bei der der Stapel einer Computeranwendung oder eines Betriebssystems zum Überlauf gezwungen wird. Dies kann dazu führen, dass das Programm / System zerstört wird und es abstürzt.

Ein Stapel, eine First-In-Last-Out-Schaltung, ist eine Form eines Puffers, der Zwischenergebnisse von Operationen enthält. Um das zu vereinfachen, stapeln Sie das Zerlegen, indem Sie mehr Daten in einen Stapel als seine Haltekapazität legen. Erfahrene Hacker können absichtlich übermäßige Daten in den Stapel einbringen.

Die übermäßigen Daten können in anderen Stapelvariablen gespeichert werden, einschließlich der Rückgabeadresse der Funktion. Wenn die Funktion zurückkehrt, springt sie zu dem bösartigen Code auf dem Stapel, der das gesamte System beschädigen könnte. Die angrenzenden Daten auf dem Stapel sind betroffen und zwingen das Programm zum Absturz.

Wenn das von Stack-Smashing betroffene Programm Daten aus nicht vertrauenswürdigen Netzwerken akzeptiert und mit speziellen Berechtigungen ausgeführt wird, handelt es sich um eine Sicherheitsanfälligkeit. Wenn der Puffer Daten enthält, die von einem nicht vertrauenswürdigen Benutzer bereitgestellt werden, kann der Stapel beschädigt werden, indem ausführbarer Code in das Programm eingefügt wird, wodurch unautorisierter Zugriff auf einen Computer erlangt wird. Ein Angreifer kann auch Steuerflussinformationen überschreiben, die im Stapel gespeichert sind.

Da Stack-Smashing zu einer sehr ernsten Sicherheitslücke geworden ist, werden bestimmte Technologien implementiert, um die katastrophale Katastrophe zu überwinden. Der Stack Buffer Overflow-Schutz ändert die Organisation von Daten im Stack-Frame eines Funktionsaufrufs, um kanarische Werte aufzunehmen. Diese Werte zeigen, wenn sie zerstört sind, an, dass ein Puffer, der dem Speicher vorherging, übergelaufen ist.

Kanarische Werte überwachen Pufferüberläufe und werden zwischen den Kontrolldaten und dem Puffer auf dem Stapel platziert. Dies stellt sicher, dass ein Pufferüberlauf den Kanarienvogel zuerst korrumpiert. Eine fehlgeschlagene Überprüfung von Kanaldaten bedeutet einen Überlauf im Stapel. Die drei kanarischen Kanaltypen sind „Random“, „Terminator“ und „Random XOR“.

Der Terminator-Kanarienvogel basiert auf der Tatsache, dass der Stapelpuffer-Überlaufangriff von String-Operationen abhängt, die an Terminatoren enden. Zufällige Kanarien werden zufällig aus einem Entropie-Sammel-Daemon erzeugt, der verhindert, dass Angreifer Werte kennen. Random Canarien werden bei der Programminitialisierung erzeugt und in globalen Variablen gespeichert. Zufällige XOR-Kanarienvögel sind zufällige Träger, die unter Verwendung von Kontrolldaten XOR-verschlüsselt sind.

Es ist vergleichbar mit zufälligen Kanarien mit der Ausnahme, dass die „Read from Stack-Methode“, um den Kanarienvogel zu erhalten, komplex ist. Der Hacker benötigt die Kanarienvogel-, Algorithmus- und Kontrolldaten, um den ursprünglichen Kanarienvogel zu produzieren. Sie schützen vor Angriffen mit überlaufenden Puffern in einer Struktur in Zeigern, um den Zeiger zu ändern, um auf ein Stück Steuerdaten zu zeigen.


War die Erklärung zu "Stack Smashing" hilfreich? Jetzt bewerten:

Weitere Erklärungen zu