Ansicht umschalten
Avatar von Casandro
  • Casandro

mehr als 1000 Beiträge seit 04.05.2000

NX und Sicherheit

Schön, NX scheint das Problem von Bufferüberläufen dadurch zu
beheben, in dem es den Stack nicht mehr ausführbar macht. OK, das
scheint sinnvoll.

Das Problem dabei ist jedoch, dass man, mit etwas höheren Aufwand,
trotzdem noch viel feinen Fug machen kann.
Das geht etwa so:

Man überscheibt ja den Stack, besonders die Rücksprungadresse.
Dagegen macht NX ja nichts. Normalerweise schreibt man dort aber
jetzt die Adresse von seinem Code rein, der liegt in der Regel auch
auf dem Stack. Gut, das wird durch NX verhindert.
So weit so gut, aber was ist denn, wenn ich nun die Adresse einer
Betriebssystemsumgebungsfunktion reinschreibe? Gut, die wird dann
ausgeführt, und danach? Dann holt sich das Return dieser Funktion die
Rücksprungadresse vom Stack. Aber Moment, den Stack haben wir ja
unter Kontrolle. Wir können diesen Stack, und somit die Adresse
steuern und gleich noch eine Betriebssystemsumgebungsfunktion
ausführen, und noch eine und noch eine, usw....
Wenn man das nun geschickt macht, so kann man damit eine Menge
erreichen. Und wenn es auch nur ein memcpy meines Exploit-Codes in
einen ausführbaren Speicherbereich ist, oder das Ausführen einer
Funktion, die hinter einem Menüpunkt steht, etc...

Bewerten
- +
Ansicht umschalten