Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Sicherheit in Web-Anwendungen
Java Forum Stuttgart 2018
Bernhard Hirschmann
Stuttgart, 2018
v1
Opfer Kein Opfer
9 von 10 Unternehmen sind Opfer von Angriffen
Bösartiger Außenseiter Versehentlicher Verlust Bösartiger Insider Hacktivist State Sponsored Unbekannt
Täter der Einbrüche
Identitäts-Diebstahl Finanzzugang Kontodaten Existenzdaten Provokationen
Typen der Einbrüche
9.740.567.988
Data Breach Statistics
Stündlich
214.853 Datensätze
Täglich
5.156.468 Datensätze
Pro Minute
3.581 Datensätze
Pro Sekunde
60 Datensätze
Quelle: http://breachlevelindex.com/ (Jan. 2013 – Feb. 2018)
weltweit über 9.740.567.988 Datensätze verschwunden
Verlorene oder gestohlene Datensätze in Deutschland 2016
Organisation Datensätze Typ Täter Branche
Aerticket 1.500.000 Identitäts-Diebstahl Böswilliger Außenseiter Reise
BlaBlaCar 743.000 Finanzzugang Böswilliger Außenseiter Einzelhandel
Deutsche Telekom 120.000 Kontodaten Böswilliger Außenseiter Technologie
Postbank, Commerbank, Landesbank Berlin/
MasterCard 85.000 Finanzzugang Böswilliger Außenseiter Finanzen
Lukas Hospital Klinikum Arnsberg
unbekannt Existenzdaten Böswilliger Außenseiter Gesundheitswesen
ThyssenKrupp unbekannt Existenzdaten Böswilliger Außenseiter Industrie
Sanacorp unbekannt Provokation Versehentlicher Verlust Gesundheitswesen
BDSwiss Handelsplattform
2.500 Provokation Böswilliger Außenseiter Finanzen
Quelle: http://breachlevelindex.com
Gestohlene Datensätze
Quelle: https://www.heise.de/security/meldung/Hacker-kopieren-Nutzer-Daten-von-Mitfahrgelegenheit-de-und-Mitfahrzentrale-de-3507285.html
Mitfahrgelegenheit.de / Mitfahrzentrale.de
@
Hack des Cloud-Dienstes
Comuto
Daten AES verschlüsselt
Key mit abgelegt
In DB
638.000 IBAN-Nummern
101.000 E-Mail
15.000 Mobilnr.
Hoch-sicherheitsnetz
der Bundesregierung
Russische Hackergruppe
Snake
Angriff über Fachhochschule
des Bundes
Spionagesoftware Uroburos
Kommunikation über Outlook
@
Quelle: http://www.heise.de
Gestohlene Datensätze
Bundeshack - Auswärtiges Amt
Security Strategie entwickeln
Statistik:
Maßnahmen:
Erfahrung:
Umgang mit Hacker-Angriffen
• Secure Coding der Anwendung
• Robuste Authentifizierung
• Durchdachte Autorisierung
• Verschlüsselung der Daten
• Sicherer Transport und Austausch
Bei nur 4% der Angriffe sind Daten verschlüsselt
Verschlüsselung
verbessert
Sicherheit enorm!
Sicherheitsverstöße und Einbrüche sind nicht vermeidbar
Quelle: https://www.rachaelandtom.info/photos/picture/1351-kurios119
Daten verschlüsseln Schlüssel sicher aufbewahren und
verwalten
Benutzerzugriffe verwalten
Stark Verschlüsseln bei
• Übertagung
• Austausch
• Speicherung
Damit wird Angriff sinnlos oder zu aufwändig.
Prozess für Schlüsselverwaltung festlegen:
• Limitieren
• Regelmäßiges Aus-
wechseln
• Vergabe
Schlüssel müssen geheim sein und bleiben.
Festlegen wer Zugriff auf Daten hat
• Verifikations-Prozess
• Zugriffs-Level
• Starke Authentifizierung
• Kommunikation mit Benutzergruppen
Secure Coding
Vermeiden gängiger Sicherheitslücken.
Best-Practices
anwenden.
Gestählte Crypto-Libs
verwenden.
Sicherheits-Maßnahmen
Warum Secure Coding?
Entwickler für Schwachstellen sensibilisieren
Welche Gefahren? Woher Hilfe? Wo nachschlagen?
Wissen Einfallstore Web-Anwendungen sind schützenswert. Wenn unsicher, dann Einfallstor. Sie verbinden eine Firma mit dem Web.
Bedrohungen Infrastruktur kann noch so sicher sein Wenn Anwendung gehackt wird, kommt man rein.
Risiken Wer Risiken nicht kennt, kann sie beim Coden nicht berücksichtigen.
DevOps Zyklus
Dev Ops Sec
agil! dynamisch! Wasserfall!
100 10 1
SecDevOps Zyklus
SecDev Ops
Continuous Security Testing
• Statische und dynamische Analysen
• frühzeitig und regelmäßig
SecDevOps Zyklus
Wie bringt man Sec und Dev zusammen?
• Secure Coding Richtlinien – aufstellen und etablieren
• Integration in Build-Prozess (SDLC)
• Automatisierung
• Zusammenarbeit von Entwicklung, Betrieb und Sicherheitsbeauftragten
- SecDevOps
SecDevOps Einführen des neuen Prozesses
Secure Coding & Security Testing
Recherche & Analyse
Richtlinien aufstellen
Sensibilisierung & Schulung
Integration Build-Prozess
Evaluierung
Nr Beschreibung Risiko Verwundbarkeit/Schwachstelle
Angriffe Testbar durch
1 Verhindere das Injizieren von Schadcode A1 - OWASP Top-10 2017 WASC-20 CWE-20 CWE-89
WASC-19 CAPEC-66
FindSecBugs
2 Verwende keine hartcodierten Passwörter A2 - OWASP Top-10 2017 CWE-798 CWE-259 CWE-321
CAPEC-190 FindSecBugs
3 Verwende sicheres Session-Management A2 - OWASP Top-10 2017 CWE-613 CWE-614
WASC-47 CAPEC-21
web.xml Check
4 Verwende keine vorhersagbaren Zufallszahlen-Generatoren
A2 - OWASP Top-10 2017 CWE-6 CWE-330
CAPEC-21 CAPEC-112 WASC-11
FindSecBugs
5 Verhindere den unerlaubten Zugriff auf Dateien durch Pfad-Manipulationen
A5 - OWASP Top-10 2017 CWE-22 WASC-33 CAPEC-126
FindSecBugs
6 Vermeide die Anzeige von technischen Fehlermeldungen
A6 - OWASP Top-10 2017 CWE-209 WACS-14
CAPEC-54 web.xml Check
7 Verwende keine schwachen Krypto-Algorithmen A3 - OWASP Top-10 2017 CWE-326 CWE-327 CWE-261
CAPEC-55 CAPEC-112
FindSecBugs
8 Verwende sichere Deserialisierung A8 - OWASP Top-10 2017 CWE-502 CAPEC-586 web.xml Check
9 Verwende keine 3rd-Party Libraries mit bekannten Verwundbarkeiten
A9 - OWASP Top-10 2017 Diverse: Injection, Broken Access Control, XSS, etc.
Entsprechend den Verwundbarkeiten
OWASP Dependency Check Retire.js
10 Verwende Monitoring für sicherheitsrelevante Ereignisse
A10 - OWASP Top-10 2017 CWE-778
Monitoring
Secure-Coding Richtlinien umsetzen
Auswirkung
Vorbeugung
Ursache
Beispiel 1: Verhindere das Injizieren von Schadecode in SQL-Befehle
• Keine Parameter ungeprüft in SQL-Anweisung einfügen
• Verwendung von Prepared Statements • Verwendung von Hibernate Criteria
Ausführung unberechtigter Abfragen oder
Manipulation von Daten
Ungeprüfte Übernahme von Usereingaben oder Parametern in SQL-Abfragen
Secure-Coding Richtlinien umsetzen
Auswirkung
Vorbeugung
Ursache
Beispiel 2: Verwende keine 3rd-Party Libraries mit bekannten Verwundbarkeiten
• Regelmäßig alle Jars mit dem OSAWP Dependency Checker prüfen
• JavaScript-Bibliotheken mit Retire.js prüfen
• Updates und Fixes einspielen
Web-Anwendung ist je nach Schwachstelle angreifbar
Schwachstellen in 3rd-Party Libraries sind beliebte Angriffspunkte in Web-Anwendungen
SecDevOps Tools (1)
Statische Codeanalyse
„The SpotBugs plugin for security audits of Java web applications“
IDE Integration:
Eclipse, IntelliJ, Android Studio, Sonar Qube
Command Line Interface, Ant, Maven
http://find-sec-bugs.github.io
FindSecBugs
SecDevOps Tools (2)
Findet bekannte, verwundbare Java Libraries
Suche basiert auf Vulnerability Database des NIST
Integration:
Command Line Interface, Ant, Maven, Gradle,
Jenkins, SonarQube
https://www.owasp.org/index.php/OWASP_Dependency_Check
OWASP Dependency Check
Schwachstellen-Datenbanken abfragen
Tool: OWASP Dependency Check
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
Prüft Komponenten anhand Quellcode / Libraries
Sucht in National
Vulnerability Database (NVD) nach Einträgen
Einträge enthalten Common Vulnerabilities and
Exposures (CVE)
Erstellt Report mit Findings und Referenzen zu CVE-Einträgen
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<reporting>
<plugins> <plugin>
<groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>3.0.2</version>
</plugin> </plugins> </reporting>
...</project>
Verwenden des OWASP-Plugins im Maven-Build
pom.xml
Report generieren mit: mvn site
Erstellt Report in: target/site/dependency-check-report.html
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
[INFO] Generating "dependency-check" report --- dependency-check-maven:3.0.2:check[INFO] Checking for updates[INFO] starting getUpdatesNeeded() ...
[INFO] Download Started for NVD CVE - Modified[INFO] Download Complete for NVD CVE - Modified (2513 ms)
[INFO] Processing Started for NVD CVE - Modified[INFO] Processing Complete for NVD CVE - Modified (1762 ms)[INFO] Begin database maintenance.
[INFO] End database maintenance.[INFO] Check for updates complete (8072 ms)
[INFO] Analysis Started[INFO] Finished Archive Analyzer (0 seconds)[INFO] Finished File Name Analyzer (0 seconds)
[INFO] Finished Jar Analyzer (1 seconds)[INFO] Finished Central Analyzer (7 seconds)[INFO] Finished Dependency Merging Analyzer (0 seconds)
[INFO] Finished Version Filter Analyzer (0 seconds)[INFO] Finished Hint Analyzer (0 seconds)
[INFO] Created CPE Index (1 seconds)[INFO] Finished CPE Analyzer (2 seconds)[INFO] Finished False Positive Analyzer (0 seconds)
[INFO] Finished Cpe Suppression Analyzer (0 seconds)[INFO] Finished NVD CVE Analyzer (0 seconds)
[INFO] Finished Vulnerability Suppression Analyzer (0 seconds)[INFO] Finished Dependency Bundling Analyzer (0 seconds)[INFO] Analysis Complete (13 seconds)
Ausgabe der Maven-Console (1)
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
One or more dependencies were identified with known vulnerabilities in example-ngui:
jackson-databind-2.8.10.jar (cpe:/a:fasterxml:jackson-databind:2.8.10, cpe:/a:fasterxml:jackson:2.8.10,
com.fasterxml.jackson.core:jackson-databind:2.8.10) : CVE-2017-17485, CVE-2018-5968tomcat-embed-core-8.5.20.jar (cpe:/a:apache_software_foundation:tomcat:8.5.20, cpe:/a:apache:tomcat:8.5.20, cpe:/
a:apache_tomcat:apache_tomcat:8.5.20, org.apache.tomcat.embed:tomcat-embed-core:8.5.20) : CVE-2017-12617spring-boot-starter-data-redis-1.5.7.RELEASE.jar (org.springframework.boot:spring-boot-starter-data-redis:1.5.7.RELEASE, cpe:/a:redis-store:redis-store:1.5.7, cpe:/a:pivotal_software:spring_boot:1.5.7, cpe:/
a:pivotal_software:redis:1.5.7) : CVE-2013-7458, CVE-2015-8080, CVE-2015-4335ognl-3.0.8.jar (cpe:/a:ognl_project:ognl:3.0.8, ognl:ognl:3.0.8) : CVE-2016-3093
AppleJavaExtensions-1.4.jar (cpe:/a:apple:java:1.4, com.apple:AppleJavaExtensions:1.4) : CVE-2010-0538groovy-2.4.12.jar (org.codehaus.groovy:groovy:2.4.12, cpe:/a:apache:groovy:2.4.12) : CVE-2016-6497xercesImpl-2.9.1.jar (xerces:xercesImpl:2.9.1, cpe:/a:apache:xerces2_java:2.9.1) : CVE-2012-0881
struts-core-1.3.8.jar (org.apache.struts:struts-core:1.3.8, cpe:/a:apache:struts:1.3.8) : CVE-2016-1182, CVE-2016-1181, CVE-2014-0114, CVE-2015-0899struts-tiles-1.3.8.jar (cpe:/a:apache:struts:1.3.8, org.apache.struts:struts-tiles:1.3.8, cpe:/a:apache:tiles:1.3.8) :
CVE-2016-1182, CVE-2016-1181, CVE-2014-0114, CVE-2015-0899exmpl-commons-2.0.0.jar (cpe:/a:pivotal:spring_framework:2.0.0, com.exmpl.parent:exmpl-commons:2.0.0, cpe:/
a:pivotal_software:spring_boot:2.0.0.m4, cpe:/a:pivotal_software:spring_framework:2.0.0) : CVE-2016-9878, CVE-2017-8046
See the dependency-check report for more details.
Ausgabe der Maven-Console (2)
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
Anmerkungen:
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: Dependency Check
Analyse für verwundbare Komponenten theoretisch einfach
Praxis: viele False Positives
Versions-Schema oder -Angaben oft nicht eindeutig
Schwachstellen-Datenbanken (wie CVE) enthalten nicht alles
Abhängigkeiten der verwundbaren Komponenten zu eingesetzten Komponenten müssen über Dependency-Tree aufgelöst werden
SecDevOps Tools (3)
Findet bekannte, verwundbare JavaScript Libs
Integration:
Command Line Interface,
Plugins für: Grunt, Chrome, Firefox, Burp, OWASP ZAP
https://retirejs.github.io/retire.js/
Retire.js
Tool: retire.js https://retirejs.github.io/retire.js
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: retire.js
Quelle: https://retirejs.github.io/retire.js/
Scannt Webseiten nach verwundbaren JavaScript Komponenten
Findet bekannte, verwundbare JS-Komponenten
CLI, Plugins für: Grunt, Chrome, Firefox, Burp, OWASP ZAP
Nutzung von Komponenten mit bekannten Schwachstellen Prävention: retire.js
Quelle: https://addons.mozilla.org/de/firefox/addon/retire-js/
Viele Anwendungen haben schlechte oder gar keine Security-Logs.
Ohne Security Event Informationen können keine Angriffe erkannt werden.
Logging und Monitoring
Kompromittierte
User-Accounts finden
Auf Ereignisse reagieren
Missbrauch von Berechtigungen erkennen
Angriffe erkennen
Unzureichendes Logging und Monitoring Präventionen
• Eine zentrale Funktion für alle Logging-Vorgänge verwenden
• Sicherstellen, dass ein Mechanismus zur Durchführung der Log-Analyse vorhanden ist
• Zugriff auf Protokolle beschränken auf autorisierte Personen
• Keine sensiblen Informationen loggen, einschließlich unnötiger Systemdetails, Session-IDs oder
Passwörter
• Angriff auf Monitoring verhindern: nur vertrauenswürdige Daten loggen
Anforderungen (1)
Logging und Monitoring
Unzureichendes Logging und Monitoring Präventions-Maßnahmen - Allgemein
• Alle Events mit Benutzerkontext protokollieren, um verdächtige oder bösartige Konten zu
identifizieren
• Ausreichend lange Aufbewahrung der Logs, um verzögerte, forensische Analyse zu ermöglichen
• Protokolle in Format erstellen, das von zentralem Protokollmanagement genutzt werden kann
• Kritische Transaktionen über Audit-Trail mit Integritätskontrollen tracken, um Manipulationen oder
Löschungen zu verhindern
Anforderungen (2)
Logging und Monitoring
Unzureichendes Logging und Monitoring Präventions-Maßnahmen - Allgemein
• Wirksame Überwachung und Alarmierung, so dass verdächtige Aktivitäten erkannt werden und
rechtzeitig reagiert werden kann
• Erstellen oder verabschieden eines Notfallreaktions- und Wiederherstellungsplans
• z.B. NIST 800-61 rev 2 oder höher
Anforderungen (3)
Logging und Monitoring
Unzureichendes Logging und Monitoring Prävention 2: Fehlende Anleitung, was und wie man protokolliert
AppSensor
• Security Protection System auf Anwendungs-Level
• Wichtige Ergänzung zu bestehendem IDS/IPS auf Host- oder Netzwerk-Level
• Dynamische Abwehr: verhindert oder reduziert die Auswirkungen eines Angriffs
• Konzentriert Security-Relevantes zentral an einem Ort - was sonst im Rauschen des Logs untergeht
Tool: OWASP AppSensor
Logging und Monitoring
www.appsensor.org
Unzureichendes Logging und Monitoring Prävention 2: Fehlende Anleitung, was und wie man protokolliert
• Anwendung kann im Code direkt Events übergeben, wenn z.B. Logins wiederholt scheitern
• Erkennt die Angriffe, nicht die Schwachstellen
• Ermöglicht Anwendungen sich anzupassen und in Echtzeit zu reagieren
Tool: OWASP AppSensor
Logging und Monitoring
www.appsensor.org
Unzureichendes Logging und Monitoring Prävention 2: Fehlende Anleitung, was und wie man protokolliert
Policy-Konfiguration:
An Erkennungspunkten: Events an AppSensor senden
Individuell über AppSensor API, durch AOP oder über externe Tools
Tool: OWASP AppSensor
Logging und Monitoring
www.appsensor.org
3 Insufficient Authorization events in 5 minutes for an individual userrepresents an attack. I want to respond by blocking the user account.
if ( isUserAuthorized( account ) ) { // present/view account} else {
//new code for appsensor appSensor.addEvent( logged_in_user, “INSUFFICIENT_AUTHORIZATION” )
}
Unzureichendes Logging und Monitoring Prävention 2: Fehlende Anleitung, was und wie man protokolliert
Dashboard
• Events
• Indikatoren
• Detections
• Responses
• Trends
AppSensor
Logging und Monitoring
www.appsensor.org
• Sicherheit in Web-Anwendungen sehr wichtig
- Fast alle Unternehmen bereits Opfer von Angriffen
- Einfallstor für Angriffe an der Firewall vorbei
• Entwickler mit SecureCoding Kenntnissen ausstatten
• Sicherheitsmaßnahmen in allen Schichten integrieren
- Zwiebeltaktik
• SecDevOps bringt Sicherheit in den Prozess
- Tools helfen bei Tests
• Security-Monitoring
- schafft Transparenz zu Angriffen
Zusammenfassung
• OWASP Top 10
• MITRE Top 25
- Schwachstellen (CWE)
- Angriffe (CAPEC)
• Web Application Security Consortium (WASC)
Informationen
www.EXXETA.com
WIR VERBINDEN WELTEN
www.EXXETA.com www.EXXETA.com
Backup
OWASP – Open Web Application Security Project Wer und was ist das?
www.owasp.org Creative Commons
AttributionShareAlike 3.0 Lizenz
Top-10 Liste der häufigsten Sicherheitsrisiken
Community bietet wertvolle Informationen und
Tools für Security
OWASP – Open Web Application Security Project
Migration
• OWASP Secure Coding Practices
Ø Quick Reference Guid e
• OWASP Codes of Conduct
• OWASP Cheat Sheets Series
• OWASP Testing Project
• OWASP Web Top 10
• OWASP Vulnerable Web
Applications Directory
• ...
• OWASP Dependency Check
• OWASP SonarQube Project
• OWASP ZAP
• OWASP AppSensor
• OWASP CSRFGuard
• OWASP Java Encoder Project
• OWASP Java HTML Sanitizer
• OWASP Security Logging Project
• OWASP Enterprise Security API
(ESAPI)
• ...
General Documents Security Tools Secure Coding Libraries
• Creative Commons Attribution ShareAlike 3.0 Lizenz
• www.owasp.org
Einsatz bewährter IT-Security Maßnahmen
OWASP Top 10 2017
A3:2017 – Sensitive Data Exposure
A2:2017 – Broken Authentication
A5:2017 - Broken Access Control
A4:2017 - XML External Entities (XXE)
SQL, NoSQL, OS und LDAP Injection
Fehler in Authentifizierung und Session-Management
Verlust der Vertraulichkeit sensibler Daten
Missbrauch von verwundbaren XML-Prozessoren
Fehlerhafte Autorisierung auf Anwendungsebene
A1:2017 - Injection
OWASP Top 10 2017
Sicherheitsrelevante Fehlkonfiguration
Manipulation von Datenflüssen auf Webseiten
Unsichere Deserialisierung von persistierten Daten
Verwendung von veralteten, verwundbaren Komponenten
Fehlende Transparenz durch ungenügende Informationen
A6:2017 – Security Misconfiguration
A7:2017 – Cross-Site Scripting (XSS)
A8:2017 – Insecure Deserialization
A9:2017 – Using Components with Known Vulnerabilities
A10:2017 – Insufficient Logging & Monitoring
OWASP Top 10 – Vergleich der Versionen 2013 und 2017
A1: Injection
A2: Fehler in Authentifizierung und Session Management
A3: Cross-Site-Scripting
A4: Unsichere direkte Objektreferenzen
A5: Sicherheitsrelevante Fehlkonfiguration
A6: Verlust der Vertraulichkeit sensibler Daten
A7: Fehlerhafte Autorisierung auf Anwendungsebene
A8: Cross-Site-Request-Forgery
A9: Verwendung von Komponenten mit bekannten
A10: Ungeprüfte Um- und Weiterleitungen
A1: Injection
A2: Fehler in Authentifizierung und Session Management
A3: Verlust der Vertraulichkeit sensibler Daten
A4: XML Externe Entitäten
A5: Fehlerhafte Autorisierung
A6: Sicherheitsrelevante Fehlkonfiguration
A7: Cross-Site-Scripting
A8: Unsichere Deserialisierung
A9: Verwendung von Komponenten mit bekannten
A10: Unzureichendes Logging und Monitoring
Quelle: OWASP