Dass eine Anwendung gegen Angriffe von Außen abgesichert werden muss, ist in der heutigen Zeit keine Frage mehr. Die OWASP Top10 sind in aller Munde. Um so verwunderlicher ist es, dass in den meisten Projekten die Suche nach Sicherheitslücken frühestens nach Fertigstellung der Software angegangen wird.
Dabei gibt es ein paar Möglichkeiten, bekannte Security-Probleme bereits während der Entwicklung automatisiert zu erkennen und dem Entwickler so durch geeignetes Feedback die Möglichkeit zu geben, diese zeitnah zu beheben.
Im Vortrag werden verschiedene Tools vorgestellt und gezeigt, welche Security-Probleme schon während der Entwicklung durch Continous Integration vermieden werden können.
9. Bekannte Vorfälle
• 2017
Equifax 143 Millionen
• 2016
Adult Friend Finder 422 Millionen
• 2015
Anthem 78 Millionen
• 2014
eBay 145 Millionen
JP Morgan Chase 76 Millionen
#WISSENTEILEN
10. Bekannte Vorfälle
• 2017
Equifax 143 Millionen
• 2016
Adult Friend Finder 422 Millionen
• 2015
Anthem 78 Millionen
• 2014
eBay 145 Millionen
JP Morgan Chase 76 Millionen OOPSIE!
#WISSENTEILEN
29. Warum?
• ca 90% der Anwendungen sind verwundbar
#WISSENTEILEN
30. Warum?
• ca 90% der Anwendungen sind verwundbar
• Netzwerklösungen sind nicht dafür entworfen worden auf
Anwendungslevel zu schützen
#WISSENTEILEN
31. Warum?
• ca 90% der Anwendungen sind verwundbar
• Netzwerklösungen sind nicht dafür entworfen worden auf
Anwendungslevel zu schützen
• Moderne Webanwendungen erhöhen die Sicherheitsrisiken enorm
#WISSENTEILEN
32. Warum?
• ca 90% der Anwendungen sind verwundbar
• Netzwerklösungen sind nicht dafür entworfen worden auf
Anwendungslevel zu schützen
• Moderne Webanwendungen erhöhen die Sicherheitsrisiken enorm
• Angriffe passieren im Geheimen
#WISSENTEILEN
34. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Development
Efforts
#WISSENTEILEN
35. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Development
Efforts
#WISSENTEILEN
36. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Development
Efforts
Development
Efforts
#WISSENTEILEN
37. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Version rollback
Development
Efforts
Development
Efforts
#WISSENTEILEN
38. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Impact Analysis
Version rollback
Development
Efforts
Development
Efforts
#WISSENTEILEN
39. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
40. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
41. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
42. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
43. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
44. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Reimbursements
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
45. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Reimbursements
monitoring services
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
#WISSENTEILEN
46. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Reimbursements
monitoring services
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
Legal Costs
#WISSENTEILEN
47. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Reimbursements
monitoring services
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
Legal Costs
#WISSENTEILEN
48. Der richtige Zeitpunkt
Während der Entwicklung Nach dem Release Nach dem Datenverlust
Kosten
Re-Launch
Impact Analysis
Version rollback
Reputation
damage
Reimbursements
monitoring services
Schedule delays
Development
Efforts
Re-Launch
Impact Analysis
Version rollback
Schedule delays
Development
Efforts
Development
Efforts
Legal Costs
#WISSENTEILEN
52. OWASP & Co
• Open Web Application Security Project (OWASP)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• OWASP Top10
#WISSENTEILEN
53. OWASP & Co
• Open Web Application Security Project (OWASP)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• OWASP Top10
• Web Application Security Consortium (WASC)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• Best Practices in der Implementierung und Abwehr
#WISSENTEILEN
54. OWASP & Co
• Open Web Application Security Project (OWASP)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• OWASP Top10
• Web Application Security Consortium (WASC)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• Best Practices in der Implementierung und Abwehr
• SysAdmin, Networking and Security (SANS) Institut
• Anbieter für Cybersicherheitsschulungen und –zertifizierungen
• SANS Top20
#WISSENTEILEN
55. OWASP & Co
• Open Web Application Security Project (OWASP)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• OWASP Top10
• Web Application Security Consortium (WASC)
• Non-Profit-Organisation mit dem Ziel WWW Anwendungen sicherer zu machen
• Best Practices in der Implementierung und Abwehr
• SysAdmin, Networking and Security (SANS) Institut
• Anbieter für Cybersicherheitsschulungen und –zertifizierungen
• SANS Top20
• MITRE Corporation
• Non-Profit-Organisation für die Verwaltung von Forschungsinstituten in den USA
• CWE (Common Weakness Enumeration)
• Common Attack Pattern Enumeration and Classification (CAPEC)
#WISSENTEILEN
57. WebGoat
• Entwickelt von OWASP
• Java Spring
• Unsichere Webanwendung mit
Sicherheitslücken
• Spielwiese zum Lernen
https://github.com/WebGoat/WebGoat
#WISSENTEILEN
83. Static Application Security Testing
Vorteile
Skalierbarkeit
Präzise Fehlerbeschreibungen
Benötigt keine laufende Instanz
Entdeckt SQL Injection, Buffer
Overflows, NPE und ähnliches
Keine Auswirkungen auf
(Test-)Umgebungen
Nachteile
#WISSENTEILEN
84. Static Application Security Testing
Vorteile
Skalierbarkeit
Präzise Fehlerbeschreibungen
Benötigt keine laufende Instanz
Entdeckt SQL Injection, Buffer
Overflows, NPE und ähnliches
Keine Auswirkungen auf
(Test-)Umgebungen
Nachteile
False Positives
#WISSENTEILEN
85. Static Application Security Testing
Vorteile
Skalierbarkeit
Präzise Fehlerbeschreibungen
Benötigt keine laufende Instanz
Entdeckt SQL Injection, Buffer
Overflows, NPE und ähnliches
Keine Auswirkungen auf
(Test-)Umgebungen
Nachteile
False Positives
Entdeckt nicht alle Fehler z.B. in der
Konfiguration oder bei der
Authentifizierung
#WISSENTEILEN
89. SAST – Verwundbare Bibliotheken
CVE-2017-15708
Apache Commons Collection
Remote Code Execution während der Object Deserialisierung
in Version 3.2.2 und 4.1 behoben
#WISSENTEILEN
90. SAST – Verwundbare Bibliotheken
CVE-2017-15708
Apache Commons Collection
Remote Code Execution während der Object Deserialisierung
in Version 3.2.2 und 4.1 behoben
CVE-2018-11771
Apache Commons Compress
#WISSENTEILEN
91. SAST – Verwundbare Bibliotheken
CVE-2017-15708
Apache Commons Collection
Remote Code Execution während der Object Deserialisierung
in Version 3.2.2 und 4.1 behoben
CVE-2018-11771
Apache Commons Compress
Denial of Service beim Archiv lesen durch einen unendlichen Stream
in Version 1.18 behoben
#WISSENTEILEN
123. find-sec-bugs Beispiel
• Unsichere Hash Algorithmen z.B. MD5, SHA1
• Hard kodierte Werte z.B. Passwörter, Secret Keys
• Unsichere Cipher Benutzung, z.B. No Padding bei RSA
#WISSENTEILEN
130. sonarlint
• IDE / Editor Integration für SonarQube
• Eclipse
• Jetbrains Produkte
• Visual Studio
• VS Code
• Atom
https://www.sonarlint.org/
#WISSENTEILEN
131. sonarlint
• IDE / Editor Integration für SonarQube
• Eclipse
• Jetbrains Produkte
• Visual Studio
• VS Code
• Atom
• Kein Ersatz für PMD, findbugs und Co
https://www.sonarlint.org/
#WISSENTEILEN
132. sonarlint
• IDE / Editor Integration für SonarQube
• Eclipse
• Jetbrains Produkte
• Visual Studio
• VS Code
• Atom
• Kein Ersatz für PMD, findbugs und Co
• Regeln vergleichen!
https://www.sonarlint.org/
#WISSENTEILEN
137. Integration – IDE
Sehr hohe Sichtbarkeit für den Entwickler
wird nur lokal beim Entwickler ausgeführt
#WISSENTEILEN
138. Integration – IDE
Sehr hohe Sichtbarkeit für den Entwickler
wird nur lokal beim Entwickler ausgeführt
Keine Garantie der Ausführung
#WISSENTEILEN
139. Integration – IDE
Sehr hohe Sichtbarkeit für den Entwickler
wird nur lokal beim Entwickler ausgeführt
Keine Garantie der Ausführung
CI muss extra konfiguriert werden
#WISSENTEILEN
140. Integration – IDE
Sehr hohe Sichtbarkeit für den Entwickler
wird nur lokal beim Entwickler ausgeführt
Keine Garantie der Ausführung
CI muss extra konfiguriert werden
Konfigurationsaufwand / -pflege
#WISSENTEILEN
143. Integration – Build Tools
Kann immer ausgeführt werden
„native“ CI Unterstützung
#WISSENTEILEN
144. Integration – Build Tools
Kann immer ausgeführt werden
„native“ CI Unterstützung
Eingeschränkte Sichtbarkeit für den Entwickler
#WISSENTEILEN
145. Integration – Build Tools
Kann immer ausgeführt werden
„native“ CI Unterstützung
Eingeschränkte Sichtbarkeit für den Entwickler
Visualisierung in CI muss extra konfiguriert werden
#WISSENTEILEN
146. Integration – Build Tools
Kann immer ausgeführt werden
„native“ CI Unterstützung
Eingeschränkte Sichtbarkeit für den Entwickler
Visualisierung in CI muss extra konfiguriert werden
Konfigurationsaufwand / -pflege
#WISSENTEILEN
150. Integration – SonarQube
Hohe Sichtbarkeit für alle Entwickler
Zentrale Konfigurationspflege
Zentrale Fehlerpflege
#WISSENTEILEN
151. Integration – SonarQube
Hohe Sichtbarkeit für alle Entwickler
Zentrale Konfigurationspflege
Zentrale Fehlerpflege
o Analyse erfolgt verzögert oder Build muss warten
#WISSENTEILEN
152. Integration – SonarQube
Hohe Sichtbarkeit für alle Entwickler
Zentrale Konfigurationspflege
Zentrale Fehlerpflege
o Analyse erfolgt verzögert oder Build muss warten
o IDE Integration durch eigenes Plugin
#WISSENTEILEN
153. Integration – SonarQube
Hohe Sichtbarkeit für alle Entwickler
Zentrale Konfigurationspflege
Zentrale Fehlerpflege
o Analyse erfolgt verzögert oder Build muss warten
o IDE Integration durch eigenes Plugin
Einmaliger Installationsaufwand
#WISSENTEILEN
154. Integration – SonarQube
Hohe Sichtbarkeit für alle Entwickler
Zentrale Konfigurationspflege
Zentrale Fehlerpflege
o Analyse erfolgt verzögert oder Build muss warten
o IDE Integration durch eigenes Plugin
Einmaliger Installationsaufwand
Eigener Build Schritt in der CI / Build Tools
#WISSENTEILEN
167. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Nachteile
#WISSENTEILEN
168. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Analyse auf Client- und Serverseite
Nachteile
#WISSENTEILEN
169. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Analyse auf Client- und Serverseite
Nachteile
Benötigt laufende Instanz
#WISSENTEILEN
170. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Analyse auf Client- und Serverseite
Nachteile
Benötigt laufende Instanz
Kann Teile der Anwendungen
verpassen
#WISSENTEILEN
171. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Analyse auf Client- und Serverseite
Nachteile
Benötigt laufende Instanz
Kann Teile der Anwendungen
verpassen
Manuelles „Zeigen“
#WISSENTEILEN
172. Dynamic Application Security Testing
Vorteile
Entdeckt Fehler die nur zur Laufzeit
passieren können z.B.
Fehlkonfigurationen
Analyse auf Client- und Serverseite
Nachteile
Benötigt laufende Instanz
Kann Teile der Anwendungen
verpassen
Manuelles „Zeigen“
Keine präzise Fehlerbeschreibungen
#WISSENTEILEN
212. Fazit
• Entwickler sind (meistens) keine Sicherheitsexperten
• Jeder muss sich mit dem Thema Sicherheit beschäftigen
#WISSENTEILEN
213. Fazit
• Entwickler sind (meistens) keine Sicherheitsexperten
• Jeder muss sich mit dem Thema Sicherheit beschäftigen
• Es muss Teil des Entwicklungsprozess sein
#WISSENTEILEN
214. Fazit
• Entwickler sind (meistens) keine Sicherheitsexperten
• Jeder muss sich mit dem Thema Sicherheit beschäftigen
• Es muss Teil des Entwicklungsprozess sein
• Entwicklerbewusstsein
#WISSENTEILEN
215. Fazit
• Entwickler sind (meistens) keine Sicherheitsexperten
• Jeder muss sich mit dem Thema Sicherheit beschäftigen
• Es muss Teil des Entwicklungsprozess sein
• Entwicklerbewusstsein
• CI Prozess
#WISSENTEILEN
216. Fazit
• Entwickler sind (meistens) keine Sicherheitsexperten
• Jeder muss sich mit dem Thema Sicherheit beschäftigen
• Es muss Teil des Entwicklungsprozess sein
• Entwicklerbewusstsein
• CI Prozess
• Niemand mag (Security-) Bugs
#WISSENTEILEN