O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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. Buffer Overflows und Format-String-Schwachstellen
    1. Copyright
    2. Inhalt
    3. 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
    4. 1: Buffer Overflows
      1. 1.1 Einteilung und Klassifizierung
      2. 1.2 Prozess- und Speicherorganisation (1/2)
      3. 1.2 Prozess- und Speicherorganisation (2/2)
      4. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (1/16)
      5. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (2/16)
      6. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (3/16)
      7. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (4/16)
      8. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (5/16)
      9. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (6/16)
      10. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (7/16)
      11. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (8/16)
      12. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (9/16)
      13. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (10/16)
      14. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (11/16)
      15. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (12/16)
      16. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (13/16)
      17. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (14/16)
      18. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (15/16)
      19. 1.3 Buffer Overflows der 1. Generation: Klassische Stack-basierte Buffer Overflows (16/16)
      20. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (1/7)
      21. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (2/7)
      22. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (3/7)
      23. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (4/7)
      24. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (5/7)
      25. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (6/7)
      26. 1.4 Buffer Overflows der 2. Generation: Off-by-Ones und Frame Pointer Overwrites (7/7)
      27. 1.5 Buffer Overflows der 3. Generation: BSS Overflows (1/5)
      28. 1.5 Buffer Overflows der 3. Generation: BSS Overflows (2/5)
      29. 1.5 Buffer Overflows der 3. Generation: BSS Overflows (3/5)
      30. 1.5 Buffer Overflows der 3. Generation: BSS Overflows (4/5)
      31. 1.5 Buffer Overflows der 3. Generation: BSS Overflows (5/5)
      32. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (1/8)
      33. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (2/8)
      34. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (3/8)
      35. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (4/8)
      36. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (5/8)
      37. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (6/8)
      38. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (7/8)
      39. 1.6 Buffer Overflows der 4. Generation: Heap Overflows (8/8)
    5. 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
      4. 2.4 Gegenmaßnahme – Source Code Audit
      5. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (1/9)
      6. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (2/9)
      7. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (3/9)
      8. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (4/9)
      9. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (5/9)
      10. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (6/9)
      11. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (7/9)
      12. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (8/9)
      13. 2.5 Gegenmaßnahme – Automatisierte Software-Tests (9/9)
      14. 2.6 Gegenmaßnahme – Binary Audit (1/4)
      15. 2.6 Gegenmaßnahme – Binary Audit (2/4)
      16. 2.6 Gegenmaßnahme – Binary Audit (3/4)
      17. 2.6 Gegenmaßnahme – Binary Audit (4/4)
      18. 2.7 Bekämpfung der Auswirkungen
      19. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (1/17)
      20. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (2/17)
      21. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (3/17)
      22. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (4/17)
      23. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (5/17)
      24. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (6/17)
      25. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (7/17)
      26. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (8/17)
      27. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (9/17)
      28. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (10/17)
      29. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (11/17)
      30. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (12/17)
      31. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (13/17)
      32. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (14/17)
      33. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (15/17)
      34. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (16/17)
      35. 2.8 Gegenmaßnahme – Compiler-Erweiterungen (17/17)
      36. 2.9 Gegenmaßnahme – Wrapper für »unsichere« Bibliotheksfunktionen (1/2)
      37. 2.9 Gegenmaßnahme – Wrapper für »unsichere« Bibliotheksfunktionen (2/2)
      38. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (1/14)
      39. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (2/14)
      40. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (3/14)
      41. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (4/14)
      42. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (5/14)
      43. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (6/14)
      44. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (7/14)
      45. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (8/14)
      46. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (9/14)
      47. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (10/14)
      48. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (11/14)
      49. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (12/14)
      50. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (13/14)
      51. 2.10 Gegenmaßnahme – Modifikation der Prozessumgebung (14/14)
    6. 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/7)
      7. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (2/7)
      8. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (3/7)
      9. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (4/7)
      10. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (5/7)
      11. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (6/7)
      12. 3.6 Angriffsmöglichkeit – Gezieltes Überschreiben von Speicherstellen (7/7)
      13. 3.7 Fazit
    7. 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/6)
      5. 4.4 Statische Analysen – Source Code Analyzer (2/6)
      6. 4.4 Statische Analysen – Source Code Analyzer (3/6)
      7. 4.4 Statische Analysen – Source Code Analyzer (4/6)
      8. 4.4 Statische Analysen – Source Code Analyzer (5/6)
      9. 4.4 Statische Analysen – Source Code Analyzer (6/6)
      10. 4.5 Gegenmaßnahme – Binary Audit
      11. 4.6 Bekämpfung der Auswirkungen
      12. 4.7 Gegenmaßnahme – Wrapper für fehleranfällige Bibliotheksfunktionen
      13. 4.8 Modifikationen der Prozessumgebung (1/9)
      14. 4.8 Modifikationen der Prozessumgebung (2/9)
      15. 4.8 Modifikationen der Prozessumgebung (3/9)
      16. 4.8 Modifikationen der Prozessumgebung (4/9)
      17. 4.8 Modifikationen der Prozessumgebung (5/9)
      18. 4.8 Modifikationen der Prozessumgebung (6/9)
      19. 4.8 Modifikationen der Prozessumgebung (7/9)
      20. 4.8 Modifikationen der Prozessumgebung (8/9)
      21. 4.8 Modifikationen der Prozessumgebung (9/9)
    8. 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
    9. Anhang A – Assembler-Codes
    10. Anhang B – Shellcodes
    11. Anhang C – fosbi (1/2)
    12. Anhang C – fosbi (2/2)
    13. Anhang D – No-NOP-Technik (1/2)
    14. Anhang D – No-NOP-Technik (2/2)
    15. Anhang E – flawfinder
    16. Literaturverzeichnis (1/2)
    17. Literaturverzeichnis (2/2)
    18. Index (1/2)
    19. Index (2/2)