Sicherheit von Webanwendungen in der Praxis (2018)

Die offizielle Webseite zur zweiten Auflage.

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 550 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 €5499 Softcover €7000

Neue Auflage

Seit April 2018 ist die zweite Auflage verfügbar!

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

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 2017(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
    • Umgang mit Passwörtern und technischen Schlüsseln
    • Zugriffsschutz
    • Anti-Automatisierung (CAPTCHAs und weitere Techniken)
    • Clientseitige Sicherheitsaspekte (CSP, CORS, etc.)
    • Fehlerbehandlung & Logging
    • Datensicherheit & Kryptographie
    • Sicherheit von Webdiensten (SOAP, REST, WebSockets)
    • Absicherung der Plattform (WAFs, Härtung von Webservern, Docker Security)
  • Kapitel 4: Verfahren zur Sicherheitsanalyse

    • Bewertungsverfahren
    • Konzeptionelle Verfahren:
      • Risiko- und Bedrohungsanalysen
      • Architektonisches Security Review
      • Security Requirement Review
    • Manuelle Verfahren:
      • Pentesting
      • Security Testing
      • Security Code Review
      • Peer Reviews
    • Automatisierte Verfahren (Tools):
      • Security Codeanalyse (SAST, IAST)
      • Web Security Scanner (DAST)
      • Software Component Analysis (SCA)
      • Fuzzing
    • Integration in die CI- und CD-Toolkette
  • 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 klassiche Softwareentwicklung
    • Besonderheiten bei agiler Softwareentwicklung (Scrum, Kanban) und DevOps
    • Empfehlungen für den Einführungsprozess

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 zweiten Auflage

Technologiekarte für Webanwendungen

Die zweite Auflage des Buches ist zwar noch nicht verfügbar, trotzdem möchte ich an dieser Stelle bereits erstes Zusatzmaterial veröffentlichen. Die folgende Darstellung zeigt geläufige Technologien und Programmiersprachen, die in modernen Webanwendungen heute eingesetzt werden. Natürlich stellt dies nur einen Auszug dar, denn es kommen ständig neue hinzu. Die Darstellung soll dabei helfen, insbesondere die unterschiedlichen Programmiersprachen, die vielfach auch im Buch erwähnt werden, besser verorten zu können.

Grundsätzlich untersteilen wir heute Frontend und Backend sowie entsprechend Frontend- und Backendentwicklung. Allerdings ist es wichtig zu verstehen, dass der Bereich Frontend sich wiederum in Technologien und Programmiersprachen unterteilt, die serverseitig und solche die auf dem Client (also im Browser) ausgeführt werden.

Same-Site Cookie Attribut (Abschnitt 3.9.5 „Session-State-Kontrolle“)

Kürzlich ist mit Same-Site Cookies eine sehr interessante neue Maßnahme für den Schutz vor CSRF-Angriffen veröffentlicht worden, die mittlerweile auch von ersten Browsern unterstützt wird und die ich an dieser Stelle gerne erwähnen möchte.

Gewöhnlich werden CSRF-Angriffe durch Synchronizer Tokens (auch Anti-CSRF-Tokens) verhindert, die als zusätzliches Hidden-Field in Formularen (meist from Web Framework) eingebaut, mitgesendet und automatisch validiert werden.

Das ganze sieht dann z.B. wie folgt aus:

<form action="http://bank.com/transfer.do" method="POST">
    <input type="hidden" name="acct" value="MARIA"/>
    <input type="hidden" name="amount" value="100000"/>
    <input type="submit" value="View my pictures"/>
    <input type="hidden" name="csrf_token" value="LKAS12AFU3499" />
</form>

Anders als diese server-seitige Maßnahme sind Same-Site Cookies client-seitig, dafür jedoch deutlich einfacher zu implementieren. Im Grunde bedarf es hierzu nur das mitsenden eines zusätzlichen Attributs im entsprechenden Set-Cookie-Statement der Session-ID:

Set-Cookie: JSESSIONID=123456789; path=/; httpOnly; secure; SameSite

In diesem Fall wird der Browser angewiesen, dieses Cookie nur dann mitzusenden, wenn der Request von derselben Seite („Same Site“) stammt.

Dieser Modus wird auch als Strict-Mode bezeichnet (gleichbedeutend mit „SameSite=Strict“). Durch den sogenannten Lax-Mode („SameSite=Lax“) lässt sich das insofern etwas abschwächen, als dass sich diese Restriktion nur auf HTTP-POST-Requests auswirkt, nicht jedoch auf GET-Requests. Der Lax-Mode ist somit zwar etwas schwächer, wird dafür aber auch kaum zu Problemen (etwa durch eine nicht funktionierende Navigation) führen.

Same-Site-Cookies sind eine sehr sinvolle Maßnahme, die jedoch eine entsprechende Browser-Unterstützung voraussetzt. Aktuell unterstützten die neusten Versionen von FireFox und Chrome dieses Flag, etwa nicht jedoch Edge oder Safari. Zudem ist diese Maßnahme nicht umsetzbar, wenn bei bestimmten Single-Sign-On-Mechanismen oder Mashups, die authentifizierte Cross-Site-Requests voraussetzen.

Daher sollte dieses Flag nur zusätzlich zu klassischen Anti-CSRF-Tokens eingesetzt werden.

WebAuthn API (Abschnitt 3.7 „Authentifizierungsverfahren“)

Eine ebenfalls sehr spannende neue Entwicklung im Bereich Web Security ist WebAuthn, einem W3C-Standard hinter dem so namenhafte Firmen wie Microsoft, Google, Mozilla und Paypal stecken.

Grundsätzlich handelt es sich hierbei um eine API, die fest in Browsern integriert wird und mit denen Benutzer sich über USB-U2F-Tokens an Webseiten per Public-Key-Authentifizierung authentifizieren können. Der Clou dabei ist, dass die Schlüssel auf diesem Device vom Benutzer über das Drücken eines integrierten Knopfes generiert werden, das Device somit niemals verlassen. In Verbindung mit einem Benutzerpasswort erhält der Benutzer damit eine recht robuste 2-Faktor-Authentifizierung.

Auch wenn die Unterstützung durch viele gängige Browser bereits gegeben ist, ist dies für serverseitige Security-Frameworks derzeit größtenteils noch nicht der Fall. Für die nahe Zukunft ist jedoch sicherlich eine recht hohe Adaption dieses Verfahrens zu erwarten, auch da die Kosten hierfür aus Sicht eines Betreibers im Vergleich zu Lösungen wie RSA SecureID sehr überschaubar sind.

Nähere Informationen zu dieser Technologie finden sich hier.