Uni Tübingen Secure Software Engineering · 2016-05-13 · Über Mich 11.05.2016 Secure Software...

Post on 14-Jul-2020

2 views 0 download

Transcript of Uni Tübingen Secure Software Engineering · 2016-05-13 · Über Mich 11.05.2016 Secure Software...

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 andreas.falk@novatec-gmbh.de

@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

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

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

&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;

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