Buffer-Overflow: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 10: Zeile 10:
  
 
*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.
 +
 
*Beim Buffer-Overflow wird eine lokale Variable mit mehr Inhalt gefüllt, als für Sie reserviert ist.
 
*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.  
 
*Dadurch kann der Stack und damit die Rücksprungadresse überschrieben werden.  
 +
 
*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.  
  

Version vom 7. Oktober 2020, 16: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.


Buffer-overflow.png

Quelle

Beispiel