<< 2.2 Kommunikationsprotokolle | Index | 3.2 Viren >>


3.1 Buffer-Overflow-Exploits

  • Ausnutzen von Programmierfehlern
    • Fehlende Bereichsprüfung von Eingabepuffern
  • Durch Überschreiben der Rücksprungadresse kann an beliebige Stelle im Speicher gesprungen werden
    • Angreifer platziert Code und/oder neue Rücksprungadresse auf dem Stack
  • Auf dem Stack (Prozeduraufruf) oder Heap (globale Daten) möglich

Gegenmaßnahmen

  • Saubere Programmierung mit Eingabe- und Bereichsprüfung
  • Verwenden einer Programmiersprache oder eines Compilers, der automatisch Bereichsprüfung durchführt (z. B. Java)
  • Wrapper-Bibliotheken für C/C++-Funktionen, die eine Bereichsprüfung durchführen
    • Vorteil: Programme müssen nicht neu kompiliert werden
  • Sichern der Rücksprungadresse in anderem Bereich und ggf. Korrektur, falls sie überschrieben wurde
    • Neu-Kompilieren erforderlich
    • z. B. StackShield für Linux
  • Modifizerter Kompiler, der anhand eines Kontrollzeichens erkennt, ob Rücksprungadresse verändert wurde
    • Programm terminiert im Fehlerfall, also trotzdem DoS möglich
  • Speicherbereich als nicht ausführbar markieren (benötigt Betriebssystem-Unterstützung)
    • Rücksprungadresse kann aber trotzdem überschrieben werden, also DoS möglich

Nach oben

Zuletzt geändert am 24 März 2005 20:26 Uhr von chrschn