Buffer-Overflow: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


*Wenn ein Programm gestartet wird, weist ihm das Betriebssystem einen bestimmten Speicherbereich zu.  
*Wenn ein Programm gestartet wird, weist ihm das Betriebssystem einen bestimmten Speicherbereich zu.  
*In einem Teil davon liegt der eigentliche Programmcode.  
*In einem Teil davon liegt der eigentliche Programmcode.  
*Dieser ist geschützt und kann nicht geändert werden.  
*Dieser ist geschützt und kann nicht geändert werden.  
*Darüber liegt der Heap , in dem das System globale Variablen und Konstanten ablegt.  
*Darüber liegt der Heap , in dem das System globale Variablen und Konstanten ablegt.  
*Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
*Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
*Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
*Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
Zeile 11: Zeile 15:
*Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
*Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
*Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.  
*Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.  


[[Datei:buffer-overflow.png]]
[[Datei:buffer-overflow.png]]

Version vom 7. Oktober 2020, 18:30 Uhr

Was passiert beim Buffer-Overflow

  • Wenn ein Programm gestartet wird, weist ihm das Betriebssystem einen bestimmten Speicherbereich zu.
  • In einem Teil davon liegt der eigentliche Programmcode.
  • Dieser ist geschützt und kann nicht geändert werden.
  • Darüber liegt der Heap , in dem das System globale Variablen und Konstanten ablegt.
  • Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
  • Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
  • Beim Buffer-Overflow wird eine lokale Variable mit mehr Inhalt gefüllt, als für Sie reserviert ist.
  • Dadurch kann der Stack und damit die Rücksprungadresse überschrieben werden.
  • Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
  • Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.


Quelle

Beispiel