Buffer Overflows und Format-String-Schwachstellen

Book description

Funktionsweisen, Exploits und Gegenmaßnahmen

Buffer Overflows und Format-String-Schwachstellen sind Ausgangspunkt für den Großteil aller Systemeinbrüche. Das Wissen über die Funktionsweise und die gezielte Ausnutzung dieser Software-Schwachstellen ermöglicht es Angreifern, in Systeme aller Art einzudringen und Schaden anzurichten.

Dieses Buch gibt einen umfassenden Überblick über diese beiden bedrohlichen Sicherheitslücken. Zunächst werden ihre Ursachen sowie entsprechende Angriffsmethoden detailliert erläutert:

  • klassische Stack-basierte Buffer Overflows

  • Off-By-Ones und Frame Pointer Overwrites

  • BSS Overflows und Heap Overflows

  • Return-into-Libc und Return-into-PLT

  • Zeigermanipulationen

  • One-Shot-Methode

  • Short-Write-Methode

  • Per-Byte-Write-Methode

Anschließend werden Gegenmaßnahmen vorgestellt und hinsichtlich ihrer jeweiligen Möglichkeiten und Grenzen untersucht:

  • Sichere Programmierung

  • Source Code Audit

  • Statische und dynamische Analysen

  • Fault Injection

  • Reverse Engineering

  • Compiler-Erweiterungen

  • Wrapper, non-executable Stack, PaX, ...

Die vermittelten Inhalte richten sich gleichermaßen an Programmierer, die ihre Software sicherer entwickeln wollen, als auch an Systemadministratoren und Sicherheitsverantwortliche, die hier erfahren, wie sie sich vor Einbrüchen über diese Software-Schwachstellen schützen können. Vorausgesetzt werden Kenntnisse der Programmiersprache C sowie der Funktionsweise von Unix-Betriebssystemen.

Alle Beispiele beziehen sich auf Unix-Betriebssysteme. Die vorgestellten Konzepte und Techniken lassen sich jedoch ohne weiteres auf andere Plattformen übertragen.

These links have been provided by the publisher.

Table of contents

  1. Copyright
  2. Einleitung
    1. E.1. Überblick
    2. E.2. Testsystem – Plattform und Architektur
    3. E.3. Darstellungskonventionen
    4. E.4. Voraussetzungen des Lesers
    5. E.5. Anregungen, Fragen und weitere Themenbereiche
  3. 1. Buffer Overflows
    1. 1.1. Einteilung und Klassifizierung
    2. 1.2. Prozess- und Speicherorganisation
    3. 1.3. Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows
      1. 1.3.1. Der Stack – Funktionsweise
      2. 1.3.2. Register
      3. 1.3.3. Der Stack – Steuerung
      4. 1.3.4. Funktionen
      5. 1.3.5. Schwachstelle
      6. 1.3.6. Angriffsmöglichkeit – Denial of Service
      7. 1.3.7. Angriffsmöglichkeit – Gezielte Modifikation des Programmflusses
      8. 1.3.8. Angriffsmöglichkeit – Ausführung eingeschleusten Programmcodes
    4. 1.4. Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites
      1. 1.4.1. Frame Pointer Overwrite
      2. 1.4.2. Manipulation von Zeigern
    5. 1.5. Buffer Overflows der 3. Generation: BSS Overflows
      1. 1.5.1. Manipulation von Zeigern
      2. 1.5.2. Off-by-One
    6. 1.6. Buffer Overflows der 4. Generation: Heap Overflows
  4. 2. Buffer Overflows – Gegenmaßnahmen
    1. 2.1. Gegenmaßnahmen – Verschiedene Ansätze
    2. 2.2. Ursachenbekämpfung
    3. 2.3. Gegenmaßnahme – Sichere Programmierung
      1. 2.3.1. Unsichere Bibliotheksfunktionen
    4. 2.4. Gegenmaßnahme – Source Code Audit
    5. 2.5. Gegenmaßnahme – Automatisierte Software-Tests
      1. 2.5.1. Statische Analysen – Source Code Analyzer
      2. 2.5.2. Dynamische Analysen – Tracer
    6. 2.6. Gegenmaßnahme – Binary Audit
      1. 2.6.1. Fault Injection
      2. 2.6.2. Reverse Engineering
    7. 2.7. Bekämpfung der Auswirkungen
    8. 2.8. Gegenmaßnahme – Compiler-Erweiterungen
      1. 2.8.1. Bounds Checking
      2. 2.8.2. StackGuard
      3. 2.8.3. /GS-Option von Microsoft
      4. 2.8.4. StackShield
      5. 2.8.5. Zusammenfassung: Möglichkeiten und Grenzen von StackGuard, /GS-Option und StackShield
      6. 2.8.6. Weitere Compiler-Erweiterungen
    9. 2.9. Gegenmaßnahme – Wrapper für »unsichere« Bibliotheksfunktionen
      1. 2.9.1. Libsafe
    10. 2.10. Gegenmaßnahme – Modifikation der Prozessumgebung
      1. 2.10.1. Non-executable Stack
      2. 2.10.2. PaX
      3. 2.10.3. Weitere Implementationen
  5. 3. Format-String-Schwachstellen
    1. 3.1. Funktionen zur formatierten Ausgabe
    2. 3.2. Der Format-String
    3. 3.3. Schwachstelle
    4. 3.4. Stack
    5. 3.5. Angriffsmöglichkeit – Denial of Service
    6. 3.6. Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen
      1. 3.6.1. One-Shot-Methode
      2. 3.6.2. Short-Write-Methode
      3. 3.6.3. Per-Byte-Write-Methode
      4. 3.6.4. Ausführung eingeschleusten Programmcodes
    7. 3.7. Fazit
  6. 4. Format-String-Schwachstellen – Gegenmaßnahmen
    1. 4.1. Gegenmaßnahmen – Verschiedene Ansätze
    2. 4.2. Ursachenbekämpfung
    3. 4.3. Gegenmaßnahme – Sichere Programmierung und Source Code Audit
    4. 4.4. Statische Analysen – Source Code Analyzer
      1. 4.4.1. Lexikalische Source Code Analyzer
      2. 4.4.2. Semantische Source Code Analyzer
      3. 4.4.3. Source Code Analyzer – Type Qualifiers
    5. 4.5. Gegenmaßnahme – Binary Audit
    6. 4.6. Bekämpfung der Auswirkungen
    7. 4.7. Gegenmaßnahme – Wrapper für fehleranfällige Bibliotheksfunktionen
      1. 4.7.1. Libformat
      2. 4.7.2. FormatGuard
    8. 4.8. Modifikationen der Prozessumgebung
      1. 4.8.1. Openwall: Non-executable Stack
      2. 4.8.2. PaX
  7. 5. Weitere Möglichkeiten
    1. 5.1. Alternative Programmiersprachen – Vorzüge, Risiken und Nebenwirkungen
    2. 5.2. Principle of Least Privilege – Einschränkung von Rechten
  8. A. Assembler-Codes
  9. B. Shellcodes
  10. C. fosbi
  11. D. No-NOP-Technik
  12. E. flawfinder
  13. Literaturverzeichnis

Product information

  • Title: Buffer Overflows und Format-String-Schwachstellen
  • Author(s): Tobias Klein
  • Release date: September 2003
  • Publisher(s): dpunkt
  • ISBN: 9783898641920