Sicherheit von Webanwendungen in der Praxis

Die offizielle Webseite zum Buch.

Webanwendungen bilden in Unternehmen zahlreiche sensible Geschäftsprozesse mit Kunden, Mitarbeitern, Partnern und Zulieferern ab. Daher ist die Sicherheit dieser Anwendungen von entscheidender Bedeutung.

In diesem Buch werden auf insgesamt 504 Seiten und mit Hilfe von über 160 Abbildungen die wichtigsten Aspekte der Webanwendungssicherheit erläutert. Neben Hintergründen, werden hierzu viele Best Practices für Entwicklung, Betrieb sowie Qualitätssicherung vorgestellt und beschrieben wie sich die Sicherheit von Webanwendungen durch organisatorische Prozesse nachhaltig verbessern läßt.

eBook €4699 Softcover €5999

Neue Auflage

Voraussichtlich noch Ende 2017 erscheint die zweite Auflage dieses Buches!

Mit der zweiten Auflage wurde dieses Buch mit sehr großem Aufwand vollständig überarbeitet, aktualisiert und an sehr vielen Stellen erweitert. Damit sollten nun nicht nur alle Kinderkrankheiten der ersten Auflage beseitigt, sondern das Buch insgesamt auch deutlich im Hinblick auf Vollständigkeit, Struktur und nicht zuletzt auch Verständlichkeit verbessert worden sein.

Viele inhaltliche Überarbeitungen betreffen das Kapitel 5 („Technische Sicherheitsmaßnahmen“). Das hat vor allem den Hintergrund, dass sich in den vergangenen Jahren hier zahlreiche neue Techniken und Standards hinzugekommen sind. Viele Anpassungen wurden auch in Kapitel 6 („Sicherheitsuntersuchungen von Webanwendungen“), und dort im Speziellen in Bezug auf neue Tool-Kategorien wie IAST oder Docker-Security-Scanner sowie dem Aspekt der Testautomatisierung im Allgemeinen, durchgeführt.

Die meisten Anpassungen sind aber sicherlich im Kapitel 7 („Sicherheit im Softwareentwicklungsprozess“) erfolgt. Auch durch sehr viele neue persönliche Erfahrungen in diesem Bereich aus verschiedenen Kundenprojekten, habe ich dieses Kapitel umgebaut und darin vor allem dem Thema agile Sicherheit sehr viel mehr Raum gegeben.

Sehr bedanken möchte ich mich an dieser Stelle nochmals für die zahlreichen Hinweise und Anmerkungen die mich erreicht haben. Sofern zutreffend, habe ich versucht sämtliche in das Buch einzuarbeiten. Natürlich bin ich für zusätzliche Hinweise weiterhin sehr dankbar! Bitte nutzten Sie hierzu einfach die Kontaktmöglichkeiten auf diese Seite. Hier werde ich auch weiterhin bei Bedarf relevante Anmerkungen und Erweiterungen zu diesem Buch bereitstellen.

Inhalt (erste Auflage)

Ein Auszug der Inhalte, die in diesem Buch behandelt werden:

  • Kapitel 1: Enführung in die Webanwendungssicherheit

    • Ursachen für unsichere Webanwendungen
    • Was ist Webanwendungssicherheit?
  • Kapitel 2: Häufige Bedrohungen für Webanwendungen (Angriffe und Schwachstellen)

    • WASC-TC, OWASP Top 10 (u.a.)
    • Interpreter Injection (SQL Injection etc)
    • Clientseitige Angriffe (XSS, CSRF etc.)
    • Angriffe auf Benutzerkonten und Privilegien
    • Information Disclosure
  • Kapitel 3: Technische Sicherheitsmaßnahmen

    • Standards und Organisationen
    • Sicherheitsprinzipien und Anti-Patterns
    • Datenvalidierung
    • Identifikation & Registrierung von Benutzern
    • Authentifizierungsverfahren
    • Absicherung des Session Managements
    • Passwörter
    • Zugriffsschutz
    • Anti-Automatisierung
    • Clientseitige Sicherheitsaspekte
    • Fehlerbehandlung & Logging
    • Datensicherheit & Kryptographie
    • Sicherheit von Webdiensten
    • Absicherung der Plattform
  • Kapitel 4: Verfahren zur Sicherheitsanalyse

    • Bewertungsverfahren
    • Konzeptionelle Verfahren:
      • Risk Assessments
      • Bedrohungsmodellierung
      • Architekturelles Security Review
      • Security Requirements Review
    • Manuelle Verfahren:
      • Pentesting
      • Security Testing
      • Security Code Review
    • Automatisierte Verfahren (Tools):
      • Security Codeanalyse (SAST)
      • Security Webscanner (DAST)
      • Fuzzing
  • Kapitel 5: Organisatorische (Web-)Anwendungssicherheit

    • Maßnahmen zur Etablierung von Nachhaltigkeit der Anwendungssicherheit im Unternehmen
    • Standards und Konzepte
      • Secure SDLC
      • Microsoft SDL
      • BSIMM, OpenSAMM, ISO 27034
    • Best Practices für
      • Wissensaufbau
      • IT-Sicherheit
      • Projekt Management
      • Entwicklung
      • Qualitätssicherung
      • Betrieb
    • Sicherheit in agiler Softwareentwicklung
    • Durchführung eines Application Security Programms (ASPs)

Das komplette Inhaltsverzeichnis des Buches findet sich hier.

Danksagungen

Das Buch hätte niemals in der vorliegenden Form entstehen können, wenn ich nicht durch viele Menschen großartig unterstützt worden wäre:

  • Thomas Schreiber (SecureNet GmbH) für seine aktive Mitarbeit

  • Prof. Dr. Saschar Paulus für das Schreiben des Geleitwortes

  • Markus Miedaner

  • Thomas Skora

  • Markus Kulicke

  • Christian Schneider

  • Wolfgang Rohr

  • Arndt Allmeling

  • David Matscheko

  • Thomas Kerbl

  • Max Herold

  • Andreas Kalender

  • Tim Eggert


Anmerkungen zur ersten Auflage

Gerade die Applikationssicherheit ist ständigen Änderungen und Neuheiten unterworfen. An dieser Stelle werde ich auf einige Punkte eingehen, die in der aktuellen Ausgabe des Buches noch nicht (oder nur eingeschränkt) behandelt sind. In der nächsten Ausgabe, werden diese Inhalte aller Vorraussicht nach eingebaut werden.

DevOps & Agile Softwareentwicklung (Kapitel 1 und 6)

In den vergangengen Jahren hat sich vieles im Bereich agiler Sicherheit und Security bei DevOps getan, gerade in Bezug auf dort anwendbare Maßnahmen. Leider ist dieses Thema in der aktuellen Auflage noch relativ oberflächlich beschrieben, was ich mit der nächsten Auflage jedoch ändern werde.

Bis dahin empfehle ich meinen kürzlich im Java Magazin zu diesem Thema veröffentlichten Artikel sowie den folgenden Blog Post.

Pfad-Parameter (Kapitel 1.2.2 Design-Entscheidungen des HTTP-Protokolls)

Neben sogenannten Parametern, die in im Query String der URL (HTTP GET, z.B. ?applicationId=12) oder im Request-Body (HTTP POST) übertragen werden, wird von vielen modernen Webframeworks auch eine weitere Möglichkeit geboten, um HTTP-Requests zu parametrisieren und zwar mittels sogenannter Pfad-Parameter. Diese werden zwar auch innerhalb der URL, jedoch nicht im Query-String, sondern eben über den Pfad spezifiziert.

Insbesondere für die Referenzierung von spezifischen Objekten, sind Pfad-Parameter sehr verbreitet und (als Ergänzung zu Parametern im Query String) auch sicherlich für solche Einsatzzwecke auch durchaus sinnvoll. Hier ein Beispiel:

http://www.example.com/application/12/edit

Prinzipiell handelt es sich hierbei jedoch natürlich aber nur um eine andere Form von GET-Parameter, für die damit auch die gleichen Sicherheitsvorbehalte gelten, als wenn Paramter im Query-String übertragen werden.

IAST-Tools (Kapitel 4.6 Dynamische Testverfahren)

Neben Tools im Bereich Dynamic Application Security Testing (DAST) und Static Application Security Testing (SAST) gewinnt seit kurzem eine weitere Tool-Kategorie immer weiter an Bedeutung. Gartner hat diese Interactive Application Security Testing (IAST) getauft. Grundsätzlich handelt es sich hierbei wie bei DAST um Tests einer lauffähigen Anwendung (daher lässt sich IAST grundsätzlich auch als Unterkategorie von DAST sehen).

Allerdings arbeiten IAST-Tools stets mit einem Agenten, der auf dem Applikationsserver zur Laufzeit die dort konkret verarbeiteten Datenflüsse überwacht und im Hinblick auf potentielle Schwachstellen (insb. SQL Injection, Cross-Site Scripting und andere Datenfluss-basierte Schwachstellen) untersucht. Relevante Tools in diesem Bereich sind insbesondere Contrast der Firma Contrast Security sowie Seeker der Firma Quotium.

Beide Tools arbeiten ähnlich, aber doch etwas unterschiedlich. Generell besitzen jedoch beide den sehr gewichtigen Vorteil gegenüber klassischen DAST-Tools (z.B. IBM AppScan oder OWASP ZAP), dass diese innerhalb der Qualitätssicherung im Rahmen von gewöhnlichen funktionalen Tests mitlaufen können, ohne eine komplexe anwendungsspezifische Konfiguration zu erfordern.

ISO/IEC 27001 (Kapitel 5.2 Relevante Standards und Projekte)

Im Bereich der organisatorischen Anwendungssicherheit ist neben ISO/IEC 27034 natürlich auch ISO/IEC 27001 relevant, und daraus konkret die Controls „A.14 System acquisition, development and maintenance“. Wichtige Aspekte sind hierbei vorallem:

  1. Die Berücksichtigung von Sicherheit im Rahmen des Changemanagements (Im Buch in Kapitel 5.5.7 „Sicherheit im Change Management adressieren“ beschrieben)
  2. Der Umgang mit Zulieferern (Im Buch in Kapitel 5.4.3 „Vorgaben und Sign-Offs für Softwarelieferanten“)
  3. Erstellung und Enforcements eines Standards für (Web-)Applicationssicherheit (im Buch in Kapitel 5.4.2. „Richtlinien“ zur Anwendungssicherheit erstellen und Pflegen“)
  4. Sowie natürlich der Aufbau eines Management-Systems für Applikationssichehreit (ASMS, im Buch in Kapitel 5.4.1.)