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

Basiswissen Sichere Software

Book Description

  • erstes deutsches Buch zum Thema und zur ISSECO-Zertifizierung Autor hat mit am Lehrplan gearbeitet * erste ISSECO-Schulungen laufen an zunehmend auch Thema an Hochschulen

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Geleitwort von Stephan Goericke
    1. Sicherheit ist Softwarequalität.
  5. Geleitwort von Jörg Brinkmann
  6. Vorwort
  7. Inhaltsverzeichnis
  8. 1 Einleitung
    1. 1.1 Ziele dieses Buches
      1. 1.1.1 Warum brauchen wir sichere Software?
      2. 1.1.2 Warum wird Sicherheit bei Softwareentwicklung oft vernachlässigt?
      3. 1.1.3 Was sind die Folgen von ausgelieferter unsicherer Software?
    2. 1.2 Inhalte dieses Buches
      1. Zielgruppe dieses Buches
    3. 1.3 ISSECO und die CPSSE-Zertifizierung
      1. 1.3.1 ISSECO
      2. 1.3.2 Certified Professional for Secure Software Engineering (CPSSE)
  9. 2 Die Sicht des Kunden
    1. 2.1 Ben und sein Projektteam
    2. 2.2 Verschiedene Interessengruppen – verschiedene Interessen
    3. 2.3 Warum erwarten Kunden sichere Software?
    4. 2.4 Was genau erwarten Kunden eigentlich?
      1. 2.4.1 Häufig wiederkehrende Anforderungen
      2. 2.4.2 Eine Klassifikation der Sicherheitserwartungen an Produkte
      3. 2.4.3 Eine Klassifikation der Sicherheitserwartungen an den Hersteller
      4. 2.4.4 Compliance-Anforderungen
    5. 2.5 Werte, Bedrohungen und Risiken
    6. 2.6 Von Erwartungen zu technischen Anforderungen
    7. 2.7 Helfen Sie dem Kunden, dann helfen Sie sich selbst!
    8. 2.8 Ben spricht noch einmal mit dem Kunden
  10. 3 Die Sicht des Angreifers
    1. 3.1 Jewgeni
    2. 3.2 Was sind Hacker?
      1. 3.2.1 Berühmte Hacker
      2. 3.2.2 Qualifizierungsstufen von Hackern
      3. 3.2.3 Motivationen zum Hacken
    3. 3.3 Wie geht ein Hacker vor?
      1. 3.3.1 Vorgehensweisen zum Hacken
      2. 3.3.2 Der Hacking-»Prozess«
      3. 3.3.3 Welche Werkzeuge setzt ein Hacker ein?
    4. 3.4 Jewgeni hat eine Idee
  11. 4 Methodologien für sichere Software
    1. 4.1 Bens Entwicklungsmethodik
    2. 4.2 Sichere Software im Überblick
    3. 4.3 Softwareentwicklungsmethoden
    4. 4.4 Maßnahmen zur Verbesserung der Sicherheit
    5. 4.5 Existierende Modelle
      1. 4.5.1 Common Criteria
      2. 4.5.2 ISO 27002: Entwicklung von Informationssystemen
      3. 4.5.3 SSE-CMM
      4. 4.5.4 BSIMM / OpenSAMM
      5. 4.5.5 Microsoft SDL
      6. 4.5.6 OWASP
      7. 4.5.7 Weitere Ansätze
      8. 4.5.8 Welcher Weg ist der richtige?
    6. 4.6 Ben denkt über Sicherheit nach
  12. 5 Sicherheitsanforderungen
    1. 5.1 Bens Sicherheitsanforderungen
    2. 5.2 Was sind Anforderungen?
      1. 5.2.1 Funktionale und nicht funktionale Anforderungen
      2. 5.2.2 Wie definiert man gute Anforderungen?
    3. 5.3 Wie identifiziert man Sicherheitsanforderungen?
      1. 5.3.1 Grundwerte der Informationssicherheit
      2. 5.3.2 Misuse Cases
      3. 5.3.3 Betrachtung des Kontextes
      4. 5.3.4 Bedrohungsmodellierung
      5. 5.3.5 Auflösung von Konflikten
    4. 5.4 Wichtige Sicherheitsanforderungen
      1. 5.4.1 Standardisierte Sicherheitsanforderungen nach Common Criteria
      2. 5.4.2 Sicherheitsanforderungen nach OWASP
      3. 5.4.3 Gesetzliche Anforderungen
      4. 5.4.4 Bereiche, die für Sicherheitsanforderungen relevant sein können
    5. 5.5 Bens neue Anforderungsliste
  13. 6 Bedrohungsmodellierung
    1. 6.1 Bens Bedrohungsmodellierung
    2. 6.2 Der Nutzen einer Bedrohungsmodellierung
    3. 6.3 Die Phasen der Bedrohungsmodellierung
      1. 6.3.1 Werte und Akteure identifizieren
      2. 6.3.2 Übersicht der geplanten Architektur erstellen
      3. 6.3.3 System in Einzelteile herunterbrechen
      4. 6.3.4 Bedrohungen identifizieren
        1. 6.3.4.1 Brainstorming
        2. 6.3.4.2 Checklisten
        3. 6.3.4.3 Datenflussdiagramme
        4. 6.3.4.4 Angriffsbäume
        5. 6.3.4.5 Automatische Werkzeuge
      5. 6.3.5 Bedrohungen dokumentieren
      6. 6.3.6 Bedrohungen bewerten
        1. 6.3.6.1 DREAD
        2. 6.3.6.2 OWASP Risk Rating
      7. 6.3.7 Gegenmaßnahmen planen
    4. 6.4 Bens zweiter Versuch
  14. 7 Sicherer Softwareentwurf
    1. 7.1 Bens Softwareentwurf für Sicherheit
    2. 7.2 Sicherer Softwareentwurf und sichere Softwarearchitekturen
    3. 7.3 Secure Design Patterns
      1. 7.3.1 Föderiertes Identitätsmanagement
      2. 7.3.2 Authentifizierung
      3. 7.3.3 Sitzungsverwaltung
      4. 7.3.4 Verschlüsselung
      5. 7.3.5 Zugriffskontrollmodelle
      6. 7.3.6 Privileged Core
      7. 7.3.7 Single Access Point
    4. 7.4 Secure Design Principles
      1. 7.4.1 Least Privilege
      2. 7.4.2 Secure the Weakest Link
      3. 7.4.3 Defense in Depth
      4. 7.4.4 No Security by Obscurity
      5. 7.4.5 Secure by Default
      6. 7.4.6 Fail Safe
      7. 7.4.7 Input Validation und Output Encoding
      8. 7.4.8 Minimize Attack Surface
      9. 7.4.9 Don’t Mix Code and Data
      10. 7.4.10 Wählen Sie Ihre eigenen Prinzipien
    5. 7.5 Review der Sicherheitsarchitektur
    6. 7.6 Ben war auf einer Konferenz
  15. 8 Sicheres Programmieren
    1. 8.1 Bens Tricks zum sicheren Programmieren
    2. 8.2 Es gibt keine Tricks
    3. 8.3 Welche Schwachstellen sind am kritischsten?
      1. 8.3.1 OWASP Top Ten
      2. 8.3.2 The 19 Deadly Sins of Software Security
      3. 8.3.3 The Seven Pernicious Kingdoms
    4. 8.4 Wiederkehrende Muster von Schwachstellen
      1. 8.4.1 Unsicherer Umgang mit Eingaben und Ausgaben
      2. 8.4.2 Unsicherer Umgang mit dem Speicher
      3. 8.4.3 Unsicherer Umgang mit Wettlaufsituationen
      4. 8.4.4 Unsicherer Umgang mit Berechtigungen und Ressourcen
    5. 8.5 Techniken für sicheres Programmieren
      1. 8.5.1 Input-Validierung und Output-Sanitisierung
      2. 8.5.2 Sichere Funktionen und Sprachen
      3. 8.5.3 Atomare Funktionen und sichere Semaphore
      4. 8.5.4 Minimale Rechte
    6. 8.6 Die wichtigsten Schwachstellen und Gegenmaßnahmen
      1. 8.6.1 Cross-Site Scripting
      2. 8.6.2 SQL-Injection
      3. 8.6.3 Cross-Site Request Forgery
      4. 8.6.4 Insecure Direct Object Reference
      5. 8.6.5 Remote File Inclusion
    7. 8.7 Werkzeuge zur sicheren Programmierung
    8. 8.8 Klaus’ Empfehlungen für die sichere Programmierung
  16. 9 Software auf Sicherheit testen
    1. 9.1 Bens Sicherheitstest
    2. 9.2 Sicherheit und Softwaretests
      1. 9.2.1 Unterschiede zu »normalen« Softwaretests
      2. 9.2.2 Sicherheitstests in jeder Phase anwenden
      3. 9.2.3 Integration mit »normalem« Softwaretesten
      4. 9.2.4 Quellen für Testfälle
    3. 9.3 Hacking-Techniken als Sicherheitstests
      1. 9.3.1 Blackbox-Penetrationstests
      2. 9.3.2 Whitebox-Penetrationstests
    4. 9.4 Sicherheitsspezifische Testmuster
      1. 9.4.1 Spidering
      2. 9.4.2 Googeln
      3. 9.4.3 Fuzzing
      4. 9.4.4 Infrastruktur-Check
      5. 9.4.5 Business-Logik
    5. 9.5 Sicherheitskritische Testbereiche
      1. 9.5.1 Authentifizierung
      2. 9.5.2 Sitzungsverwaltung
      3. 9.5.3 Input-Validierung
      4. 9.5.4 Denial of Service
    6. 9.6 Codereview
    7. 9.7 Sicherheitstestberichte schreiben
    8. 9.8 Der Sicherheitstest vom QMB
  17. 10 Sichere Auslieferung und Einrichtung
    1. 10.1 Bens Installationsanleitung
    2. 10.2 Sicherheit im IT-Betrieb
      1. 10.2.1 Sicherheitsaspekte von ITIL
      2. 10.2.2 ISO 27001
      3. 10.2.3 Common Criteria ISO 15408
      4. 10.2.4 Sicherheitsrelevante Dokumentationen
    3. 10.3 Phasen der Softwareeinrichtung
      1. 10.3.1 Sicherheit in der »Release«-Phase
      2. 10.3.2 Sichere Konfiguration
      3. 10.3.3 Sicherheit bei der Aktivierung von Software
      4. 10.3.4 Sicherheit bei Anpassung und Update
    4. 10.4 Pauls Korrekturen der Installation
  18. 11 Umgang mit Schwachstellen
    1. 11.1 Bens Security Response
    2. 11.2 Sicherheit im normalen Supportprozess
      1. 11.2.1 Getrennte Behandlung von Sicherheitsproblemen
      2. 11.2.2 Getrennte Sicherheitskorrekturen
    3. 11.3 Offenlegungsstrategien für Schwachstellen
      1. 11.3.1 Full Disclosure
      2. 11.3.2 No Disclosure
      3. 11.3.3 Responsible Disclosure
    4. 11.4 Erfolgreich über Schwachstellen reden
      1. 11.4.1 Was muss kommuniziert werden?
      2. 11.4.2 Erfolgskriterien
    5. 11.5 Standards für Schwachstellenbeschreibungen
      1. 11.5.1 CVE
      2. 11.5.2 CVSS
      3. 11.5.3 CAIF
    6. 11.6 Entwicklung einer Security Response Policy
    7. 11.7 Ben und die IT-Presse
  19. 12 Metriken für Sicherheit
    1. 12.1 Bens Messgrößen
    2. 12.2 Warum überhaupt Metriken für Sicherheit?
    3. 12.3 Softwaremetriken
    4. 12.4 Arten von Metriken
    5. 12.5 Qualitätskriterien für Metriken
    6. 12.6 Existierende Metriken für Sicherheit
    7. 12.7 Entwicklung von Metriken für Sicherheit
      1. 12.7.1 Formale Definition einer Metrik für Softwaresicherheit
      2. 12.7.2 Prozess zur Entwicklung von Metriken für Softwaresicherheit
      3. 12.7.3 Ein Satz von Metriken für Bens Team
  20. 13 Codeschutz
    1. 13.1 Ben und seine eigene IT-Sicherheit
    2. 13.2 Gründe, den Code zu schützen
    3. 13.3 Technische Risiken während der Entwicklungsphase
    4. 13.4 Grundsätzliche Schutzmechanismen
    5. 13.5 Besondere Anforderungen durch Export und Politik
    6. 13.6 Technische Lösungen für den Schutz von Code
      1. 13.6.1 Software as a Service
      2. 13.6.2 Verwendung von prozessorspezifischem Code
      3. 13.6.3 Codeverschleierung
      4. 13.6.4 Verschlüsselung von Code
      5. 13.6.5 Code Signing
    7. 13.7 Lizenzschutz
      1. 13.7.1 Offline-Lizenzmechanismen
      2. 13.7.2 Online-Lizenzmechanismen
      3. 13.7.3 Dongle-basierte Lizenzmechanismen
      4. 13.7.4 Lizenzaudits
      5. 13.7.5 Überhaupt Lizenzen?
    8. 13.8 Was hätte Ben unternehmen können?
  21. 14 Testfragen
    1. Kapitel 1: Einleitung
    2. Kapitel 2: Die Sicht des Kunden
    3. Kapitel 3: Die Sicht des Angreifers
    4. Kapitel 4: Methodologien für sichere Software
    5. Kapitel 5: Sicherheitsanforderungen
    6. Kapitel 6: Bedrohungsmodellierung
    7. Kapitel 7: Sicherer Softwareentwurf
    8. Kapitel 8: Sicheres Programmieren
    9. Kapitel 9: Software auf Sicherheit testen
    10. Kapitel 10: Sichere Auslieferung und Einrichtung
    11. Kapitel 11: Umgang mit Schwachstellen
    12. Kapitel 12: Metriken für Sicherheit
    13. Kapitel 13: Codeschutz
    14. Antworten
      1. Kapitel 1: Einleitung
      2. Kapitel 2: Die Sicht des Kunden
      3. Kapitel 3: Die Sicht des Angreifers
      4. Kapitel 4: Methodologien für sichere Software
      5. Kapitel 5: Sicherheitsanforderungen
      6. Kapitel 6: Bedrohungsmodellierung
      7. Kapitel 7: Sicherer Softwareentwurf
      8. Kapitel 8: Sicheres Programmieren
      9. Kapitel 9: Software auf Sicherheit testen
      10. Kapitel 10: Sichere Auslieferung und Einrichtung
      11. Kapitel 11: Umgang mit Schwachstellen
      12. Kapitel 12: Metriken für Sicherheit
      13. Kapitel 13: Codeschutz
  22. Abkürzungen
  23. Glossar
  24. Literatur
    1. Kapitel 1: Einleitung
    2. Kapitel 2: Die Sicht des Kunden
    3. Kapitel 3: Die Sicht des Angreifers
    4. Kapitel 4: Methodologien für sichere Software
      1. Webseiten
    5. Kapitel 5: Sicherheitsanforderungen
      1. Standards/Normen
    6. Kapitel 6: Bedrohungsmodellierung
    7. Kapitel 7: Sicherer Softwareentwurf
      1. Webseiten
    8. Kapitel 8: Sicheres Programmieren
      1. Webseiten
    9. Kapitel 9: Software auf Sicherheit testen
    10. Kapitel 10: Sichere Auslieferung und Einrichtung
      1. Webseiten
    11. Kapitel 11: Umgang mit Schwachstellen
    12. Kapitel 12: Metriken für Sicherheit
      1. Standards/Normen
    13. Kapitel 13: Codeschutz
  25. Index
  26. Fußnoten
    1. Preface
    2. Kapitel 6
    3. Kapitel 12
    4. Kapitel 13