Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
AGIL, ABER SICHER?
SECURE SOFTWARE ENGINEERING
11.5.2016, ANDREAS FALK, UNI TÜBINGEN SOFTWARE ENGINEERING
Über Mich
11.05.2016 Secure Software Engineering - Universität Tübingen
Andreas Falk
NovaTec Consulting GmbH [email protected]
@NT_AQE
@Agile_Security
Mitglied der
2
Wichtige Literatur
11.05.2016 Secure Software Engineering - Universität Tübingen 3
Inhalte dieser Session
11.05.2016 Secure Software Engineering - Universität Tübingen 4
Wichtigkeit von Security bewusst machen!
Agilität und Security – Wie geht das zusammen?
Security-Grundlagen: Keine „Hacker“-Session!
https://creativecommons.org/licenses/by-sa/4.0/deed.en + Security?
Wirklich sicher? Hacks können Leben verändern!
11.05.2016 Secure Software Engineering - Universität Tübingen 5
Wirklich sicher? https://www.shodan.io
11.05.2016 Secure Software Engineering - Universität Tübingen 6
Wirklich sicher? Verschlüsselung „a la“ stackoverflow.com
11.05.2016 Secure Software Engineering - Universität Tübingen
Verschiebechiffre:
https://de.wikipedia.org/wiki/ROT13
7
Wirklich sicher? Nutzerverhalten!
11.05.2016 Secure Software Engineering - Universität Tübingen
https://www.sicher-im-netz.de/downloads/dsin-sicherheitsindex-2015
8
Wir haben doch eine „Security“-Firewall !?
11.05.2016 Secure Software Engineering - Universität Tübingen
„The Great Firewall“
Potentiell
unsichere Systeme
„Böse“ Requests „Gute“ Requests?
App A
App B
App C
App D
9
Wir setzen doch „sichere“ Frameworks und Plattformen ein!?
11.05.2016 Secure Software Engineering - Universität Tübingen
und viele andere…
10
Dokumentation, Tests und Security fallen zuerst weg!
11.05.2016 Secure Software Engineering - Universität Tübingen
Features
Dokumentation
Security / Tests
Features!
11
Entwickler vs. Security!
11.05.2016 Secure Software Engineering - Universität Tübingen 12
Qualität als Maslow‘sche Pyramide
11.05.2016 Secure Software Engineering - Universität Tübingen
http://gojko.net/2012/05/08/redefining-software-quality Maslow‘sche Pyramide
Selbstverwirklichung
Anerkennung
Soziales
Sicherheit
Grundbedürfnisse
13
OWASP Top 10 (2013)
11.05.2016 Secure Software Engineering - Universität Tübingen
http://owasp.org
14
Neue Herausforderungen für Security
11.05.2016 Secure Software Engineering - Universität Tübingen
Cloud Computing &
Big Data
Micro-
service
Micro-
service Microservices
Internet of Things (IoT)
Big Data
NoSQL
Computing
Storage
Map/Reduce
15
Neue Herausforderungen für Security
11.05.2016 Secure Software Engineering - Universität Tübingen
IoT
16
Gerätespeicher
Firmware
Geräte-Interface (Hardware)
Geräte-Interface (Web)
Netzwerk-Kommunikation
Cloud 3rd Party Backend APIs
3rd Party Backend APIs
Eigene Backend APIs
Updateverteilung
Datenschutz
Sensoren
Gibt es nicht schon sichere Entwicklungsprozesse?
Microsoft SDLC https://www.microsoft.com/en-us/sdl
Security @ Adobe https://www.adobe.com/security/proactive-efforts.html
11.05.2016 Secure Software Engineering - Universität Tübingen 17
Next Stop: Sichere Agile Entwicklung
11.05.2016 Secure Software Engineering - Universität Tübingen 18
Waterfalls
Scrum
Sichere Agile Entwicklung – Scrum Framework Elemente
11.05.2016 Secure Software Engineering - Universität Tübingen 19
http://guntherverheyen.com/2016/01/29/worrying-interpretations-of-scrum
Ausgangslage: Sicherheit == Agil?
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint 1 Sprint 2 Sprint …n
Story A
Story B
Story C
Story D
Story E
Story F
Story G
Story H
Penetrationstest Security Features
20
Go Live
Angreifer vs. DevOps
11.05.2016 Secure Software Engineering - Universität Tübingen
Zeit
Angriffe (24x7)
Deployments Penetrations-Test
Sprint Sprint Sprint Sprint Sprint Sprint Sprint
21
Auslieferbare Inkremente in Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Das Entwicklungsteam besteht aus Profis,
die am Ende eines jeden Sprints ein
fertiges Inkrement übergeben, welches
potentiell auslieferbar ist.
Potentiell unsicher ausliefern?
http://www.scrumguides.org
“
“
22
DevOps
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint
Auslieferbares
Inkrement
Betrieb /
Support
SecDevOps
Product
Backlog
Continuous Delivery
23
Vision
+ Security
DevOps
11.05.2016 Secure Software Engineering - Universität Tübingen
Betriebssystem
Java VM / Datenbank
Applikationsserver
3rd Party Bibliotheken
Anwendungscode
Netzwerk-
Firewall
Web-
Anwendungs-
Firewall
Netzwerk
SSL
Security
SecDevOps
Security
24
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint
Potentiell
auslieferbares
Inkrement
Sprint
Review &
Retro
Sprint
Planning
Sprint
Backlog Product
Backlog
25
Daily Scrum
+ Security
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Scrum Master Product Owner
Entwickler
Test & QA Security-
Officer
26
Secure DevOps = SecDevOps
11.05.2016 Secure Software Engineering - Universität Tübingen
Scrum Master
Product Owner
Entwickler
Test & QA
Security-
Officer Betrieb &
Support
27
Rollenspezifische Security Trainings
11.05.2016 Secure Software Engineering - Universität Tübingen
Development
Team
Product
Owner
28
Security-
Officer
Betrieb &
Support
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Story A
Story B
AbUser Story
Security Features
29
Product
Backlog
Threat
Modeling
Threat Modeling ist auch „Agil“
11.05.2016 Secure Software Engineering - Universität Tübingen
1
2
3
4
6
5
Produktiv Code
erstellen
Test Driven
Development (TDD)
Security Testfälle und
AbUser Stories
Threat Model
Identifikation und
Vermeidung
von Bedrohungen
Festlegung Software-
Architektur
30
AbUser Stories
11.05.2016 Secure Software Engineering - Universität Tübingen
Business User
Story
AbUser Story 1
AbUser Story N
…
Als Kunde möchte ich
Produkte auswählen
und zum Warenkorb
hinzufügen um diese zu
kaufen.
Als Angreifer möchte ich
Anfragen so
manipulieren um Preise
der Produkte im
Warenkorb zu ändern.
31
Beispiel: AbUser und Security User Stories
11.05.2016 Secure Software Engineering - Universität Tübingen 32
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen 33
Sprint
Planning
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Daily
Scrum
34
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint
35
Security
Secure Architektur/Design – Standard Architektur / Patterns
11.05.2016 Secure Software Engineering - Universität Tübingen 36
Layering
Microservices
CQRS
MVC
http://martinfowler.com/bliki/CQRS.html
Secure Architektur/Design – Standard Frameworks
11.05.2016 Secure Software Engineering - Universität Tübingen 37
Spring Security – Sichere “Cloud Native” Anwendungen
11.05.2016 Secure Software Engineering - Universität Tübingen
Enterprise Application Development
Spring IO
„Convention over Configuration“
Spring Boot
Web Application Security
Spring Security (Core)
Web
C
loud
Single Sign On (SSO)
Spring OAuth2 & Spring SAML
38
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint
39
Security
Secure Design / Coding – Security Patterns
11.05.2016 Secure Software Engineering - Universität Tübingen 40
Secure Design / Coding – Cross-Site Scripting
11.05.2016 Secure Software Engineering - Universität Tübingen 41
@NotNull
@Size(min = 1, max = 50)
@Pattern (
regexp = "^[A-Za-z0-9 ]*$",
message = "Only alphanumeric and
space characters are allowed" )
private String subject;
JPA mit „Whitelist“ Bean Validation
Input Validierung
Secure Design / Coding – Cross-Site Scripting
<script>alert('xss')</script>
11.05.2016 Secure Software Engineering - Universität Tübingen 42
<script>alert('xss')</script>
Output Escaping
Secure Design / Coding – CSRF
11.05.2016 Secure Software Engineering - Universität Tübingen 43
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
Online Banking Anwendung
<img src = "http://bank.com/transfer.do?acct=BOB&amount=100"
width = "0" height = "0" border = "0">
Email (HTML-Content)
Cross-Site Request Forgery (CSRF)
Secure Design / Coding – Security Response Header
11.05.2016 Secure Software Engineering - Universität Tübingen 44
Secure Design / Coding – Sichere Fehlermeldungen
11.05.2016 Secure Software Engineering - Universität Tübingen 45
Secure Design / Coding – Security Patterns
11.05.2016 Secure Software Engineering - Universität Tübingen 46
https://www.owasp.org/index.php/OWASP_Proactive_Controls
https://www.owasp.org/index.php/Cheat_Sheets
EINE SICHERE WEBANWENDUNG
IN 5 MINUTEN
https://start.spring.io
DEMO
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint
48
Security
Agile Security Testing
11.05.2016 Secure Software Engineering - Universität Tübingen 49
Agile Security Testing – Statische Code Analyse
11.05.2016 Secure Software Engineering - Universität Tübingen 50
+
Agile Security Testing – Code Review
11.05.2016 Secure Software Engineering - Universität Tübingen 51
Code-Reviews (Github, Gitlab, Gerrit, …)
Agile Security Testing
11.05.2016 Secure Software Engineering - Universität Tübingen
Technology
Business
Detail
Complexity / Cost Manual,
Exploratory
Testing
Automated UI-Tests
Service Layer Tests
(API-Layer)
Integrationstests
Unit Tests
Quantity
Cri
spin
, L
isa;
Gre
gor
y, J
anet
(20
08
). A
gil
e T
esti
ng
:
Unit & Component Tests
Security
52
Agile Security Testing – Security-Integrationstests
11.05.2016 Secure Software Engineering - Universität Tübingen
@Test
public void verifyAdminPathAuthorizeOK() throws Exception {
this.mvc.perform( get( "/admin" )
.with(user("admin").password("admin").roles("ADMIN") ) )
.andExpect ( status ().isOk () );
}
@Test
public void verifyAdminPathAuthorizeNOK() throws Exception {
this.mvc.perform ( get( "/admin")
.with(user("user").password("secure").roles("USER") ) )
.andExpect ( status ().isForbidden () );
}
53
Stage 1: Statisches Security Testing
11.05.2016 Secure Software Engineering - Universität Tübingen
Continuous Integration (CI)
Developer 1
1 Pull-Request
2 Trigger Build
3 Check-Out 4
Build & Tests
& Static Code Analysis
& Dependency Check
5 Report Build Result
Developer 2 6 (Security) Code-
Review
7 Push to Stable
54
Dynamisches Security-Testing
OWASP Zed Attack Proxy (ZAP)
Open Source
11.05.2016 Secure Software Engineering - Universität Tübingen
https://github.com/zaproxy/zaproxy
Burp Suite Professional
Kommerziell
https://portswigger.net/burp
55
Stage 2: Dynamisches Security-Testing
11.05.2016 Secure Software Engineering - Universität Tübingen
Acceptance Testing
UI-Testing 2 1 Deploy
4
Reporting 3 Active Scanning
Proxy
56
Sichere Agile Entwicklung mit Scrum
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint Review
& Retro
57
Idealzustand: Security == Agile!
11.05.2016 Secure Software Engineering - Universität Tübingen
Sprint 1 Sprint 2 Sprint …n
Story A
Story B
Story C
Story D
Story E
Story F
Story G
Story H
Pen-
Test
Abuse Story
Abuse Story
Security Features
58
Go Live
SecDevOps – Security + DevOps
11.05.2016 Secure Software Engineering - Universität Tübingen
Kommunikation
Zusammenarbeit
Werkzeuge
Continuous Delivery
59
SecDevOps – Testing „Infrastructure As Code“
11.05.2016 Secure Software Engineering - Universität Tübingen
/usr/bin/ruby -S rspec spec/www.example.jp/sample_spec.rb
Package "httpd" should be installed
Service "httpd"
should be enabled
should be running
Port "8443"
should be listening
Finished in 0.21091 seconds (files took 6.37 seconds to load)
4 examples, 0 failures
http://serverspec.org
60
SecDevOps – Kostenlose SSL-Zertifikate
11.05.2016 Secure Software Engineering - Universität Tübingen
https://letsencrypt.org/
61
HTTPS für alle Websites !!
SecDevOps – Sichere TLS (SSL) Konfiguration
11.05.2016 Secure Software Engineering - Universität Tübingen
https://www.ssllabs.com/ssltest/index.html
62
SecDevOps – Sicherheit von HTTP Response-Headern
11.05.2016 Secure Software Engineering - Universität Tübingen
https://securityheaders.io
63
SecDevOps – Kenne eingesetzte 3rd Party Bibliotheken
11.05.2016 Secure Software Engineering - Universität Tübingen
https://www.owasp.org/index.php/OWASP_Dependency_Track_Project
64
Open Web Application Security Project
11.05.2016 Secure Software Engineering - Universität Tübingen
Frei und Offen
Non-Profit! Community für
sichere
Software
> 130
Projekte
> 250 lokale
„Chapters“
> 2500
Mitglieder
https://www.owasp.org
65
Open Web Application Security Project
11.05.2016 Secure Software Engineering - Universität Tübingen 66
Fazit
11.05.2016 Secure Software Engineering - Universität Tübingen
Ausbildung für Security
Security transparent machen
Security-Aktivitäten
im gesamten Entwicklungsprozess
67
http://www.gameofhacks.com
http://www.itsecgames.com
Ausblick / Weitere Schritte
11.05.2016 Secure Software Engineering - Universität Tübingen
Security-Aktivitäten im Projekt
Besuch einer (Security-) Konferenz
68
https://2016.appsec.eu
Damit das nicht mehr passiert!
11.05.2016 Secure Software Engineering - Universität Tübingen 69
FRAGEN?
11.05.2016, ANDREAS FALK
aqe.novatec-gmbh.de
@NT_AQE
blog.novatec-gmbh.de