## Abstract
Web applications are getting more and more complex and at the same time serve more people at once than desktop applications. Therefore the security-requirements for web applications are rising to higher levels. Common ways to determine the security of an application are either purely documenting the processes or simulating attacks over the course of a penetration test. The OWASP Application Security Verification Standard promises to have a better solution by checking and documenting actual security features.
On the other hand, many modern software projects use frameworks and tried and tested designs to reduce the overhead for security and maintenance during development and when running the application.
The goal of this thesis is to find out how good one can assess the security of an application using that standard and if and how it’s possible to automate the security features or at least to include them in the development process.
## Kurzfassung
Webanwendungen werden ständig komplexer und bedienen gleichzeitig mehr Menschen auf einmal als Desktop-Anwendungen. Damit steigt auch das Sicherheitsbedürfnis für Webanwendungen. Übliche Wege, um die Sicherheit einer Anwendung festzustellen und zu dokumentieren sind entweder reine Prozessdokumentationen oder simulierte Angriffe im Rahmen eines Penetration Tests. Der OWASP Application Security Verification Standard verspricht hier eine bessere Lösung gefunden zu haben indem konkrete Sicherheitsmaßnahmen geprüft und dokumentiert werden.
Auf der anderen Seite setzen viele moderne Softwareprojekte auf die Hilfe von Frameworks und erprobten Architekturen, um den Sicherheits- und Wartungsaufwand während Betrieb und Entwicklung zu minimieren.
Ziel dieser Arbeit ist es daher festzustellen inwieweit eine Sicherheitseinschätzung mithilfe des Standards möglich ist und ob und wie sich die Anforderungen entweder automatisieren lassen oder zumindest in den Entwicklungsprozess integriert werden können.
1. WEB SECURITY MIT DEM OWASP ASVSWEB SECURITY MIT DEM OWASP ASVS
Kolloquium zur Masterarbeit "Untersuchung einer Webanwendung nach dem OWASP Application Security Veri cation Standard" von Benedikt Bauer
10. WAS ALSO TUN?WAS ALSO TUN?
(ZIELE)(ZIELE)
Sicherheit einschätzen
Sicherheitslücken schließen
11. WAS ALSO TUN?WAS ALSO TUN?
(ZIELE)(ZIELE)
Sicherheit einschätzen
Sicherheitslücken schließen
Neuen Sicherheitsproblemen vorbeugen
12. WIE KÖNNEN ZIELE ERREICHT WERDEN?WIE KÖNNEN ZIELE ERREICHT WERDEN?
(STAND DER TECHNIK)(STAND DER TECHNIK)
Sicherheitsstandards
Best practices / Richtlinien für sichere
Softwareentwicklung
15. SICHERHEITSSTANDARDSSICHERHEITSSTANDARDS
ISMS nach ISO27000 Reihe
nur grobe Vorgaben zur Untersuchung, kaum
Vorgaben zur eigentlichen Sicherheit
PCI-DSS
Fokus auf persönliche Daten, IT-Sicherheit nur als
Nebeneffekt
BSI IT-Grundschutz (Baustein Webanwendungen)
16. SICHERHEITSSTANDARDSSICHERHEITSSTANDARDS
ISMS nach ISO27000 Reihe
nur grobe Vorgaben zur Untersuchung, kaum
Vorgaben zur eigentlichen Sicherheit
PCI-DSS
Fokus auf persönliche Daten, IT-Sicherheit nur als
Nebeneffekt
BSI IT-Grundschutz (Baustein Webanwendungen)
Viele Vorgaben, aber hauptsächlich Prüfung ob
bestimmte Probleme auftreten
33. ASVS AUDITASVS AUDIT
ÜBERBLICKÜBERBLICK
ASVS schlägt Sicherheitsstufen vor
Eigene Auswahl von Regeln empfohlen
Abschnitte IoT und Mobil mangels
Untersuchungsgegenstand ausgelassen
34. ASVS AUDITASVS AUDIT
ÜBERBLICKÜBERBLICK
ASVS schlägt Sicherheitsstufen vor
Eigene Auswahl von Regeln empfohlen
Abschnitte IoT und Mobil mangels
Untersuchungsgegenstand ausgelassen
Wird gerade aktualisiert (ASVS v4, Release Feb `19)
36. ASVS AUDITASVS AUDIT
ARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSEARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSE
Alle internen Anwendungsteile identi zieren (L1)
Struktur de nieren (L1)
37. ASVS AUDITASVS AUDIT
ARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSEARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSE
Alle internen Anwendungsteile identi zieren (L1)
Struktur de nieren (L1)
Externe Abhängigkeiten nden (L2)
Nach Funktion für Sicherheit oder Geschäftslogik
ordnen (L3)
38. ASVS AUDITASVS AUDIT
ARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSEARCHITEKTUR, ENTWURF UND BEDROHUNGSANALYSE
Alle internen Anwendungsteile identi zieren (L1)
Struktur de nieren (L1)
Externe Abhängigkeiten nden (L2)
Nach Funktion für Sicherheit oder Geschäftslogik
ordnen (L3)
Bedrohungsanalyse nach STRIDE (L3)
51. ASVS AUDITASVS AUDIT
VALIDIERUNGVALIDIERUNG
XSS, SQL-Injection, Buffer Over ow vermeiden (L1)
Protokollierung aller Entscheidungen (L1)
Eingabevalidierung im Client nur zusätzlich zu
Server (L2)
semantische Validierung (L2)
52. ASVS AUDITASVS AUDIT
VALIDIERUNGVALIDIERUNG
XSS, SQL-Injection, Buffer Over ow vermeiden (L1)
Protokollierung aller Entscheidungen (L1)
Eingabevalidierung im Client nur zusätzlich zu
Server (L2)
semantische Validierung (L2)
Nur eine Validierungsmethode pro Datentyp (L3)
64. ASVS AUDITASVS AUDIT
DATENSCHUTZDATENSCHUTZ
Vertraulichkeit (Con dentiality), Integrität
(Integrity) und Verfügbarkeit (Availability) - CIA
Keine sensiblen Daten in Cache und Cookies (L1)
HTTP-Anfragen so klein wie möglich halten (L2)
Zugriff auf sensible Daten protokollieren (L2)
Sensible Datentypen erfassen und Zugriff darauf
einschränken (L2)
65. ASVS AUDITASVS AUDIT
DATENSCHUTZDATENSCHUTZ
Vertraulichkeit (Con dentiality), Integrität
(Integrity) und Verfügbarkeit (Availability) - CIA
Keine sensiblen Daten in Cache und Cookies (L1)
HTTP-Anfragen so klein wie möglich halten (L2)
Zugriff auf sensible Daten protokollieren (L2)
Sensible Datentypen erfassen und Zugriff darauf
einschränken (L2)
Vorhaltefristen (L3)
68. ASVS AUDITASVS AUDIT
KOMMUNIKATIONSSICHERHEITKOMMUNIKATIONSSICHERHEIT
TLS / HTTPS für sensible Daten, auch intern (L1)
Starke Algorithmen / Protokolle einsetzen (L1)
Strict Transport Security einsetzen um HTTPS zu
erzwingen (L1)
Externe Verbindungen authenti zieren (L2)
Key-Pinning einsetzen gegen Man in the Middle (L2)
69. ASVS AUDITASVS AUDIT
KOMMUNIKATIONSSICHERHEITKOMMUNIKATIONSSICHERHEIT
TLS / HTTPS für sensible Daten, auch intern (L1)
Starke Algorithmen / Protokolle einsetzen (L1)
Strict Transport Security einsetzen um HTTPS zu
erzwingen (L1)
Externe Verbindungen authenti zieren (L2)
Key-Pinning einsetzen gegen Man in the Middle (L2)
Verbindungsfehler protokollieren (L3)
76. ASVS AUDITASVS AUDIT
BUSINESS LOGICBUSINESS LOGIC
Ausführung von Schritten nur in festgelegter
Reihenfolge (L2)
Beschränkungen für Geschäfte (Umsatz, Häu gkeit
etc.) (L2)
78. ASVS AUDITASVS AUDIT
DATEIEN UND RESSOURCENDATEIEN UND RESSOURCEN
HTTP-Umleitungen nur zu Whitelist Zielen (L1)
Uploads auf Viren untersuchen (L1)
Uploads nicht in Code einbinden (Local File
Inclusion) (L1)
Kein Flash, ActiveX und Co verwenden (L1)
79. ASVS AUDITASVS AUDIT
DATEIEN UND RESSOURCENDATEIEN UND RESSOURCEN
HTTP-Umleitungen nur zu Whitelist Zielen (L1)
Uploads auf Viren untersuchen (L1)
Uploads nicht in Code einbinden (Local File
Inclusion) (L1)
Kein Flash, ActiveX und Co verwenden (L1)
Dateiuploads außerhalb des Webroot speichern (L2)
81. ASVS AUDITASVS AUDIT
WEBDIENSTE UND APIWEBDIENSTE UND API
Administrative Funktionen nur Administratoren
zugänglich machen (L1)
XML/JSON Schema bereitstellen und prüfen (L1)
Keine statischen API-Keys verwenden (L1)
82. ASVS AUDITASVS AUDIT
WEBDIENSTE UND APIWEBDIENSTE UND API
Administrative Funktionen nur Administratoren
zugänglich machen (L1)
XML/JSON Schema bereitstellen und prüfen (L1)
Keine statischen API-Keys verwenden (L1)
Eingehenden Content-Type bei API-Aufruf prüfen
(L2)
86. ASVS AUDITASVS AUDIT
KONFIGURATIONKONFIGURATION
Alle Software und Kon guration aktuell halten (L1)
Verschlüsselte Kommunikation zwischen Teilen der
Anwendung (L2)
JS, CSS und Schriftarten vom eigenen Server
ausliefern statt auf CDN zu vertrauen (L3)
88. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
FRAMEWORKSFRAMEWORKS
Django ORM schützt vor SQL Injection
89. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
FRAMEWORKSFRAMEWORKS
Django ORM schützt vor SQL Injection
Sichere Passwortspeicher in Django eingebaut
90. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
FRAMEWORKSFRAMEWORKS
Django ORM schützt vor SQL Injection
Sichere Passwortspeicher in Django eingebaut
File Inclusion wird von Python verhidnert
91. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
FRAMEWORKSFRAMEWORKS
Django ORM schützt vor SQL Injection
Sichere Passwortspeicher in Django eingebaut
File Inclusion wird von Python verhidnert
ReactJS JSX zwischenkompilat, standardmäßig
escaped
92. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
FRAMEWORKSFRAMEWORKS
Django ORM schützt vor SQL Injection
Sichere Passwortspeicher in Django eingebaut
File Inclusion wird von Python verhidnert
ReactJS JSX zwischenkompilat, standardmäßig
escaped
Redux und React Props für Datenaustausch statt
direkter DOM Manipulation
93. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
ARCHITEKTURARCHITEKTUR
94. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
ARCHITEKTURARCHITEKTUR
Docker für Isolation
95. SICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTURSICHERHEIT DURCH FRAMEWORKS UND ARCHITEKTUR
ARCHITEKTURARCHITEKTUR
Docker für Isolation
HTTPS und Loadbalancer für SEO und Sicherheit
96. WIE HAT EMPTO ABGESCHNITTEN UND WIEWIE HAT EMPTO ABGESCHNITTEN UND WIE
GEHTS WEITER?GEHTS WEITER?
(ZUSAMMENFASSUNG UND AUSBLICK)(ZUSAMMENFASSUNG UND AUSBLICK)
101. ZUSAMMENFASSUNGZUSAMMENFASSUNG
Klassi zierung in Stufen funktioniert nicht
Sicheres Verhalten schützt vor unbekannten
Problemen
Anwendung erfüllt 80% der Anforderungen
insgesamt
Scheitert an Stufe 2 im Abschnitt Authenti zierung,
an Stufe 1 im Abschnitt Berechtigungen
De zite vor allem bei Datenschutz und HTTP-
Kopfzeilen
102. ZUSAMMENFASSUNGZUSAMMENFASSUNG
Klassi zierung in Stufen funktioniert nicht
Sicheres Verhalten schützt vor unbekannten
Problemen
Anwendung erfüllt 80% der Anforderungen
insgesamt
Scheitert an Stufe 2 im Abschnitt Authenti zierung,
an Stufe 1 im Abschnitt Berechtigungen
De zite vor allem bei Datenschutz und HTTP-
Kopfzeilen
Übliche Probleme durch Frameworks und
Architektur abgefangen
105. AUSBLICKAUSBLICK
ASVS v4 wird große Überarbeitung
Vergleich der Vorgehensweisen von ASVS zu lose
strukturierten Pentests
106. AUSBLICKAUSBLICK
ASVS v4 wird große Überarbeitung
Vergleich der Vorgehensweisen von ASVS zu lose
strukturierten Pentests
Mobile Anwendungen und IoT
107. AUSBLICKAUSBLICK
ASVS v4 wird große Überarbeitung
Vergleich der Vorgehensweisen von ASVS zu lose
strukturierten Pentests
Mobile Anwendungen und IoT
Sicherheit bei Anwendungen in der Entwicklung
108. AUSBLICKAUSBLICK
ASVS v4 wird große Überarbeitung
Vergleich der Vorgehensweisen von ASVS zu lose
strukturierten Pentests
Mobile Anwendungen und IoT
Sicherheit bei Anwendungen in der Entwicklung
Automatisierung