InfSi3 Zusammenfassung

Werbung
INHALTSVERZEICHNIS
INHALTSVERZEICHNIS
InfSi3 Zusammenfassung
Roman Ehrbar
Oliver Nietlispach
Samuel Jost
Etienne Georgy
David Stäheli
15. August 2016
Inhaltsverzeichnis
1 Einleitung
1.1 Information Security Management . . . . . . . . . . . . . .
1.2 Treiber für Informationssicherheit . . . . . . . . . . . . . . .
1.2.1 Datenschutzgesetz DSG . . . . . . . . . . . . . . . .
1.2.2 Strafgesetzbuch StGB . . . . . . . . . . . . . . . . .
1.2.3 Health Insurance Portability and Accountability Act
1.2.4 Bankengesetz BankG . . . . . . . . . . . . . . . . . .
1.2.5 Payment Card Industry Data Security Standard . .
1.2.6 Sarbanes-Oxley Act SOX . . . . . . . . . . . . . . .
1.3 Risiken und Bedrohungen . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
HIPAA
. . . . .
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
5
6
6
6
6
6
2 Secure Software / Software Security
2.1 Most Dangerous Software Errors . . . . . . . . .
2.2 Trinity of Trouble . . . . . . . . . . . . . . . . .
2.3 Bugs + Flaws = Defects . . . . . . . . . . . . . .
2.4 Software Artefakte . . . . . . . . . . . . . . . . .
2.5 Drei Säulen der Software Security . . . . . . . . .
2.5.1 Risiko Management . . . . . . . . . . . .
2.5.2 Best Practices . . . . . . . . . . . . . . .
2.5.3 Fachwissen . . . . . . . . . . . . . . . . .
2.6 Code Analyse . . . . . . . . . . . . . . . . . . . .
2.7 Security Development Lifecycle - SDL . . . . . .
2.7.1 Training Requirements . . . . . . . . . . .
2.7.2 Security Requirements . . . . . . . . . . .
2.7.3 Quality Gates/Bug Bars . . . . . . . . . .
2.7.4 Security and Privacy Risk Assesment . . .
2.7.5 Design Requirements . . . . . . . . . . . .
2.7.6 Attack Surface Reduction . . . . . . . . .
2.7.7 Threat Modeling . . . . . . . . . . . . . .
2.7.8 Use Approved Tools . . . . . . . . . . . .
2.7.9 Deprecate Unsafe Functions . . . . . . . .
2.7.10 Static Analysis . . . . . . . . . . . . . . .
2.7.11 Dynamic Program Analysis . . . . . . . .
2.7.12 Fuzz Testing . . . . . . . . . . . . . . . .
2.7.13 Threat Model and Attack Surface Review
2.7.14 Incident Response Plan . . . . . . . . . .
2.7.15 Final Security Review . . . . . . . . . . .
2.7.16 Release/Archive . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
8
8
8
8
9
9
9
10
10
11
11
11
11
12
12
12
12
12
12
12
12
12
12
13
13
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INHALTSVERZEICHNIS
INHALTSVERZEICHNIS
3 Application Security Basics
3.1 HTTP Basics . . . . . . . . . . . . . . .
3.2 Redirect after succesful login . . . . . .
3.3 HTTP Session Management . . . . . . .
3.4 Cookies . . . . . . . . . . . . . . . . . .
3.4.1 Cookie Attribute . . . . . . . . .
3.4.2 SSL Session ID . . . . . . . . . .
3.5 Cross Site Scripting - XSS . . . . . . . .
3.6 Same Origin Policy . . . . . . . . . . . .
3.7 Cross Origin Resource Sharing - CORS
3.7.1 CORS Preflighted Request . . .
3.8 Content Security Policy - CSP . . . . .
3.9 X-Frame-Headers . . . . . . . . . . . . .
3.10 HTTP Strict Transport Security - HSTS
3.11 X-XSS-Protection . . . . . . . . . . . . .
3.12 HTTP Public Key Pinning - HPKP . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
15
16
17
17
18
18
18
19
19
19
20
20
20
20
4 OWASP Top 10
4.1 Injection . . . . . . . . . . . . . . . . . . . . . . .
4.2 Broken Authentication and Session management
4.3 Cross-Site-Scripting - XSS . . . . . . . . . . . . .
4.4 Insecure Direct Object References . . . . . . . .
4.5 Security Misconfiguration . . . . . . . . . . . . .
4.6 Sensitive Data Exposure . . . . . . . . . . . . . .
4.7 Missing Function Level Access Control . . . . . .
4.8 Cross-Site Request Forgery - CSRF . . . . . . . .
4.9 Using Components with Known Vulnerabilities .
4.10 Unvalidated Redirects and Forwards . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
22
22
22
22
22
22
23
23
23
23
5 Identity and Access Management
5.1 AAI . . . . . . . . . . . . . . . .
5.1.1 Shibboleth . . . . . . . .
5.1.2 OAuth2 . . . . . . . . . .
5.1.3 OpenID Connect . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
25
26
6 Web Entry Server
6.1 Reverse Proxy . . . . . . .
6.2 Pre-Authentication . . . .
6.2.1 Ablauf . . . . . . .
6.2.2 Zweck der Cookies
6.3 Filtering . . . . . . . . . .
6.4 Unique ID . . . . . . . . .
6.5 URL Encryption . . . . .
6.6 Content Rewriting . . . .
6.7 Session Store . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
27
27
27
27
27
28
28
28
28
7 Server Security
7.1 Hardening . . . . . . . . . . . . . . . . . . . .
7.1.1 Während der Installation des Systems
7.1.2 Netzwerksicherheit . . . . . . . . . . .
7.1.3 Authentifizierung . . . . . . . . . . . .
7.1.4 Monitoring und Auditing . . . . . . .
7.2 Unix Process Security . . . . . . . . . . . . .
7.3 File Permissions . . . . . . . . . . . . . . . .
7.3.1 Apache File Permissions . . . . . . . .
7.3.2 Tomcat File Permissions . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
29
29
29
29
30
30
30
31
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INHALTSVERZEICHNIS
7.4
7.5
7.6
INHALTSVERZEICHNIS
Privilege Escalation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Network Hardening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB Hardening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 Mobile Application Security
8.1 iOS . . . . . . . . . . . . . .
8.2 Android . . . . . . . . . . .
8.3 Windows Phone . . . . . . .
8.4 Xamarin . . . . . . . . . . .
8.5 Cordova (Phonegap) . . . .
31
31
31
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
32
32
32
32
32
9 OWASP Mobile Top 10
9.1 M1: Improper Platform Usage . . . .
9.2 M2: Insecure Data Storage . . . . . .
9.2.1 System Screenshots . . . . . .
9.2.2 Keyboard . . . . . . . . . . .
9.2.3 Clipboard . . . . . . . . . . .
9.2.4 Logs . . . . . . . . . . . . . .
9.2.5 Web Data . . . . . . . . . . .
9.2.6 Inter-Process Communication
9.3 M3: Insecure Communication . . . .
9.3.1 Certificate Pinning . . . . . .
9.4 M4: Insecure Authentication . . . . .
9.5 M5: Insufficient Cryptography . . . .
9.6 M6: Insecure Authorization . . . . .
9.7 M7: Client Code Quality . . . . . . .
9.8 M8: Code Tampering . . . . . . . . .
9.9 M9: Reverse Engineering . . . . . . .
9.10 M10: Extraneous Functionality . . .
9.11 Checkliste . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
33
33
33
34
34
34
34
35
35
35
35
35
35
35
36
36
36
10 Fraud Detection
10.1 Panopticlick / Client Correlator
10.2 E-Banking . . . . . . . . . . . .
10.2.1 Technische Daten . . . .
10.2.2 Business Informationen
10.3 Data Mining . . . . . . . . . .
10.4 Machine Learning . . . . . . . .
10.5 Vorteile / Nachteile . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
37
37
37
37
38
38
11 Security Testing
11.1 Notwendigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3 Vorgehen bei der Sicherheitsprüfung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
39
39
40
12 Spezialthemen
12.1 XXE File Inclusion . . . . . . . . . . . . . . . . . .
12.2 JSON-Hijacking . . . . . . . . . . . . . . . . . . . .
12.3 URL-Redirection . . . . . . . . . . . . . . . . . . .
12.4 HTTP Request Smuggling . . . . . . . . . . . . . .
12.5 Session Fixation . . . . . . . . . . . . . . . . . . .
12.6 SSL/TLS: SSL-Cipher-Suite-Hardening, SSL-MitM
12.6.1 Apache SSL Cipher Hardening . . . . . . .
12.6.2 Apache SSL Cipher Forwarding . . . . . . .
41
41
41
41
42
42
42
42
43
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INHALTSVERZEICHNIS
INHALTSVERZEICHNIS
Todo list
4
1
1
EINLEITUNG
Einleitung
1.1
Information Security Management
Kleiner Rückblick zu den Begriffen aus InfSi1:
Asset Wert aus Sicht der Organisation, ob materiell oder immateriell, Informationen oder Dienstleistungen.
Threat Bedrohung, möglicher Grund für einen ungewollten Vorfall, der das System oder die Organisation schädigen kann.
Vulnerabilities Schwachstelle einer Schutzmassnahme, die durch eine oder mehrere Bedrohungen
ausgenutzt werden kann.
Controls Gegenmassnahme als Mittel zur Risikohandhabung.
Gefährdung Zusammenspiel von Asset, Threat und Vulnerabilities.
Applied Threat Die Gefährdung ist eine Bedrohung, die konkret über eine Schwachstelle auf ein
Objekt einwirkt. (Bedrohung und Schaden)
Risiko = Wahrscheinlichkeit eines Zwischenfalls * Schaden = Bedrohung * Verletzlichkeit * Schaden
1.2
Treiber für Informationssicherheit
Als hauptsächliche Treiber der Informationssicherheit zählt die Konformität zu Gesetz und Vorschriften.
Folgendes liefert ein Teil von Gesetzen und Vorschriften in den verschiedenen Sparten:
• Bearbeiter von Personendaten
– Diverse Strafgesetzbuch Artikel
– Datenschutzgesetz (DSG)
– US Health Insurance Portability and Accountability Act (HIPAA)
• Finanzdienstleister
– Bankgesetze (Bankgeheimnis, etc.)
– EU Directive on Payment Services (PSD)
– Payment Card Industry Data Security Standard (PCI)
• Telecom/ICT-Anbieter
– Fernmeldegesetz
– Lawful Interception
• Allgemeines Controlling
– Sarbanes-Oxley Act (SOX), US-börsenkotierte Firmen
1.2.1
Datenschutzgesetz DSG
Wer als Privatperson Personendaten bearbeitet oder ein Datenkommunikationsnetz zur
Verfügung stellt, sorgt für die Vertraulichkeit, die Verfügbarkeit und die Richtigkeit der
Daten, um einen angemessenen Datenschutz zu gewährleisten. - DSG Art. 8
1.2.2
Strafgesetzbuch StGB
Missbrauch einer Fernmeldeanlage - StGB Art. 179septies (Virentatbestand)
Unbefugtes Beschaffen von Personendaten - StGB Art. 179novies (Hackingtatbestand)
5
1.3
Risiken und Bedrohungen
1.2.3
1
EINLEITUNG
Health Insurance Portability and Accountability Act HIPAA
Umfasst mehrere Regeln zu Datenschutz und -Sicherheit. Dazu werden auch eine Regel für die Unique
Identifiers definiert (National Provider Identifier, NPI).
1.2.4
Bankengesetz BankG
. . . ein Geheimnis offenbart . . . [oder] zu einer solchen Verletzung des Berufsgeheimnisses
zu verleiten sucht. - BankG Art. 47
1.2.5
Payment Card Industry Data Security Standard
Dieser umfasst mehrere Bestimmungen wie z.B. der Einsatz einer Firewall, Verschlüsselte Übertragung, Beschränkung des physikalischen Zugriffs, usw.
1.2.6
Sarbanes-Oxley Act SOX
Fordert verschärfte interne Kontrollsysteme und führt zu höheren Anforderungen an die Corporate
Governance.
1.3
Risiken und Bedrohungen
Für den Umgang mit Risiken können Unternehmen unterstützend ein Information Security Management System einsetzen.
Abbildung 1: Stark vereinfachte Sicht [ISO27001:2005]
Threat Effekte, können nicht kontrolliert werden (Erdbeben, Stromausfall).
Risk Risiko, kann vermindert werden durch verminderung des Einflusses auf das Business.
Vulnerability Gefahren, können behandelt werden (Verbesserung der Software, Einschränken von
Zugriff).
Vulnerability Assessment Das eigentliche Information Security Management: Geschäftsprozesse
werden beobachtet, verknüpft mit der Compliance, Budget, Beurteilung und der Bewusstheit
der Gefahr.
Direct Attacks Angriff direkt auf das Ziel, z.B. durch eine Firewall.
Indirect Attack Ein ungeschütztes Gerät, wie z.B. ein privates Notebook, wird angegriffen und über
dieses dann dem Angreifer Zugriff auf das restliche System ermöglicht.
Man-in-the-Middle Der Angreifer hört den Datenverkehr des Opfers mit und kann diesen auch
beeinflussen, erneut versenden oder verändern.
6
1.3
Risiken und Bedrohungen
1
EINLEITUNG
Privilege Escalation Es wird versucht, mehr Berechtigungen zu erhalten, wie z.B. ausführen eines
Skripts als Root, ohne die Kennwörter zu besitzen.
Social Engineering Umgehen von technischen Einrichtungen zum Schutz vor Angriffen über menschliches Fehlverhalten und gezielte Manipulation des Menschen.
Backdoor Teil einer Software/Hardware, unter Umgehung der normalen Zugriffssicherung Zugang
zu geschützten Daten zu erlangen.
7
2
2
SECURE SOFTWARE / SOFTWARE SECURITY
Secure Software / Software Security
Durch das Aufkommen des Internets nahm auch die vom National Institute of Standards and Technology (NIST) erfassten Vulnerabilities mit hohem Ausmass zu.
2.1
Most Dangerous Software Errors
Die 25 häufigsten Schwachstellen können in drei Kategorien eingeteilt werden:
• Ausgelöst durch unsichere Wege, in denen die Daten gesendet und empfangen werden. Dazu
zählen SQL Injection, OS Command Injection, XSS, CSRF und Open Redirect.
• Ausgelöst durch die unsichere Handhabung von Systemressourcen. Dazu gehören Classic Buffer Overflow, Path Traversal, Uncontrolled Format String, Potentially Dangerous Function und
Integer Overflow.
• Ausgelöst durch falsche Verwendung, Missbrauch oder Ignorierung von defensiven Sicherheitsmechanismen. Dazu zählen Missing Authentication, Missing/Incorrect Authorization, Hard-Coded
Credentials, Missing Encryption, Reliance on Untrusted Inputs, Incorrect Permission Assignment,
Use of broken or risky Cryptographic algorithm und One-Way Hash without Salt.
2.2
Trinity of Trouble
Folgende drei Aspekte sind mitunter verantwortlich für diese Schwierigkeiten.
Connectivity Immer mehr Systeme sind über das Internet miteinander verbunden und eröffnen somit
neue Attack Vectors. Service Oriented Architecture (SOA) führt alte Systeme, welche nicht für
die Vernetzung vorgesehen wurden, zusammen und veröffentlicht diese.
Extensibility Systeme sind erweiterbar, wodurch ein teil der Kontrolle abgegeben wird. Über schlecht
gewartete Erweiterungen können so neue Schwachstellen entstehen.
Complexity Moderne Software wird immer komplexer. Mit dem Umfang nimmt auch die Fehlerrate
quadratisch zu.
2.3
Bugs + Flaws = Defects
Security Bug Implementation-level Schwachstelle
Security Flaw Design-level Schwachstelle (können selten automatisiert erkannt werden)
Security Defect Ruhender defekt in der Software, welcher durch ein Bug oder Flaw ausgelöst wird.
2.4
Software Artefakte
Es gibt ein gemeinsames Set von Artefakten, welche unabhängig vom eigentlichen Entwicklungsprozess
(Scrum, RUP, XP, . . . ) sind. Diese sind:
• Anforderungen und Use Cases
• Architektur und Design
• Testpläne
• Code
• Tests und Testresultate
• Rückmeldung von Kunden
2.5
Drei Säulen der Software Security
Zu den zentralen drei Säulen gehören Risiko Management, Best Practices und Fachwissen.
8
2.5
Drei Säulen der Software Security
2.5.1
2
SECURE SOFTWARE / SOFTWARE SECURITY
Risiko Management
Man identifiziert die betroffenen Personen, die technischen Risiken, auch die für das Unternehmen,
und priorisiert sie anhand der gewonnenen Informationen. Danach kann eine Strategie zur Minderung
entwickelt werden. Nach der Anwendung sollten die Anpassungen auf ihre Wirkung hin überprüft
werden.
Abbildung 2: Risiko Evaluations-Matrix
2.5.2
Best Practices
Es folgen einige Best Practices in der Reihenfolge ihrer Effektivität. Sie können den Kategorien
Konstruktiv (white hat) und Destruktiv (black hat) zugeordnet werden.
• Code Review K
• Architectural risk analysis (historical knowledge) K D
• Penetration testing D
• Risk-based security tests D K
• Abuse cases D K
• Security requirements K
• Security operation K
2.5.3
Fachwissen
Zum Fachwissen gibt es mehrere Perspektiven. Das Wissen über die Prinzipien, Rahmenbedingungen
und Regeln gehören zum Vorgeschriebenen Fachwissen. Dazu gesellt sich die Diagnostischen Fähigkeiten mit dem Wissen über Angriffe, Schwachstellen und Angriffsmuster. Zuletzt benötigt man auch
ein Wissen über die Vergangenheit.
9
2.6
Code Analyse
2
SECURE SOFTWARE / SOFTWARE SECURITY
Abbildung 3: Best Practices und Fachwissen angewendet auf die Software Artefakte
2.6
Code Analyse
Für die Analyse von Sourcecode bieten sich mehrere Lösungen an, welche den Quellcode und auch
das laufende Programm analysieren und auswerten können. Die ersten Generationen von solchen
Analyseprogrammen wurden auch als Intelligentes Grep bezeichnet und lieferten viele false positives.
In späteren, oft kommerziellen Tools, wurden diese, durch Parsen des Source-Codes, versucht zu
minimieren.
Das Wissen aus der Vergangenheit ist in die Regelsätze dieser Software eingeflossen. Jedoch können
Probleme in der Softwarearchitektur nicht oder nur selten erkannt werden. Ein manuelles Review ist
somit weiterhin nötig. Auch können Abhängigkeiten und falsche Benutzung externer Komponenten
nicht korrekt überprüft und erkannt werden.
2.7
Security Development Lifecycle - SDL
Der Security Development Lifecycle ist ein Prozess, welcher die Sicherheit innerhalb der Softwareentwicklung garantieren soll. Er wurde von Microsoft entwickelt und gilt als Grundlage, lässt
sich also für jede Unternehmensgrösse anpassen. Der SDL umfasst die drei Kernkonzepte Schulung,
fortwährende Verbesserung der Prozesse und Zurechenbarkeit.
Der SDL sollte auf Projekte mit folgenden Merkmalen angewendet werden:
• Eingesetzt in einem Unternehmen
• Verarbeitung von personenbezogenen Daten
• Regelmässige Kommunikation über das Internet oder andere Netzwerke
Im Prinzip kann der SDL also auf alle Projekte angewendet werden. Es ist einfacher,
diejenigen zu identifizieren, die keinen sicherheitstechnischen Massnahmen benötigen und daher auch
auf den SDL verzichten können.
Es existieren mehrere Rollen, wovon zwei besonders hervorzuheben sind. Diese lassen sich wiederum
weiter unterteilen.
10
2.7
Security Development Lifecycle - SDL 2
SECURE SOFTWARE / SOFTWARE SECURITY
Reviewer/Advisory Roles Diese Rolle soll eine Übersicht über die Sicherheit des Projektes bieten
und in der Lage sein, Pläne bezüglich Sicherheit und Datenschutz anzunehmen/abzulehnen.
Kann von Internen wie auch externen Personen übernommen werden, aber keine Teammitglieder.
Team Champions Diese Rolle ist verantwortlich für den Austausch, Akzeptanz und Verfolgung von
minimalen Anforderungen an die Sicherheit und Datenschutz. Sie sind das Gegenstück zu den
Advisory Roles und besteht aus Teammitglieder.
Finden die Sicherheitsrelevanten Aktivitäten frühzeitig und innerhalb des Entwicklungsprozesses statt,
erhält man den grössten Nutzen daraus. Um den Microsoft SDL-Prozess einzuhalten müssen die 16
zwingenden Aktivitäten eingehalten werden.
Abbildung 4: Security Development Lifecycle von Microsoft
2.7.1
Training Requirements
Alle Mitglieder des Entwicklerteams müssen eine Schulung im Bereich Softwaresicherheit erhalten und
sich über aktuelle Trends informieren. Die Themen umfassen sicheres Design, Modellierung von
Bedrohungen, sicheres Coding, Sicherheitstests und Datenschutz.
2.7.2
Security Requirements
Definition von vertrauenswürdigen Anforderungen an das Projekt. Damit können Schlüsselstellen identifiziert werden und die Sicherheit sowie Datenschutz frühzeitig integriert werden. Dies verhindert
unnötige Verzögerungen.
2.7.3
Quality Gates/Bug Bars
Quality Gates und Bug bars sind minimale Akzeptanzkriterien in Anbetracht der Sicherheit und des
Datenschutzes. Das gesamte Team muss sich an die Anforderungen halten, wobei diese nicht dynamisch
verändert werden dürfen.
Quality Gate Anforderung an die Code-Qualität bezüglich Compiler-Warnungen, Kommentare, Komplexität, etc.
Bug Bar Schwelle für Sicherheitslücken, welche noch im Projekt beim Release enthalten sein dürfen.
Z.B. keine Lücken mit der Bewertung “Kritisch“ oder “Warnung“.
2.7.4
Security and Privacy Risk Assesment
Beurteilung der Sicherheit- und Datenschutz-Anforderungen von funktionalen Komponenten, welche
eine genauere Begutachtung benötigen. Es wird bestimmt, ob weitere Threat Models, Security Design
Reviews, Penetration Testing, Zusätzliche Tests und Anforderungen an Fuzz Tests nötig sind.
Zusätzlich wird das Privacy Impact Rating festgelegt: High Privacy Risk bei der Verarbeitung von
personenbezogenen Daten und Einstellungen, Medium Privacy Risk bei Übermittlung anonymisierter Daten und Low Privacy Risk, falls keine Anforderungen für den Datenschutz nötig sind.
11
2.7
Security Development Lifecycle - SDL 2
2.7.5
SECURE SOFTWARE / SOFTWARE SECURITY
Design Requirements
Designspezifikationen sollen Sicherheits- und Datenschutz-Funktionen beschreiben, welche direkt dem
Benutzer zugänglich sind. Das sind z.B. Funktionen, welche eine Authentisierung oder die Einwilligung
des Benutzers erfordern. Gleichzeitig sollten sie auch beschreiben, wie die Sicherheit dieser Funktion
implementiert wird.
2.7.6
Attack Surface Reduction
Hierbei wird der Zugriff auf das System eingeschränkt und mehrschichtige Abwehrmassnahmen eingeführt. Eng verknüpft mit dem Threat Modeling.
2.7.7
Threat Modeling
Es werden mögliche Bedrohungen in Betracht gezogen, Diskutiert und Dokumentiert im Kontext der
geplanten Umgebung.
2.7.8
Use Approved Tools
Im gesamten Team müssen Tools definiert und festgehalten werden, wie damit die Sicherheit überprüft
werden. Wie z.B. Compiler- oder Linter-Warnungen.
2.7.9
Deprecate Unsafe Functions
Als Team werden die Funktionen und APIs definiert, welche man nicht verwenden darf. Somit können
diese dann auch überprüft und durch alternativen ersetzt werden.
2.7.10
Static Analysis
Eine skalierbare Möglichkeit zur Analyse des Codes auf Programmierfehler und Einhaltung der CodingGuidelines. Dies schliesst aber manuelle Reviews nicht aus, diese sollten weiterhin für kritische Bereiche
durchgeführt werden.
2.7.11
Dynamic Program Analysis
Verifikation während der Laufzeit, dass das Programm auch den Anforderungen entsprechend funktioniert. Es müssen Tools definiert werden, welche ein Fehlverhalten(falsche Berechtigungen) oder die
Verwendung von Ressourcen protokollieren.
2.7.12
Fuzz Testing
Dynamische Analyse anhand von automatisch generierten Eingaben (absichtlich falsch oder zufällig).
Die Strategie fürs Testen wird anhand der Funktionellen- sowie Design-Spezifikation abgeleitet.
2.7.13
Threat Model and Attack Surface Review
Abweichungen der Anwendung von der ursprünglichen Funktionellen- und Design-Spezifikation feststellen und überprüfen, ob Anpassungen nötig sind. Spätestens beim Code-Complete ist eine erneute
Analyse notwendig.
2.7.14
Incident Response Plan
Damit wird festgehalten, wie bei einem Notfall vorgegangen wird. Zudem sind weitere Informationen
enthalten, welche für die Behebung und Verarbeitung hilfreich sind.
• Ansprechperson für den ersten Kontakt sowie, wenn vorhanden, auch ein Entwicklerteam.
• Ansprechperson mit Entscheidungsgewalt, verfügbar 24/7.
12
2.7
Security Development Lifecycle - SDL 2
SECURE SOFTWARE / SOFTWARE SECURITY
• Sicherheitsrelevante Informationen von Code anderer Entwickler-Teams.
• Sicherheitsrelevante Informationen von Third-Party-Komponenten, dessen Version, Dateinamen,
Kontaktdaten und Vertragsinformationen, falls vorhanden.
2.7.15
Final Security Review
Die eigentliche Kontrolle vor dem Release, ob die Software allen im Prozess definierten Anforderungen entspricht und die Sicherheitsaktivitäten eingehalten wurden. Hier werden die Gesammelten
Informationen aus Threat Models, exception requests, Ausgabe der Tools und Performanz mit den
Quality Gates und Bug Bar verglichen. Daraus ergibt sich dann das Resultat FSR bestanden, FSR
bestanden mit Ausnahmen oder FSR mit Eskalation.
2.7.16
Release/Archive
Die Software ist aus Sicht des SDL komplett und kann nach Bestätigung des Sicherheitsberaters freigegeben werden. Für jede High Privacy Risk wird auch eine Bestätigung des Datenschutzbeauftragten
benötigt. Alle im Prozess erzeugten Artefakte müssen archiviert werden, um eine Wartung nach dem
Release zu ermöglichen.
Optionale Sicherheitsaktivitäten
Die zuvor beschriebenen Sicherheitsaktivitäten sind nur das Minimum und können noch weiter ergänzt
werden.
Ein manuelles Code-Review wird eingesetzt, wenn besonders sensitive Daten verarbeitet oder
gespeichert werden. Es macht auch Sinn, Implementationen von kryptographischen Funktionen auf
ihre Korrektheit zu überprüfen.
In einem Penetration Testing wird als Whitebox-Analyse die Sicherheit durch Spezialisten mit der
Vorgehensweise von Hackern durchgeführt. Sie bieten zusätzliche Anhaltspunkte und ergänzen CodeReviews.
Als weiterer Schritt kann auch die Analyse auf Schwächen in vergleichbaren Anwendungen
gesehen werden. Da oftmals die Informationen über Schwachstellen im Internet verfügbar sind, können
diese mit der eigenen Anwendung verglichen werden, ob diese auch zutreffen.
13
3
3
APPLICATION SECURITY BASICS
Application Security Basics
3.1
HTTP Basics
HTTP ist Zustandslos: Der Client sendet eine Anfrage (Request) an den Server, welcher ihn verarbeitet und anschliessend das Resultat als Antwort (Response) zurücksendet.
Abbildung 5: HTTP Header
Zwischen HTTP GET und POST gibt es einen wesentlichen Unterschied. Da der Server die URI in der
Regel mitloggt, werden auch die Parameter des GET-Request mitgeloggt. Beim POST-Request
geschieht dies nicht, da sich die Parameter anstatt in der URI im Body befinden. Dies ist auch bei
Proxies zu beachten. Eine Response ist beinahe Identisch zum Request. Die erste Zeile enthält nun
das Protokoll, Statuscode und Statusbeschreibung (HTTP/1.1 200 OK).
Abbildung 6: Beispielrequests für GET und POST
HTTP Methode
Verwendung
GET
normale verwendung *
POST
übermittlung von Daten (Login, Formulare) *
HEAD
Suchmaschinen (Head of page) *
PUT
Upload von Dateien (webdav, RESTful)
DELETE
Löschen von Dateien (webdav, RESTful)
OPTIONS
Auflistung verfügbarer Methoden auf Server
TRACE
Debugging in Webserver
Tabelle 1: Übliche HTTP Methoden (* meist verwendet)
14
3.2
Redirect after succesful login
Statuscode
Nachricht
3
APPLICATION SECURITY BASICS
Bedeutung
2xx - Erfolgreich
200
OK
Anfrage erfolgreich bearbeitet, Ergebnis in der Antwort
enthalten.
3xx - Umleitung
301
Moved Permanently
Header “Location: http://other-site/“
302
Moved Temporarily
Header “Location: http://other-site/“; Alternativ 303
oder 307 möglich
4xx - Clientfehler
400
Bad Request
Anfrage war fehlerhaft aufgebaut
401
Unauthorized
Authentifizierung nötig
403
Forbidden
Mangelnde Berechtigung des Clients
404
Not Found
Angeforderte Ressource nicht gefunden
405
Method Not Allowed
408
Request Timeout
5xx - Serverfehler
500
Internal Server Error
Allgemeiner Serverfehler
501
Not Implemented
Funktionalität wird vom Server nicht bereitgestellt
502
Bad Gateway
Proxy hat ungültige Antwort erhalten
503
Service Unavailable
Service steht temporär nicht zur verfügung
Tabelle 2: Übliche HTTP Statuscodes, https://de.wikipedia.org/wiki/HTTP-Statuscode
3.2
Redirect after succesful login
Unter diesem Namen verbirgt sich ein Pattern, um die “Back Button Relogin Vulnerability“ zu
adressieren. Ohne Anwendung dieses Patterns besteht die Möglichkeit, dass nach mehrmaligem Klick
auf Zurück die eingegebenen Logindaten erneut an den Server übertragen werden. Bei Fehlschlag des
Logins kann mittels eines gewöhnlichen 200 OK um eine erneute Eingabe gebeten werden.
15
3.3
HTTP Session Management
3
APPLICATION SECURITY BASICS
Abbildung 7: Redirect after succesful login
Es gibt dabei mehrere Varianten für den Redirect:
• Type 1 (302 Moved Temporarily)
– HTTP Response Status 302
– HTTP Response Header “Location: http://other-site/“
• Type 2 (200 OK)
– HTTP Response Status 200
– HTTP Response Header “Refresh: 0; URL=http://other-site/“
• Type 3 (200 OK)
– HTTP Response Page
– Meta-Tag “Refresh“
• Type 4 (Javascript)
– Client-Seitiger Code (z.B. “document.location=. . .“)
3.3
HTTP Session Management
Serverseitig wird eine Speicherstruktur erstellt, um Session-Daten zu speichern. Der Client erhält ein
Schlüssel zu dieser Struktur, auch bekannt als SessionId.
Bei jeder Anfrage des Clients an den Server muss dieser die SessionId mitgeben, damit der Server auf
16
3.4
Cookies
3
APPLICATION SECURITY BASICS
die Daten der Session zugreifen kann. Dazu gibt es mehrere Varianten, wo sich die SessionId befindet
(Session Locations):
• URI
– Sichtbar in Logs
– Problematisch beim Caching
• Request Header
– Cookie, NTLM, BasicAuth
• Body
– Als Hidden Field
– Kaum verbreitet
3.4
Cookies
Set-Cookie: PREF=ID=2744d38c32b2ec68:LD=de:TM=1094031009
expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.ch
Abbildung 8: Cookie erzeugung über HTTP Request Header
3.4.1
Cookie Attribute
• Name=Content (Key, value pair)
– Name: Cookie Name
– Content: Cookie Value
– Beispiel: jsessionid=klrezbxur234kls
• Domain
– Ort wohin das Cookie gesendet werden kann.
– Default: Cookie wird nur an den Server gesendet, von dem es stammt.
• Path
– URL-Path wohin das Cookie gesendet werden kann.
17
3.5
Cross Site Scripting - XSS
3
APPLICATION SECURITY BASICS
– Default: Cookie wird nur an den Pfad gesendet, von dem es stammt.
• Secure
– Cookie wird nur über HTTPS übermittelt.
– Default: insecure
• Expire
– Gültigkeit des Cookies.
– Default: wird nicht persistiert, nur Browsersession.
• HttpOnly
– Cookie kann nicht von JavaScript verwendet werden.
– Default: nicht vorhanden, JavaScript kann mit document.cookie darauf zugreifen.
Wann ein Cookie an den Server gesendet wird, ist abhängig von mehreren Attributen: Domain,
Path, Secure und Expire.
Das HttpOnly Attribut bietet ein Schutz gegenüber XSS, wobei es dem JavaScript, welches eingeschleust wurde, verhindert wird, auf das Cookie zuzugreifen.
3.4.2
SSL Session ID
Mithilfe der SSL Session ID können SSL-Session weiter verwendet werden, ohne einen erneuten Handshake durchzuführen. Ähnlich wie bei Cookies werden diese zu beginn der Anfrage an den Server übermittelt, welcher den zur ID passenden symmetrischen Schlüssel besitzt.
Der gesamte Payload des SSL-Pakets ist verschlüsselt, man sieht also weder die URL noch andere
Inhalte des HTTP-Paket.
3.5
Cross Site Scripting - XSS
Die Gefahr für XSS entsteht, wenn Benutzereingaben unzureichend gefiltert werden und unverändert
wieder an andere Benutzer ausgeliefert werden. Dies ermöglicht z.B. die Übernahme von Sessions,
HTML- oder JS-Injection, Exploit injection oder Keylogging.
Es werden drei Typen von Attacken unterschieden:
Stored Das injizierte Skript ist permanent auf dem Zielserver gespeichert, z.B. in Form von Forumsbeiträgen.
Reflected Das Skript wird nicht auf dem Zielserver gespeichert, der Angreifer muss aber eine URL
präparieren und diese dem Opfer unterjubeln. Dies ist z.B. über eine Suchanfrage möglich.
DOM based Angreifer muss eine URL präparieren, welche dann im Client direkt ausgelöst wird.
Server wird dabei nicht aufgerufen, clientseitige Validierung nötig.
Mögliche Gegenmassnahmen sind:
HTML entities Encoding vor dem Speichern und bei der Ausgabe.
HTTP Only Cookies Auslesen über JS nicht möglich.
CSP Content Security Policy: script-src ’self’
3.6
Same Origin Policy
Die damit wird verhindert, dass Javascript (auch Flash, Java Applet, etc.) auf DOM und Cookies
zugreifen kann. Nur bei der Übereinstimmung von Protokoll, Host und Port wird dies erlaubt.
Wird nun aber in der Ursprungs-Seite das 3rd-Party-Script durch <script src="..."> geladen,
so kann es auf das Cookie der Ursprungs-Seite zugreifen.
Die Übermittlung von Daten an fremde Seiten kann dann über Bild-Tags erfolgen, da diese nicht der
SOP unterliegen.
Wird der Javascript-Code über die URL injiziert, so spricht man von Reflected XSS. Der XSS-Schutz
im Browser kann dies verhindern, aber nicht bei Stored XSS.
18
3.7
Cross Origin Resource Sharing - CORS
3.7
3
APPLICATION SECURITY BASICS
Cross Origin Resource Sharing - CORS
Damit schützt sich nicht der eigentliche Webseitenbetreiber, sondern ein Serivce-Provider, welcher Daten für den Betreiber bereitstellt. Anfragen an den Service-Provider enthalten ein Header Origin:
http://foo.example.com. Die Antwort darauf den Header Access-Control-Allow-Origin:
http://foo.example.com (Wildcards sind auch möglich).
3.7.1
CORS Preflighted Request
Der Preflight wird ausgeführt, falls eine der folgenden Bedingungen zutrifft:
• Verwendung einer Methode ausser GET, HEAD oder POST.
• POST fordert Daten mit einem anderen Content-Type als application/x-www-form-urlencoded,
multipart/form-data oder text/xml an
• POST sendet Daten mit einem XML-Payload zum Server.
Abbildung 9: Vorgehen beim CORS Preflight
Standardmässig werden bei XMLHttpRequests aufrufen keine Credentials/Cookies mitgeschickt. Um
dies zu forcieren, muss ein spezielles Flag (withCredentials) auf dem Request-Objekt gesetzt werden.
3.8
Content Security Policy - CSP
Dahinter versteckt sich ein Sicherheitskonzept, um XSS und diverse andere Angriffe wie Clickjacking
und Code Injection, durch einschleusen von Daten in Webseiten zu verhindern. Es wird als HTTPHeader-Field Content-Security-Policy und bei IE 10+ X-Content-Security-Policy unterstützt. Dadurch kann der Server bestimmen von welchem Origin Content geladen werden darf. Trifft auf ein
Element mehrere CSPs zu, wird immer die restriktivste benutzt!
1
Listing 1: Starter Policy für CSP-Header
Content-Security-Policy: default-src ’none’; script-src ’self’;
connect-src ’self’; img-src ’self’; style-src ’self’;
Das Vorgehen beim erstellen einer neuen CSP ist wie folgt:
1. CSP-Header bei allen Requests hinzufügen mit Policy default-src ’none’
2. Verstösse in der Browser-Konsole anschauen
3. Nötige Quellen zur Policy hinzufügen
CSP hat folgende Defaults aktiviert:
1. Keine Inline Javascript-Snippets. Nur aus Files
19
3.9
X-Frame-Headers
3
APPLICATION SECURITY BASICS
2. Keine JS-URLs wie javascript:http://url
3. Eventhandling-Attribute sind deaktiviert (zum Beispiel document.click())
4. Funktion eval() ist deaktiviert
5. Der Konstruktor von function() ist deaktiviert
6. URIs sind nur für Bilder erlaubt
3.9
X-Frame-Headers
Als HTTP-Header-Feld eingesetzt dient es als Schutz vor Clickjacking-Attacken. Dabei wird dem
Opfer ein Frame über ein anderen Inhalt gelegt und so versucht, durch Klicken Aktionen auf dem
dahinterliegenden Objekt auszuführen.
CSP hat Vorrang vor X-Frame-Headers, weil die Unterbindung von Frames seit Version 2.0 dort
auch integriert ist.
Listing 2: Clickjacking mittels X-Frame-Options unterbinden
1
X-Frame-Options: DENY
3.10
HTTP Strict Transport Security - HSTS
Ein Sicherheitsmechanismus für HTTPS-Verbindungen. Er soll vor Aushebelung der Verbindungsverschlüsselung durch eine Downgrade-Attacke als auch vor Session Hijacking schützen. Durch die
Angabe des Header-Feldes wird jede weitere Verbindung bis zum erreichen des max-age als HTTPS
erzwungen, auch wenn die Links z.B. auf HTTP lauten. Zusätzlich wird eine Verbindung mit dem
Server verhindert, sobald Zertifikatsprobleme auftauchen.
Google Chrome wie auch andere Browser verwenden HSTS-Preload-Listen. Damit wird die Limitierung des trust on first use-Prinzip für eine definierte Liste von Domains umgangen.
Listing 3: HSTS-Header
1
Strict-Transport-Security: max-age=31536000
Bypassing HSTS HSTS ist Zeit basiert und wird für eine gewisse Zeit definiert. Um dies zu umgehen,
wird die Zeit geändert, wodurch das HSTS abläuft und der Browser ohne warnung auf einen Fake
Server zugreift.
3.11
X-XSS-Protection
Dieser Header aktiviert den XSS-Schutz im Browser, jedoch kann dieser nur Reflected XSS erkennen. Bisher wird es nur von IE, Chrome und Safari unterstützt. In diesen Browser sollte er jedoch
standardmässig bereits aktiviert sein.
Listing 4: Beispiel des X-XSS-Protection Headers
1
X-XSS-Protection: 1; mode=block
3.12
HTTP Public Key Pinning - HPKP
Eine Erweiterung für HTTP, das dem Webclient mitteilt, einen spezifischen kryptographischen Schlüssel
mit einem bestimmten Webserver in Verbindung zu bringen. So sollen Man-in-the-Middle-Angriffe mit
gefälschten Zertifikaten vermieden werden.
Google Chrome wie auch Firefox verwenden Preload-Listen. Damit wird die Limitierung des trust
on first use-Prinzip für eine definierte Liste von Domains umgangen.
20
3.12
HTTP Public Key Pinning - HPKP
3
APPLICATION SECURITY BASICS
Listing 5: Beispiel des HPKP-Headers
1
Public-Key-Pins: pin-sha256="base64=="; max-age=expireTime [;
includeSubdomains][; report-uri="reportURI"]
21
4
4
OWASP TOP 10
OWASP Top 10
Die OWASP Top 10 sind die zehn wohl wichtigsten Schwachstellen von Anwendungen, welche aus
dem Open Web Application Security Project hervor ging.
Die aktuellste Version ist 2013 in Englisch1 erschienen und in mehrere Sprachen übersetzt, unter anderem auch Deutsch2 . Die hier aufgeführten Kurzbeschreibungen stammen ebenfalls aus der deutschen
Version.
4.1
Injection
Injection-Schwachstellen (SQL-, OS- oder LDAP-Injection) treten auf wenn nicht vertrauenswürdige
Daten als Teil eines Kommandos oder einer Abfrage von einem Interpreter verarbeitet werden. Ein
Angreifer kann Eingabedaten dann so manipulieren, dass er nicht vorgesehene Kommandos ausführen
oder unautorisiert auf Daten zugreifen kann.
4.2
Broken Authentication and Session management
Anwendungsfunktionen, die die Authentifizierung und das Session-Management umsetzen, werden oft
nicht korrekt implementiert. Dies erlaubt es Angreifern Passwörter oder Session-Token zu kompromittieren oder die Schwachstellen so auszunutzen, dass sie die Identität anderer Benutzer annehmen
können.
4.3
Cross-Site-Scripting - XSS
XSS-Schwachstellen treten auf, wenn eine Anwendung nicht vertrauenswürdige Daten entgegennimmt
und ohne entsprechende Validierung oder Umkodierung an einen Webbrowser sendet. XSS erlaubt
es einem Angreifer Scriptcode im Browser eines Opfers auszuführen und somit Benutzersitzungen zu
übernehmen, Seiteninhalte zu verändern oder den Benutzer auf bösartige Seiten umzuleiten.
4.4
Insecure Direct Object References
Unsichere direkte Objektreferenzen treten auf, wenn Entwickler Referenzen zu internen Implementierungsobjekten, wie Dateien, Ordner oder Datenbankschlüssel von aussen zugänglich machen. Ohne
Zugriffskontrolle oder anderen Schutz können Angreifer diese Referenzen manipulieren um unautorisiert Zugriff auf Daten zu erlangen.
4.5
Security Misconfiguration
Sicherheit erfordert die Festlegung und Umsetzung einer sicheren Konfiguration für Anwendungen,
Frameworks, Applikations-, Web- und Datenbankserver sowie deren Plattformen. Sicherheitseinstellungen müssen definiert, umgesetzt und gewartet werden, die Voreinstellungen sind oft unsicher. Des
Weiteren umfasst dies auch die regelmässige Aktualisierung aller Software.
4.6
Sensitive Data Exposure
Viele Anwendungen schützen sensible Daten, wie Kreditkartendaten oder Zugangsinformationen nicht
ausreichend. Angreifer können solche nicht angemessen geschützten Daten auslesen oder modifizieren
und mit ihnen weitere Straftaten, wie beispielsweise Kreditkartenbetrug, oder Identitätsdiebstahl begehen. Vertrauliche Daten benötigen zusätzlichen Schutz, wie z.B. Verschlüsselung während der Speicherung oder Übertragung sowie besondere Vorkehrungen beim Datenaustausch mit dem Browser.
1 http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202013.pdf
2 https://www.owasp.org/images/4/42/OWASP_Top_10_2013_DE_Version_1_0.pdf
22
4.7
Missing Function Level Access Control
4.7
4
OWASP TOP 10
Missing Function Level Access Control
Die meisten betroffenen Anwendungen realisieren Zugriffsberechtigungen nur durch das Anzeigen oder
Ausblenden von Funktionen in der Benutzeroberfläche. Allerdings muss auch beim direkten Zugriff auf
eine geschützte Funktion eine Prüfung der Zugriffsberechtigung auf dem Server stattfinden, ansonsten
können Angreifer durch gezieltes Manipulieren von Anfragen ohne Autorisierung trotzdem auf diese
zugreifen.
4.8
Cross-Site Request Forgery - CSRF
Ein CSRF-Angriff bringt den Browser eines angemeldeten Benutzers dazu, einen manipulierten HTTPRequest an die verwundbare Anwendung zu senden. Session Cookies und andere Authentifizierungsinformationen werden dabei automatisch vom Browser mitgesendet. Dies erlaubt es dem Angreifer
Aktionen innerhalb der betroffen Anwendungen im Namen und Kontext des angegriffen Benutzers
auszuführen.
4.9
Using Components with Known Vulnerabilities
Komponenten wie z.B. Bibliotheken, Frameworks oder andere Softwaremodule werden meistens mit
vollen Berechtigungen ausgeführt. Wenn eine verwundbare Komponente ausgenutzt wird, kann ein
solcher Angriff zu schwerwiegendem Datenverlust oder bis zu einer Serverübernahme führen. Applikationen, die Komponenten mit bekannten Schwachstellen einsetzen, können Schutzmassnahmen
unterlaufen und so zahlreiche Angriffe und Auswirkungen ermöglichen.
4.10
Unvalidated Redirects and Forwards
Viele Anwendungen leiten Benutzer auf andere Seiten oder Anwendungen um oder weiter. Dabei
werden für die Bestimmung des Ziels oft nicht vertrauenswürdige Daten verwendet. Ohne eine entsprechende Prüfung können Angreifer ihre Opfer auf Phishing-Seiten oder Seiten mit Schadcode umoder weiterleiten.
23
5
5
IDENTITY AND ACCESS MANAGEMENT
Identity and Access Management
Unter Federated Identity Management gehören Abkommen, Standards und Technologien für
Identitäten und Berechtigungen portabel über autonome Identitätsdomänen. Die Föderation (Zusammenschluss) ermöglicht es, die Identitätsinformationen von verschiedenen Systemen transparent und
sicher auszutauschen, um damit auf Sicherheitsebene zusammenarbeiten zu können.
5.1
Authentication & Authorization Infrastructure - AAI
Ohne eine einheitliche AAI benötigt jede zu schützende Ressource eine separate Benutzer-Administration
und -Authentifikation. Probleme/Nachteile ohne AAI:
• Aufwändige und fehleranfällige Registration auf für jede einzelne Ressource
• Unzuverlässige und veraltete Daten
• Verschiedene Logins/Passwörter
• Gewisse Ressourcen werden gar nicht erst benötigt
• Ressorucen sind meist nur durch IP-Adressen geschützt
Mit einer AAI muss sich der Benutzer nur noch an einer Stelle Authentifizieren. Die Authentifizierung wird dann an den verschiedenen Ressourcen für die Autorisierung benötigt. Vorteile durch
AAI:
• Keine Registration pro Ressource nötig
• Einheitliche Login-Prozedur
• Neue Ressourcen können leicht hinzugefügt werden
• Standortunabhängig
• Weniger Kennwörter zu merken
Abbildung 10: Exemplarische Übersicht von AAI (Source: switch.ch/aai)
5.1.1
Shibboleth
Eines der weit verbreiteten AAI, welches die Authentifizierung von Classic Web-Services über die
Protokolle SOAP, XML und SAML übernimmt unter Verwendung von http.
Basiert auf SAML-Assertions (Security Assertion Markup Language) ausgestellt von vertrauten
24
5.1
AAI
5
IDENTITY AND ACCESS MANAGEMENT
Home-Organisationen (Identity Providers), welche von Ressourcen (Service Providers) aus dem
Verbund akzeptiert werden.
Abbildung 11: Vollständige Loginprozedur mit Shibboleth (Source: switch.ch/aai)
Ein Beispiel für AAI mittels Shibboleth ist das System von SWITCH für Universitäten, mit dem
man sich z.B. bei Unterrichtsplattformen oder Online-Shops mit dem Login der Uni-/Fachhochschule
anmelden kann.
Dieses System übermittelt zudem zusätzliche Attribute zum authentifizierten Benutzer, wie etwa
seine Mail-Adresse oder SwissEduPersonUniqueID.
Der Standard XML Signature Syntax and Processing erlaubt die Signierung, Integritätsprüfung
und Nachrichtenauthentifizierung.
Der Standard XML Encryption Syntax and Processing erlaubt die Verschlüsselung von Daten
(sogar teile des XML-Dokumentes) innerhalb eines XML-Dokumentes.
Der Standard Secure Assertion Markup Language 2.0 kombiniert den XML Signature Syntax
und XML Encryption Syntax in einem Dokument mit Authentifikation Attriuten und Autorisation.
Das resultierende XML-Dokument ist eine portable Identität für Single Sign-On Web Services.
Die Verwendung von SAML bringt als Vorteil mit sich, dass bestehende Enterprise-Anwendungen
direkt integriert werden können. Das zu grunde liegende XML bringt aber dennoch etwa 90% Overhead mit sichs.
Über die Architektur von SuisseID lässt sich so z.B. auch die Alters-Verifikation sicherstellen, da
für die Ausstellung eine Identitätsprüfung durchgeführt wird.
5.1.2
OAuth2
Wurde entworfen für neuere Protokolle wie REST und JSON, kommuniziert über https. Es gibt
keine eingebauten Sicherheits-Funktionen, diese wird komplett durch TLS (z.B. https) übernommen.
Die Funktionsweise ist vergleichbar mit Kerberos.
Resource Owner Benutzer
Resource Server Die API
Authorization Server Autorisiert den Benutzer, oftmals auf dem selben Server wie Resource Server.
25
5.1
AAI
5
IDENTITY AND ACCESS MANAGEMENT
Client Thirt-Party application, welche auf die API zugreifen möchte.
Abbildung 12: Beispiel eines Zugriffs auf geschützte Ressourcen mittels OAuth2
Man kann OAuth2 nicht als zuverlässige Benutzerauthentisierung zählen. OpenID connect versucht
aber diese Probleme zu lösen.
Jeder Anbieter setzt eine andere Versionen davon ein oder sogar eine eigene Implementierung.
5.1.3
OpenID Connect
• OpenID Connect 1.0 is a simple identity layer on top of OAuth 2.0.
• OpenID Connect 1.0 specifies a REST-based http API, using JSON as a data format..
• OpenID Connect 1.0 uses a JSON Web Token (JWT) which can be signed using JSON Web
Signature (JWS) and optionally encrypted using JSON Web Encryption (JWE).
• OpenID Connect 1.0 is used by Google+ Sign-In.
26
6
6
WEB ENTRY SERVER
Web Entry Server
Ohne Massnahmen werden mehrere Verbindungen direkt zu den Applikationsserver in der DMZ gemacht. Um dies zu verhindern wird eine Web Entry Server eingesetzt, welcher ein modifizierter
Apache Web Server ist.
Insgesamt kann dieser Server dann auch als Web Application Firewall (WAF) bezeichnet werden,
und folgende Funktionen übernehmen:
• Network Filter Level
• SSL Termination
• Protocol Validation and Rebuilding
• Character Encoding and Unicode Verficatoin
• White/Black List Filter
• Cookie Protection
• URL Encrypting
• Smart Form Protection
• Response Content Filter
• Response Rewriting
• Pre-Authentication
6.1
Reverse Proxy
Ein Reverse Proxy lädt Ressourcen für einen Client von mehreren Servern. Die Adressen der Zielsysteme bleiben für den Client dabei verborgen. Modul: mod proxy
6.2
Pre-Authentication
Der Zweck einer Pre-Authentication ist dass jegliche Backend Requests bereits authentifiziert
sind. Zudem werden forensische Log-Daten abgelegt.
6.2.1
Ablauf
1. Anfrage des Clients auf App wird auf Login Server redirected
2. Client erhält Cookie für Authentifizierungsprozess
3. Bei erfolgreichem Login erhält Client ein neues Cookie
4. Client verwendet Cookie für Zugriff auf Applikation
6.2.2
Zweck der Cookies
Bei den Cookies muss jeweils ein Zeitstempel und eine Zufallszahl (Nonce) enthalten sein, um Replay
Attacken zu verhindern.
Das zweite Cookie nach erfolgreicher Authentifizierung wird benötigt um gegen Session Fixation zu
wirken. Bei Session Fixation bringt der Attackierer einen Benutzer dazu, sich mit seiner Session ID
zu authentifizieren, welcher dann Zugriff auf die Applikation erhält.
Modul: mod but
6.3
Filtering
Der Web Entry Server übernimmt das Herausfiltern von unerwünschten Requests, z.B. SQL Injections,
und Responses, z.B. Stack Traces.
Modul: mod security
27
6.4
6.4
Unique ID
6
WEB ENTRY SERVER
Unique ID
Über Generierung und Weiterleitung einer Unique ID innerhalb aller Systeme lassen sich die verschiedenen Logfiles miteinander korrelieren. Man spricht dabei von der Forensic Readiness.
Module: mod unique id, mod headers.
6.5
URL Encryption
Bei der URL-Encryption wird die URL dynamisch verschlüsselt, um gegen manipulierte URLs zu
kämpfen (Forceful Browsing), um Parameter zu schützen, und Technologie und Topologie
zu verstecken.
6.6
Content Rewriting
Relative URLs sind generell kein Problem. Absolute URLs, die Cookie Domain und in manchen Fällen
die Werte der Cookies müssen jedoch ersetzt werden.
Modul: mod substitute
6.7
Session Store
Falls Anpassungen der Cookies bei einer Anwendung nicht möglich sind (HttpOnly, Secure), kann
die WAF hier einspringen. Sie weist dem Client eine ID zu, und speichert alle Session-Cookies der
Anwendung selber, anstatt sie an den Client weiterzuleiten. Bei einer Anfrage reichert die WAF
die Anfrage wieder mit dem passenden Session-Cookie an. Die Session-ID des Clients kann somit mit
weiteren Client-Eigenschaften verglichen werden (Sticky Sessions). Auch ermöglicht dies die zentrale
Verwaltung von Sessions, z.B. Session Expiration.
28
7
7
SERVER SECURITY
Server Security
Man sollte davon ausgehen, dass die verwendete Software Schwachstellen besitzt. Auch wenn diese
Schwachstellen nicht ausreichen, können sie dennoch als Sprungbrett für andere Angriffe verwendet
werden. Daher ist es zwingend Nötig, das System auf allen möglichen Ebenen zu Härten und damit
die Sicherheit zu erhöhen. Man spricht dabei von einer Multi-Defense Strategy.
Statistisch gesehen existiert für eine neu entdeckte Sicherheitslücke nach 6 Tagen ein Exploit und
erst nach 54 Tagen ein Patch. Oftmals ist Lesezugriff ausreichend, um einem Unternehmen Schaden zuzufügen oder daraus zu profitieren. Schreibzugriffe sind ebenfalls nicht zu vernachlässigen.
Besitzt der Angreifer Schreibzugriff, so kann er Anwendungen auf den Server laden und diese später
ausführen. Beispiel: PHP Shell.
7.1
7.1.1
Hardening
Während der Installation des Systems
• Minimales System
• Keine Standard-Pfade
• Separate Disk/Partition für log files
• Aktuellste Patches eingespielt
• Default Secure (Umask, Path)
• Verwendung eines Install Servers
7.1.2
Netzwerksicherheit
• Nur benötigte Dienste starten
• Least File Permissions für Dienste anwenden
• Least Process Privileges anwenden
• Standard-/Beispielinstallationen entfernen
• Banner Hiding (keine Versionsinformationen sichtbar)
• Error Handling (keine Fehlerdetails sichtbar nach aussen)
7.1.3
Authentifizierung
• Verwendung einer sicheren Authentifizierung (Benutzername, Kennwort, OTP, Client Certificate)
• Password Policy (Stärke, Gültigkeitsdauer, Kennwortwechsel, Erkennung von Attacken auf geknackte Passwörter)
7.1.4
Monitoring und Auditing
• Zeitsynchronisation
• Integritätstests
• Event handling (info, debug, error, panic, log)
• Forensic Readiness
• Remote Logging
29
7.2
Unix Process Security
7.2
7
SERVER SECURITY
Unix Process Security
Unter Linux ist ein weit verbreiteter Ansatz in der Prozess-Sicherheit die Isolierung durch Chroot
(change root). Dabei wird dem Prozess ein angegebenes Verzeichnis als Root vorgegaukelt. Innerhalb
des neuen Root-Verzeichnis befinden sich alle für den Service nötigen Dateien. Er kann dabei nicht
auf Dateien zugreifen, welche sich ausserhalb des neuen Root-Directories besitzen. Man spricht dabei
auch von einem Jail.
Durch Schwachstellen im Unix-Kernel ist es aber trotzdem möglich, aus diesem Jail auszubrechen.
7.3
File Permissions
Die Berechtigungen auf Dateisystemebene sollten so restriktiv wie möglich sein. Als Grundsatz gilt:
Never give “world“ write access. Dasselbe gilt für sensitive Informationen: Keep sensitive data
secure by removing read access from “world“.
Um die Standard-Berechtigungen unter Unix zu setzen, kann mit einer Maske gearbeitet werden. Diese
ist auch bekannt als “Umask“. Um die obigen Berechtigungen für den aktuellen Prozess zu ändern,
kann z.B. $ umask 027.
Durch dieses Vorgehen kann auch die Gefahr einer Local File Inclusion vermindert werden.
Abbildung 13: Beispiel der Berechtigungen für Apache und Tomcat
7.3.1
Apache File Permissions
• Im Besitz von Root
– Konfigurationsdateien
– SSL Schlüssel
– Log
– Html
• Eigentümer des Apache Prozess benötigt nur RO
30
7.4
Privilege Escalation
7
SERVER SECURITY
– Html
7.3.2
Tomcat File Permissions
Dies gestaltet sich oftmals schwierig, denn Tomcat besitzt eine andere Prozess-Architektur. Der Eigentümer des Tomcat-Prozess benötigt RW, für Remote Deployment, Konfiguration und Load Balancing.
7.4
Privilege Escalation
Dabei versteht man die Möglichkeit, die Berechtigungen des aktuellen Prozesses so zu verändern, dass
man Zugriff auf andere geschützte Elemente erhält. Dazu können z.B. Bugs in SetUID-Tools verwendet werden.
Aber auch CRON kann gefährlich sein, da die Prozesse als Root gestartet werden. Wenn nun ein von
CRON-Skript “world-writeable“ ist, kann somit schnell etwas mit höchsten Berechtigungen ausgeführt
werden.
7.5
Network Hardening
Nur die nötigsten Dienste sollten gegen Anfragen von aussen reagieren. Alle anderen müssen an
localhost gebunden sein. Alternativ kann auch eine Firewall dafür eingesetzt werden.
Dienste wie UPNP, Bonjour / Zeroconf und DLNA sollten aufgrund ihrer grossen Attach-Surface auch
deaktiviert werden. Dies stammt daher, dass oftmals die Geräte unzureichende Authentifizierungsmechanismen implementiert haben.
Es wird in den Folien auch von der Verwendung von IPv6 abgeraten.
ICMP-Redirects deaktivieren, um MITM-Attacken vorzubeugen.
Eine Analyse mittels Nmap oder Lynis von Cisofy3 helfen, Schwachstellen aufzudecken.
7.6
DB Hardening
Wie auf das Dateisystem trifft das Prinzip Least Privileges auch auf die Datenbank zu. Der in der
Anwendung hinterlegte Benutzer darf nur auf seine Datenbanken Berechtigungen erhalten. Es können
in einer Anwendung auch mehrere Benutzer hinterlegt werden, mit unterschiedlichen Berechtigungen.
So z.B. ein Benutzer nur mit SELECT -Permissions für Abfragen, INSERT und UPDATE für Bestellungen und ein CREATE, DELETE für den DB-Admin.
Keinesfalls sollte der Applikations-User GRANT -Permissions erhalten.
3 https://cisofy.com/lynis/
31
8
8
8.1
MOBILE APPLICATION SECURITY
Mobile Application Security
iOS
Basierend auf OSX hat Apple das iOS lanciert. Dabei wurde Objective-C, Swift, und C verwendet.
iOS verfügt über Sandbox Mechanismen, ein Data Protection API, Code Signing und den Appstore
mit manueller Freischaltung.
Abbildung 14: iOS Data Protection API
Bei iOS ist das Permission Model so eingerichtet, dass bei jeder Verwendung nach Erlaubnis gefragt
wird und individuell erlaubt oder abgelehnt werden kann.
8.2
Android
Auf Linux basierend in Java und C entstand Andoid, welches von verschiedene Hardware-Anbietern
übernommen wurde. Somit hat es auch noch viele alte Versionen auf dem Markt.
Android unterstützt SD Karten, Sandboxing via JVMs, Code Signing, und mehrere verschiedene
Appstores.
Die App Permissions sind bei Android im Manifest hinterlegt und können ab Android 6 individuell
angenommen oder abgelehnt werden.
8.3
Windows Phone
Windows Phone von Microsoft unterstützt ebenfalls strict sandboxing, Address Space Layout Randomization (ASLR, zufällige Ladeposition von Programmen in Speicher als Schutz gegen Overflow),
Bit Locker Verschlüsselung, Data Protection API (ähnlich wie bei iOS), aber auch Gefahren wie automatisches Wi-Fi credential sharing über Facebook, Outlook oder Skype. (In Version 1607 wurde die
umstrittene Funktion Wi-Fi Sense wieder entfernt.)
8.4
Xamarin
Xamarin ermöglicht die Entwicklung von platformübergreifenden, nativen Apps. Dabei wird das Mono
Framework (.NET kompatibel) verwendet und in C# programmiert, welches zu IL-Code (Microsoft
Intermediate Language) kompiliert wird.
Die native APIs werden zwar zu den .NET namespaces gemapped, jedoch müssen platformabhängige
Security Features sowie User Interfaces immer noch für jede Platform geschrieben werden.
8.5
Cordova (Phonegap)
Cordova wird verwendet um Mobile Apps mit HTML, JS und CSS zu entwickeln. Es bringt somit
native Funktionalität, basiert aber auf Web View Komponente. Somit fallen jedoch auch alle bekannten
Schwachstellen an.
32
9
9
OWASP MOBILE TOP 10
OWASP Mobile Top 10
Abbildung 15: OWASP Mobile Top 10, 2016
9.1
M1: Improper Platform Usage
Missbrauch eines Platform Features oder fehlende Sicherheitsmassnahmen, und das somitige Verletzten von Guidelines.
Beispiel: Zu viele Permissions, unverschlüsseltes Ablegen von Credentials in Property-File anstelle
der KeyChain (iOS).
Lösung: Konsultieren der Platform Guidelines beim Entwickeln.
9.2
M2: Insecure Data Storage
Durch Ablegen von Daten in unsicherem Speicher oder unvorhergesehenem Datenleak (siehe Unterkapitel) besteht erhöhte Gefahr wenn das Gerät gestohlen wird/verloren geht oder mit Malware infiziert
ist nach jailbreak/rooting.
9.2.1
System Screenshots
Das Betriebssystem erstellt ein Screenshot der Anwendung, um diese unter den zuletzt verwendeten
Anwendungen darzustellen. Manchmal aber auch in anderen Fällen.
Beispiel: E-Banking Kontoinformationen können eingesehen werden über den Screenshot des Apps.
Lösung: Screenshots vom System unterbinden oder sensitiven Daten überdecken.
Listing 6: Lösung für iOS
1
2
3
(void) applicationDidEnterBackground:(UIApplication *)application{
// mask the sensitive data or add an additional layer on top
}
Listing 7: Lösung für Android
1
window.addFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
9.2.2
Keyboard
Viele Keyboards verfügen über Autocomplete. Das iOS zum Beispiel speichert bis zu 500 Wörter.
33
9.2
M2: Insecure Data Storage
9
OWASP MOBILE TOP 10
Beispiel: Passwort Feld unterstütz Autocomplete; Das Passwort wird somit auch an anderen Stellen
vorgeschlagen wenn mit dem selben Buchstaben begonnen wird.
Lösung: Autocomplete bei sensitiven Daten deaktivieren.
Listing 8: Lösung für iOS
1
2
theTextField.secureEntry = YES;
theTextField.autocorrectionType = UITextAutocorrectionTypeNo;
Listing 9: Lösung für Android
1
android:inputType="textNoSuggestions";
9.2.3
Clipboard
Standardmässig wird ein globales Clipboard für Copy & Paste verwendet, und jedes App kann darauf
zugreifen.
Beispiel: Sensitive Daten befinden sich noch im Clipboard aus der E-Banking App.
Lösung: Clipboard leeren oder ein dediziertes Clipboard verwenden.
Listing 10: Lösung für iOS
1
UIPasteBoard *uniqueBoard=[UIPasteboard pasteboardWithUniqueName];
9.2.4
Logs
Crash- und Applikationslogs können sensitive Daten enthalten. Im Apple System Log (ASL) bei iOS
werden sogar alle Logs gecached bis zum nächsten Reboot und auch nicht sandboxed. Bei Android
müssen Debug Logs bei der finalen App deaktivieren werden.
Beispiel: Bei gescheitertem Loginversuch speichert das Log Benutzername und Passwort im Log.
Lösung: Dedizierter Logger für Debug Build der App.
9.2.5
Web Data
Eine WebView speichert jegliche Daten wie ein konventioneller Web Browser. Dies umfasst ein Web
Cache, lokaler Speicher, Cookies, Passwörter die direkt oder in eine Sqlite Datenbank gespeichert
werden.
Beispiel: Ablegen von unverschlüsselten Passwörtern und Benutzernamen in Sqlite Datenbank.
Lösung: Korrekte Systemspeicher verwenden.
9.2.6
Inter-Process Communication
Apps können URL Handlers registrieren, wobei der Empfänger und die überlieferten Informationen
nicht geprüft werden können. Zudem entsteht ein Problem wenn mehrere Apps für ein Handler bestehen. Bei Android kann dann die aufzurufende Applikation gewählt werden, bei iOS wird die zuletzt
installierte App automatisch ausgewählt.
Beispiel: Sensitive Daten werden bei Aufruf über einen Handler abgefangen.
Listing 11: Aufruf von Skype
1
skype://090012312312?call
Lösung: Bei Android direkter Aufruf eines Intent aus der anderen App.
34
9.3
M3: Insecure Communication
9.3
9
OWASP MOBILE TOP 10
M3: Insecure Communication
Das Verwenden von inkorrekten oder alten SSL Versionen, schwache Protokollaushandlung oder einfach Plain Text Kommunikation.
Ab iOS 9 wurde mit App Transport Security durch mimimum Anforderungen eingeführt (TLS 1.2
mit PFS, Zertifikat und SHA-256 Signatur, 2048-bit RSA oder 256-EC Key). Apps unterstehen diesen
Vorbestimmungen oder müssen explizite Ausnahmen definieren.
9.3.1
Certificate Pinning
Standardmässig wird bestimmten Certificate Authorities (CA) vertraut. Deren Root Zertifikate sind
auf jedem Gerät vorinstalliert.
Beispiel: Die CA wurde gehacked oder ein Attackierer hat dem Gerät eine falsche CA hinzugefügt.
Lösung: Certificate Pinning, eingeführt durch Google Chrome. Speichert das Zertifikat oder dessen
Public Key in der App und überprüft dieses.
9.4
M4: Insecure Authentication
Das Verletzten von Privacy durch Mitschicken von Gerät-spezifischen Daten, spoofing, vohersehbare
Session IDs, oder kein Session Timeout.
9.5
M5: Insufficient Cryptography
Schwache Ciphers und/oder Keys, ungeschützte Keys in App, oder sebstgemachte Bastel-Krypto.
Android besitzt die Bouncy Castle Library. Alternativ kann dieses auch in die App eingebunden werden als Klon, welches dann Spongycastle genannt wird.
iOS hat das Common Crypto API CCCRypt. Die KeyChain kann zudem für asymmetrische Kryptographie verwendet werden. Alternativ kann OpenSSL verwendet werden.
9.6
M6: Insecure Authorization
Das authorisieren von unerlaubten Benutzern oder Methoden ausführen von zu wenig authorisierten
Benutzern. Ein klassisches Beispiel ist Forced Browsing.
9.7
M7: Client Code Quality
Implementationsprobleme wie Buffer Overflows, XSS, format string Schwachstellen etc. Muss im Code
selbst gefixed werden.
9.8
M8: Code Tampering
Es besteht die Möglichkeit dass Code selbst verändert oder ausgetauscht wird. Dazu gibt es mehrere
Möglichkeiten:
Binary/Monkey Patching Runtime Patch ohne Kopie des originalen Source Codes.
Resource Modification Manipulation von lokalen Ressource-Files, welche z.B. URLs beinhalten.
Method Hooking Bei erweiterbaren Frameworks das missbrauchen von Hooks für eigene Zwecke.
Method Swizzling Implementation zweier Methoden austauschen.
Jailbreak/Rooting Root Access zu System, kann aber anhand von Filestrukturen, Libraries oder
OS-abhängigen Merkmalen erkannt werden.
35
9.9
M9: Reverse Engineering
9.9
9
OWASP MOBILE TOP 10
M9: Reverse Engineering
Der Code kann eingesehen werden durch Binary Inspection, Dissasembly oder geleaktem Source Code.
Gegen die ersten zwei kann ein Code Obfuscator verwendet werden, wie etwa ProGuard im Android
SDK. Grundsatz: Verlass dich nicht auf Security by Obscurity.
9.10
M10: Extraneous Functionality
Schwachstellen wie Backdoors für die Entwickler, Funktionen die nicht für den Release gedacht wurden
sondern lediglich für Tests, oder Passwörter in Kommentaren.
9.11
Checkliste
• Data at Rest
– iOS: DataProtection
– Keychain API
– Backup Exclusion
– Caching
• Data in Motion
– Certificate Pinning
– Transport Security
• Data Leakage
– Prevent side-channel leakage: logs, keyboard, screenshots...
• Input Validation
– Input sanitization e.g. URL handler parameters
– Format strings
• Code Protections
– Code Obfuscation
– Stack protection
– Anti-Debug controls
– Compiler settings
– Code Injection Checks
• Web View Hardening
– Disable local file access
– Disable plugins
– Disable javascript
– URL whitelisting
• Environment integrity
– Jailbreak / Rooting detection
– Version control / mandatory updates
36
10
10
FRAUD DETECTION
Fraud Detection
Fraud Detection beschreibt das Vorgehen um Betrugsfälle, wie zum Beispiel beim E-Banking, möglichst
schnell zu erkennen und zu melden. Dabei wird der Computer als Hilfsmittel verwendet. Bis jetzt ist
die Quote der gefundenen Fälle per Fraud Detection noch sehr gering. Weit über die Hälfte der Fälle
werden durch Hinweise oder ein Management Review gefunden.
10.1
Panopticlick / Client Correlator
Panopticlick ist ein Softwareprojekt der Electronic Frontier Foundation (EFF). Das Konzept hinter
der Software liegt darin, den Benutzer bei Besuch einer Webseite zu identifizieren, ohne dass dieser
sich authentifizieren muss. Dafür wird ein Javascript auf dem Client ausgeführt, welches Informationen
über den Browser sammelt. Daraus wird eine CCID (Client Correlation ID) generiert. Diese wird auf
dem Server mit bisherigen CCIDs verglichen. Somit kann man feststellen ob der Request von einem
bereits bekannten Gerät kommt oder nicht. Um den Fingerprint des Browsers zu erstellen werden
unter anderem folgende Daten einbezogen:
• Verschlüsselte IP
• Installierte Fonts
• Installierte Plugins
• Screen Resolution
• Name des OS
• User Agent String
10.2
E-Banking
E-Banking Systeme Verwenden zwei unterscheidliche Informationstypen um allfällige Frauds zu erkennen. Sollte bei der Überprüfung ein Verdacht auftauchen, kann die Transaktion gesperrt oder zum
Beispiel per Telefon vom User bestätigt werden.
10.2.1
Technische Daten
Die Technischen Daten werden aus der Session gelesen. Die ausgelesenen Daten werden gegen alte
gesammelte Daten verglichen. Unter Anderem werden folgende Daten verwendet:
• User Agent
• Source IP
• Zeit
• Tippgeschwindigkeit
• Durchschnittliche eingeloggte Zeit
10.2.2
Business Informationen
Bei den Business Informationen geht es um die getätigte Transaktion selber. Aufgrund dieser Daten
könnte eine Fraud Transaction eventuell erkannt werden. folgende Punkte werden untersucht:
• Betrag
• erstmalige Zahlung
• An welche Bank geht die Zahlung (Inland / Ausland)
10.3
Data Mining
Data Mining beschreibt den Vorgang, um aus riesigen Mengen von Daten und Datensätzen, die wichtigen Informationen und zusammenhänge herauszufiltern. Diese Fähigkeit, wichtige Informationen aus
einer grossen Masse zu filtern, ist besonders für Vorhersagen oder Machine Learning interessant. Durch
37
10.4
Machine Learning
10
FRAUD DETECTION
Data Mining werden die Daten in Gruppen unterteilt. Drei Common Tasks sind besonders nützlich
für Fraud Detection:
• Classification: Predictive, Kunden mit einer guten Kreditwürdigkeit suchen zum Beispiel
• Clustering: Descriptive, Alle Kunden mit ähnlichem Einkaufsverhalten gruppieren
• Association Rules: Artikel finden die oft mit dem gekauften zusammen gekauft werden
10.4
Machine Learning
Aufgrund der Informationen aus den Data Minings können Machine Learning Algorithmen eingesetzt
werden, um zum Beispiel eine Transaktion als Verdächtig oder Harmlos einzustufen. Dies geschieht
immer aufgrund bisher erhaltenen Transaktionen. Der Input (Neue Transaktion) wird also nacher als
Richtwert für die nachfolgenden Transaktionen verwendet. So lernt der Automat dann von alleine. In
der Vorlesung wurden verschiedene Algorithmen aufgezeigt:
• Dempster–Shafer Theory
• BLAST-SSAHA Hybridization
• Hidden Markov Model
• Evolutionary-fuzzy System
10.5
Vorteile / Nachteile
Die aufgezeigten Systeme können bereits automatisiert betrügerische Zahlungen erkennen und diese
Melden, damit sie z.B. durch ein Mensch weiterverarbeitet werden. Je mehr Daten über den eigentlichen Benutzer zur verfügung stehen, umso besser funktioniert das ganze System. Ein automatisches
System kann schneller reagieren und den Betrüger bereits stoppen, bevor ein Schaden entstanden ist.
Diese Fraud-Detection bringt jedoch viele Nachteile mit sich. Es ist es sehr aufwändig, ein solches
System einzurichten und zu Betreiben. Damit sind grosse Kosten verbunden, denn es existieren kaum
standardisierte Lösungen und auch keine ausgearbeiteten Konzepte. Zudem liefert es immer noch viele
False Positives. Daher wird der Mensch wohl weiterhin eine zentrale Rolle spielen.
38
11
11
11.1
SECURITY TESTING
Security Testing
Notwendigkeit
Die Bedrohung von Informationssystemen ist allgegenwärtig und man kann jederzeit ein Ziel eines
Angriffes werden. Auch aus der Sicht der Beteiligten gibt es viele verschiedene Risiken, welche als
Treiber für ein Security Testing dienen.
Rollen
Risiken
Firmeninhaber, -Teilhaber
Finanzielle Risiken, Verlust von Assets, Reputationsrisiko
Aufsicht, Regulatoren
Schädigung des Wirtschaftsplatzes, Reputationsrisiko
Verwaltung, Schulen
Druck der Aufsichtsbehörde
Entwickler, Ingenieure, Forscher
Know-How Abfluss
Sicherheitsverantwortliche
Jobverlust
Kunden, Nutzer
Persönlichkeitsschutz (Datenschutz, Finanzielle Risiken)
Tabelle 3: Risiko der Beteiligten in verschiedenen Rollen
Bei einer Sicherheitsprüfung muss die Bedeutung aller Ebenen (Prozess-, Applikations- und InfrastrukturEbene) beurteilt werden. Es muss sichergestellt werden, dass der Prüfbereich sinnvoll (in Abhängigkeit
der Risikoeinschätzung) festgelegt wird.
Neben den Risiken gibt es auch noch andere Motivationen zur Durchführung von Sicherheitstests:
• Firmen interne Anforderungen
– Sicherheitsprüfung im Rahmen von Projekt-Abnahmen durch externe Firmen.
– Sicherheitssensitive Unternehmen verlangen Sicherheitstests für aus dem Internet erreichbare Systeme.
– Nachweis von sicherheitsrelevanten Bedenken.
– Nachweis von Handlungsbedarf (Budgetbeschaffung).
• Qualitätsnachweis
– Zertifizierung
• Regulatorische Anforderungen
– Regelmässige Überprüfung der Systeme und Prozesse durch unabhängige Prüfinstitute. Oft
bei Finanzinstituten wie Banken, Versicherungen und Kreditkarten-Unternehmen.
• Sicherheitsrelevante Zwischenfälle
11.2
Begriffe
Sicherheitsprüfung Allgemeine Bezeichnung für die Beurteilung einer oder mehrerer Komponenten
(Systeme oder Prozesse) bezüglich Sicherheit.
Security Audit Untersuchungsverfahren die dazu dienen, Prozesse hinsichtlich der Erfüllung von
Anforderungen und Richtlinien (z.B. Standards) zu bewerten.
Review Beurteilung von Software oder von Komponenten.
Penetration Test Überprüfung der Sicherheit von Systemen und Anwendungen (Netzwerkkomponenten, Server, Softwarekomponenten) mit Mitteln und Methoden, die ein Angreifer anwenden würde, um unautorisiert in das System einzudringen (Penetration).
White-Box-Test Methode des Software-Tests, bei der die Tests mit Kenntnissen über die innere
Funktionsweise des zu testenden Systems entwickelt werden.
39
11.3
Vorgehen bei der Sicherheitsprüfung
11
SECURITY TESTING
Black-Box-Test Im Gegensatz zum White Box Test besitzt man hier keine Kenntnis über die innere
Funktionsweise, dieses muss erarbeitet werden. Das Hauptaugenmerk liegt auf den Anforderungen des Tests und nicht auf der Implementation.
Gray-Box-Test Dies ist eine Kombination aus Black- und White-Box-Test. Der Tester besitzt teilweise Informationen über das System und die verwendeten Algorithmen.
Social Engineering Dabei wird der Mensch als Schwachstelle des Informationssystems angesehen
und ausgenutzt. Oftmals ist dies die einfachste Variante.
False Positive Der Test ergibt ein positives Resultat, obwohl keine Gefahr besteht.
False Negative Dies ist ein Trugschluss von nicht vorhandener Sicherheit. Dies geschieht, wenn der
Test Entwarnung gibt, obwohl das System verwundbar ist.
Plausibilisierung Verifiziert nicht die Richtigkeit eines Ergebnisses, zeigt aber offensichtliche Unrichtigkeit auf.
Inspektion Die Inspektion dient der Feststellung des ordnungsgemässen Zustandes eines Gegenstandes, eines Sachverhaltes oder einer Einrichtung. Die korrekte Funktion wird dabei üblicherweise
nicht verifiziert.
Prüfung Beurteilung einer Leistung. Der zu prüfende Bereich oder Gegenstand wird gegen einen
definierten und erwarteten Zustand, Funktion verifiziert.
11.3
Vorgehen bei der Sicherheitsprüfung
Schritt
Aktionen → Resultat
Scoping
Erkennen von Hanldungsbedarf, Risiko-Analyse, Erteilung Prüfauftrag, Offertenstellung, Prüfplanung → Scope
Analyse
Bestandesaufnahme, Funktionen analysieren, Dokumentstudium → Testplan
Stärken und Schwächen
Konzeptbeurteilung
Konzept beurteilen → Stärken und Schwächen des Konzeptes
Verifikation
Detailierte Testplanung, Manuelle und automatisierte Tests durchführen,
Design und Aufbau bewerten → Mängel, Empfehlungen, Risiken
Dokumentation
Reports erstellen, Resultate mit Kunden abgleichen, Ergebnisse Präsentieren
→ Formeller Bericht
Nachprüfung
Verifikation von getroffenen Massnahmen → Aktualisierte Beurteilung
Tabelle 4: Übersicht über die einzelnen Schritte
40
12
12
12.1
SPEZIALTHEMEN
Spezialthemen
XXE File Inclusion
Unter dem Begriff ist eine Attacke über das XML External Entity Processing möglich. Dabei können
externe Daten, wie z.B. lokale Dateien, in das XML inkludiert werden. Bei der Verarbeitung solcher
Inclusions, welche im DTD angegeben sind, fügt sie der Parser in die angegebenen Stelle ein.
Lösung: Deaktivierung des Features für DTDs (External Entities) beim Parser.
Listing 12: Beispiel der XXE
1
2
3
4
5
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>
12.2
JSON-Hijacking
JSON-Hijacking zielt darauf ab, sensitive Daten, die mittels JSON Format an einen authentifizierten
Empfänger übermittelt werden, zu stehlen. Dabei präpariert der Angreifer eine Seite mit einem JavaScript, welches die Callback-Funktion oder den Property Setter überschreibt. Als zweites wird ein GET
Request auf die verwundbare Seite durchgeführt. Die Response kann dann vom Angreifer verarbeitet
werden und die Daten (möglicherweise sensitive Informationen) auf seinem System speichern.
Lösung:
• Token in Request URLs verwenden, sodass diese nicht erraten werden können
• JSON Response mit einem Infinite Loop beginnen
• JSONP vermeiden
• Arrays in ein JSON-Objekt einbetten
12.3
URL-Redirection
URL-Redirection wird häufig im Zusammenhang mit Phishing verwendet, mit dem Ziel, eine Session
übernehmen zu können. Dazu wird dem Opfer einen Link untergeschoben, der auf den ersten Blick vertrauenswürdig aussieht. In Wirklichkeit enthält dieser jedoch einen Redirect auf eine Landing-Page des
Hackers. Klickt das Opfer auf diesen Link, so wird normal das Login-Formular der vertrauenswürdigen
Webseite geladen. Gibt das Opfer nun seine Credentials ein, werden diese auf Korrektheit geprüft und
es wird eine Session ausgestellt. Nach dem erfolgreichen Login, wird nun durch Redirection nicht die
vertrauenswürdige Webseite geladen, sondern die Landing-Page des Hackers. Dadurch sieht der Hacker im Log seiner Page die ausgestellte Session und kann diese übernehmen. Das Opfer selbst erhält
nur eine Meldung, dass die gewünschte Seite nicht erreichbar ist.
Beispiel: http://www.example.com/login?redirect=http://www.hack.er
Lösung:
• Inputvalidierung
– Parameter die Redirect URLS enthalten validieren
– Prüfen ob URL wirklich zur Seite gehört
• Lookup Tables
– Erstellen von Mappings zwischen Parameter und URL
– redirect=1
41
12.4
HTTP Request Smuggling
12
SPEZIALTHEMEN
– redirect=acc
12.4
HTTP Request Smuggling
HTTP Request Smuggling Attacken werden benutzt, um beispielsweise WAFs zu umgehen. Dabei
wird die Schwachstelle ausgenutzt, dass verschiedene Sicherheitssysteme HTTP Requests unterschiedlich interpretieren. Beispielsweise kann mit CR/LF (Carriage Return / Line Feed) erreicht werden,
dass innerhalb eines einzigen Requests sich zwei Requests befinden. Die WAF erkennt nur den einen,
der dahinter verborgene Webserver antwortet jedoch auf beide Requests. Somit können Informationen, die eigentlich nur zwischen WAF und Webserver sichtbar sein sollten, nach “aussen“ gelangen.
Beispielsweise ein Cookie welches zwischen WAF und Webserver einen User authentifiziert.
Oftmals werden die Felder Location und Set-Cookie als Ziel verwendet. Übliche Escape-Sequenzen
sind: %0a %0d %0a%0d %0d%0a
Listing 13: Beispiel eines Präparierten Request zur Umgehung einer Pre-Authentication
1
username=hacker10&url=%2Fsecure%0aSet-Cookie:LOGON=OK;
%0aSet-Cookie:MOD_BUT_Username=admin;&lang=EN&password=compass
Lösung:
• Web Application Firewalls verwenden, die nicht verwundbar gegen HTTP Request Smuggling
sind.
• Strenges Sessionmanagement verwenden, z.B Session nach jedem Request terminieren.
• Aktivieren von Strict Parsing beim Webserver, z.B. Apache.
12.5
Session Fixation
Bei einer Session Fixation Attacke erzeugt der Hacker bei der verwundbaren Webseite eine Session
(ohne Login). Diese Session wird nun dem Opfer mit einem Link mitgeteilt. Das Opfer authentifiziert
sich auf der Webseite unter Verwendung dieser Session und ermöglicht es somit dem Hacker, die
authentifizierte Session zu benützen.
12.6
12.6.1
SSL/TLS: SSL-Cipher-Suite-Hardening, SSL-MitM
Apache SSL Cipher Hardening
Der Nachteil des Apache SSL Cipher Hardening ist, dass der Benutzer eine unfreundliche ErrorNachricht erhält, falls dieser den Angeforderten SSL Cipher nicht unterstützt.
• SSLProtocol
– Definiert, welche protokolle akzeptiert werden
• SSL-Cipher-Suite-Hardening
– Definiert, welche SSL-Cipher akzeptiert wird
• SSLHonorCipherOrder
– Die Server SSL-Cipher Suit hat mehr priorität als die des Clients.
42
12.6
SSL/TLS: SSL-Cipher-Suite-Hardening, SSL-MitM
12
SPEZIALTHEMEN
Abbildung 16: Apache SSL Configuraiton
12.6.2
Apache SSL Cipher Forwarding
Der Vorteil dieser Variante ist, dass auch ältere Browsers sich mit der Applikation verbinden können,
da der Apache alle Ciphers akzeptiert.
Apache leitet dann die SSL Informationen zu der Applikation, via dem mod header weiter, welche
dann den Entscheid für die entsprechende SSL Cipher Suit macht.
• Applikation muss die Cipher prüfen
• Bei Änderungen oder neuen Cipher muss die Applikation neu konfiguriert werden.
43
Herunterladen