Heap-Überlauf-Angriffe
Wie heap-overflow-Attacken getan werden?
Bei stackoverflow Angriffe der Angreifer ersetzt die Funktion return Adresse mit seiner Adresse.
Wie dies im heap-overflow-Attacken? Auch ist es möglich, code auszuführen, aus heap?
InformationsquelleAutor der Frage chappar | 2009-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: diese variiert von Plattform zu Plattform, und mein Beispiel ist übertrieben vereinfacht. Es geht im Grunde nach unten heap-Manager mit verknüpften Listen könnten überrannt werden, und Sie können die verknüpfte Liste von Zeigern zu überschreiben, zufällige Teile des Prozesses Speicher.
Vorstellen, ich habe eine naive heap-Implementierung, deren Kontroll-Blöcke sind wie diese:
Wenn der heap wird befreit, diese control block geht zurück in die Liste der befreiten Blöcke, indem Sie ändern die next/prev-Zeiger. Wenn ich einen heap overrun buffer, kann ich überschreiben Sie den Zeiger in die nächste control-block mit Daten, die ich kontrolliere. Ich nehme an, überschreiben Sie diese links zeigen auf einen Zeiger auf code (wahrscheinlich nur in den Puffer, ich überlief) und der Rücksprungadresse der Funktion auf dem stack. Wenn der heap-manager versucht, den link der block wieder in ein frei-Liste, es wird tatsächlich überschreiben der Rücksprungadresse auf dem stack ein Zeiger auf code, den ich kontrollieren.
Dieser Artikel hat eine nette übersicht über heap-overflow-Angriffen:
http://www.h-online.com/security/features/A-Heap-of-Risk-747161.html
Dieser Artikel beschreibt einige der Härten, die ging in Vista ist der heap-manager, um zu verhindern, dass diese Art des Angriffs:
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Marinescu.pdf
EDIT: Auf die Möglichkeit zum ausführen von code vom heap, ja es ist möglich. Viele Plattformen jetzt machen heap-Speicher non-executable standardmäßig wirft der Barriere zu bekommen, beliebigen code ausführen. Jedoch können Sie immer noch eine "jump to libc" style attack - Überschreiben der Rücksprungadresse einer Funktion bekannt, die ausführbar sein.
InformationsquelleAutor der Antwort Michael