Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf ·...

33
Matthias Rohr / Secodis GmbH / JAX 2015 Sicherheit im SoftwareEntwicklungsprozess („Secure SDLC“)

Transcript of Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf ·...

Page 1: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

Matthias Rohr / Secodis GmbH / JAX 2015

Sicherheit im Software‐Entwicklungsprozess(„Secure SDLC“)

Page 2: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

2

86 %Webanwendungen

14 %Infrastruktur

Matthias Rohr Geschäftsführer der Secodis GmbH in Hamburg In der Applikationssicherheit seit 2004 aktiv Medien‐Inf. (FH), CISSP, CSSLP, CISM, CCSK Gründungsmitglied des deutschen OWASP Chapters und an 

zahlreichen OWASP‐Projekten beteiligt.

Secodis GmbH Gegründet 2013 am Standort Hamburg Schwerpunkt: Nachhaltige Verankerung von Sicherheit im 

Software‐Entwicklungsprozess

Produktunabhängig, jedoch enger technischer Austausch mit diversen Herstellern (u.a. HP, Checkmarx, Veracode)

Über mich

www.webappsecbuch.de

Page 3: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

3

Motivation (1) – Sicherheit als Querschnittsthema

1) Sicherheit erst spät im Entwicklungsprozesszu adressieren ist teuer….. und wird dadurch gerne auf das Notwendigste reduziert. 

Sicherheit ist ein Querschnittsthema, welches in allen Phasen der Entwicklung durch angemessene Maßnahmen adressiert werden muss!

2) Späte Testmethodiken (z.B. Pentests) sind oftmals nur bedingt geeignet, um Fehler in frühen Phasen überhaupt zu identifizieren.

Page 4: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

4

86 %Webanwendungen

14 %Infrastruktur

Motivation (2) – Nachhaltigkeit & Angemessenheit

Ansätze mit der Sicherheit in der Webentwicklung adressiert werden:

Page 5: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

5

86 %Webanwendungen

14 %Infrastruktur

Existierende Standards und Projekte

Microsoft SDL / SDL for Agile:

Cigital Touchpoints / Build Security In Initiative (US Homeland Security)

ISO 27034 

BSIMM (www.bsimm.com, Studie über 67 Unternehmen)

OpenSAMM (www.opensamm.org, Best Practices der OWASP):

Prozesse

Organisa

tion

Page 6: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

6

86 %Webanwendungen

14 %Infrastruktur

BSIMM Core Activities

Page 7: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

7

• Tools / Sec. Monitoring• Secure Defaults / APIs• Secure Ecosystem (Dev Env)

Technologien• Rollen / Zuständigkeiten• Prozesse / Abnahmen• Budget / Planung

Organisation

Elemente organisatorischer Anwendungssicherheit

• Schulungen / Awareness• Coaching• Wikis / Doku

Qualifikation• Security Standards• Secure Coding Guidelines• Zulieferervorgaben

Vorgaben

Einbindung /Ownershaft

Aufbau vonKnow‐How

Aufbau vonKnow‐How

Einbindung/Ownershaft

©Secodis GmbH

Page 8: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

3. Organisation / Prozesse

Page 9: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

9

Probleme klassischer Sicherheitsmaßnahmen in einer agilen Welt

Klassisches Vorgehen

Agile Entwicklung DEVOps

Release-Zyklen Monate / Jahre Wochen Stunden

Externe Sicherheits-maßnahmen

Innerhalb vonReleases

Sicherheitskonzepte,Pentests, Sec. Code Reviews

? ???

Außerhalb von Releases Sicherheitskonzepte, Pentests, Sec. Code Reviews

Interne Sicherheits-maßnahmen

Innerhalb vonReleases ? ?? ???

Außerhalb von Releases ? ?? ???

Fehlendes Know‐How

Kurze Release‐Zyklen

Page 10: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

10

Security Gates (SG)

Variante des Quality Gates, durch welche flexible Sicherheitskontrollpunkte an bestimmten Stellen des Entwicklungsprozesses etabliert.

Verschiedene Formen, z.B.: Statement:  Projekt/Team dokumentiert 

bestimmte Sicherheitsanforderungen. Review: Durchführung festgelegter 

Sicherheitsprüfungen (auch innerhalb des Teams). Sign‐Off (Abnahme): Nächster Prozessschritt nur 

mit formeller Freigabe durch autorisierte Stelle (z.B. IT‐Sicherheit).

Security Gates können optional oder verpflichtend sein und unterschiedliche Inhalte besitzen (z.B. in Abhängigkeit vom Schutzbedarf)

Page 11: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

11

Wichtige Security Gates

SG1: Initiales Security Gate Festlegung welche Maßnahmen 

umzusetzen und welche Gates mit welchen Prüfungen zu durchlaufen sind.

Bei Changes: Bewerten ob Change sicherheitsrelevant und ggf. Einbinden der Sicherheit (siehe später).

SG2: Abnahme des technischen Designs Abnahme von z.B. Sicherheitsarchitektur 

oder Sicherheitskonzept

SG3: Finale Sicherheitsabnahme (FSB) Prüfung ob in SG1 festgelegte Maßnahmen 

umgesetzt wurden. Prüfung der Ergebnisse ggf. durchgeführter 

Sicherheitstests (z.B. Pentests). Bewertung von offenen 

Sicherheitsproblemen.

SG1

SG2SG3

Page 12: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

12

Security Change Management – Arten von Changes

Typ 1: Nicht Sicherheitsrelevant 

Basis: Security Indikator (Prüfung in SG1)

Beispiel: Änderungen der Font‐Größe

Keine Sicherheitsmaßnahmen / Security Gates / Tests erforderlich (=> kein SG2 oder SG3)

Typ 2: Potentiell oder bestimmt Sicherheitsrelevant

Basis: Security Indikator (Prüfung in SG1)

Change wird als „sicherheitsrelevant“ geflaggt

Bei externen Anwendungen: Dedizierter Sicherheits‐tests der konkreten Änderung.

IT‐Sicherheit wird eingebunden und ggf. weitere Maßnahmen abgestimmt.

Typ 3: Änderungen an Sicherheitsfunktionen

Werden nur im Rahmen eines Security Changes geändert und erfordern explizite Freigaben und Planung

Sollten nicht in jedem Sprint durchgeführt werden

Entwicklung über separaten Release‐Prozess möglich.

Beispiel für Security IndikatorBeispiel für Security IndikatorBeispiel für Security Indikator

• Änderungen an (externen) Schnittstellen oder

• Änderungen bzgl. Der Verarbeitung vertraulicher Daten (Logging, Validierung, etc.) oder

• Änderungen an Rollen oder Berechtigungen oder

• Es liegen sonstige Sicherheitsbedenken vor.

Page 13: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

13

Maßnahmen für Agile Sicherheit (Auswahl)

Automatisierung (Tools, Integ. in Jenkins etc.)

Sichere Standards (Secure Defaults)

Security Change Management

Mehrschichtige Sicherheit

Peer (Security) Reviews

Bucket / Every‐Sprint‐Requirements

Security User Stories / Tasks

Tagging von Sec‐Related Stories / Tasks

Planung & Eigenverantwortungim Team!

Sprint       Planning Meeting

Daily Cycle

Update product backlog

Sprint       retrospective

Sprint       review

SCRUM PROCESS

Product Increment

Page 14: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

14

Security Champions

Lokale Zuständigkeit für Applikationssicherheit

Rolle (z.B. Entwickler), welche: Ansprechpartner innerhalb des Teams und zur IT‐

Sicherheit für Sicherheitsthemen ist als interner Multiplikator dient, aktuelle Sicherheitsvorgaben kennt,  Sicherheitstools bedient kann, Interne Sicherheitsmaßnahmen koordiniert und  sich auf dem Laufenden im Hinblick auf 

Sicherheitsthemen hält.

Häufiges Modell:  Pro Team / Projekt ist ein Security Champion zu 

bestimmen.

Page 15: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

15

Software Security Groups (SSGs)

» Interne Arbeitsgruppe / Community welche die Verbesserung der SW-Sicherheit in der Organisationzum Auftrag hat «

Aufgaben: Diskussion und Verabschieden von 

Maßnahmen/Vorgaben (z.B. in Form von Standards), Tools und aktueller Risiken

Dokumentation / Wiki Organisation von Awareness‐Maßnahmen

Mitglieder (ständige & fallbezogene), z.B.: IT‐Sicherheits‐Management (Lead‐)Entwickler Security Champions Security Tester / QA Operations (optional)

“All 67 firms agree that the success of their program hinges on having an internal group devoted to software security—the SSG. SSG size on average is 14.78 people”

(BSIMM V)

Page 16: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

16

Security Tests

Ziel: Langfristig Sicherheitstests zumindest teilweise auch innerhalb der Organisation durchzuführen

Schritt 0: Externe Pentests Große Abhängig vom Tester, Ergebnis: PDF‐Berichte, sehr eingeschränkte 

Nachhaltigkeit

Schritt 1:  Verbesserung der Qualität externer Pentests Risiko‐basiertes Testen, CVSS‐Scorings, Security Bug Bars, Security Testfallkatalog, etc.

Schritt 2: Internes Security Testing (z.B. durch Qualitätssicherung) Beispiel 1: Reflected XSS: “><script>alert(0)</script> Beispiel 2: Horizontale Priv. Erweiterung: Zugriff auf Objekt‐IDs (z.B. ?obj=1234) mit 

unterschiedlichen Rollen testen Security Peer Reviews (z.B. per gerrit, Crucible) Automatisierte Tests durch Tools (später mehr)

Page 17: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

1. Vorgaben

Page 18: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

18

Die „Elfenbeinturm-Problematik“

POLICYS• High‐Level‐Vorgaben• Techn‐ und Implement‐

UnspezifisichIS Policys(ISMS)

Application Security Standards

Entwicklungs‐Richtlinien /Coding Guidelines

?

ENTW.‐RICHTLINIEN• Häufig Vermengung von 

Anforderungen auf unterschiedlichen Ebenen

Page 19: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

19

Die Lösung der „Elfenbeinturm-Problematik“

POLICYS• High‐Level‐Vorgaben• Techn.‐ und Implement‐

Unspezifisich

IS Policys(ISMS)

Application Security Standards

Secure Coding Guidelines

STANDARDS• Verpflichtend• Techn.‐Spezifisch (z.B. Web)• Implement‐Unspezifisch

GUIDELINES• Empfehlungen• Techn.‐Spezifisch (z.B. Web)• Implementierungs‐

Spezifisch (z.B. Java)

Secure Coding Guidelines

Page 20: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

20

(Web-)AppSec-Standard: TSS-WEB

Enthält exemplarische Vorgaben für u.a.:

Sicherheit im Entwicklungsprozess

Implementierung (Validierung, Auth, etc.)

Betrieb / Härtung der Plattform

HTTP Security Header

Software‐Zulieferer

Sicherheit von Programmcode

Sicherheitstests

» Vorlage für einen technisch organisatorischen Sicherheitsstandard für Webanwendungen «

www.secodis.com/tss-web

Page 21: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

21

(Agile) Secure Coding Guidelines

Coding Guidelines dienen dazu die Vorgaben aus dem Standard für die Entwickler zu konkretisieren.

Besser als statische Dokumente sind hierfür Wikis (z.B. Confluence, Mediawiki) geeignet:

Zusätzlich wichtig: Secure Defaults!

Page 22: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

2. Technologien

Page 23: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

23

Secure Defaults (Sichere Standards)

Sichere Standards (inkl. Einstellungen) sind entscheidend bei Agiler Sicherheit!

Technologie‐Entscheidungen können große Auswirkung auf die Sicherheit haben (insb. bei Webframeworks, Security APIs)

Erweiterung vorhandener Frameworks um Security‐Funktionen / Ref‐Apps.

Beispiele:

1. Whitelisting (explizites Erlauben) statt Blacklisting (explizites Verbieten)

2. Sichere Krypto‐Standards und einfache APIs (z.B. encrypt(String), z.B. mit keyczar

3. Default‐Deny‐Prinzip: Zugriffe werden standardmäßig unterbunden und müssen explizit freigeschaltet werden

4. Minimierung der Angriffsfläche: Was nicht benötigt wird, wird abgeschaltet (Funktionen, Schnittstellen, Dienste, Parameter, etc.):

5. Implizite Enkodierung der Ausgaben durch das Framework (z.B. bei GWT), Alternativ‐Vorschlag für DevOPS: HTML‐Enkodierung aller Eingaben.

Page 24: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

24

SAST vs. DAST Tools

Schwachstellen in der laufenden AnwendungManuell: Pentest

Autom: Dynamic App. Security Testing (DAST) 

Schwachstellen auf Codeebene Manuell: Security Code Review

Autom: Static App. Security Testing (SAST)

Session  Mgmt /  CSRF,Unsichere  Einbindung,  Logikfehler,Anti‐Automatisierung,…Race ConditionsBuffer OverflowsBackdoors,Unsichere  APIs,Anbindung  Backend,…

XSS,SQL  Injection,Datenval.  allg.Authentifizierung,Zugriffsschutz,Kryptographie,Information  Leakage,Fehlerbehandlung,Konfiguration,…

Page 25: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

25

SAST (Code Security Scanner)

Tools meist kommerziell: u.A. HP Fortify (€€€), Checkmarx (€€€), Veracode (€€€), IBM AppScan SE (€€€) und mit teilweise sehr unterschiedlicher Eignung!

Häufiges Problem ist die Tool‐Ownershaft => auch deshalb wichtig innerhalb der Entwicklung zu positionieren. 

Beispiel‐Integration in Eclipse (Fortify):

Page 26: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

26

SAST – Integration in Build

Beispiel für Integration: Abbruch von Release‐Build bei neuen „High“‐Findings.

Lokaler Scan Server /Cloud Service

Entwickler

QA / Security

AutomatischerScan

Review

Build Server(Jenkings, Hudson, 

Bamboo)

Dashboard‐Integration

Page 27: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

27

DAST (Web Security Scanner) – Das „Ownership-Problem“

Kommerziell (u.a.) IBM AppScan (€€€), HP WebInspect (€€€), Accunetix (€€) Burp (€)

Kostenfrei (u.a.): skipfish, w3af, OWASP ZAP:

Probleme:(1) Generell schwer zu automatisieren, (2) Einsatz erfordert Security‐Know‐How

(in QS selten vorhanden)

Page 28: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

28

IAST - Security Analyse auch ohne Security Experten

Analyse der Anwendung durch Agenten auf Application Server

Statt Sicherheitstests reichen hierfür in der Regel fachliche Tests oder reines Crawlen der Anwendung aus (=> kaum Security Know‐How erforderlich)

Tools (u.a.): Seeker (€€€) und Contrast (€€€):

Page 29: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

29

Weitere Tools

Auch einfache Tests können jedoch sehr effektiv sein Security Test Cases (Reflected XSS), Priviligierungstests, Security Header Blacklisting von unsicheren APIs/Imports (Code Firewall) am SVS/Git

Retire JS, OWASP Dependency Checker:

Identifikation von unsicheren OpenSource Libs via Maven/Jenkins (kostenfrei)

Page 30: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

Application Security Program (ASP)

Page 31: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

31

Exemplarische Roadmap

Phase 1: Voranalyse, Planung und einfache Maßnahmen (3‐6 Monate) Ist‐Analyse: Identifikation des Sicherheitsniveaus / Reifegrads durch Pentests, Risikoanalysen, 

GAP‐Analyse gegen OpenSAMM / BSIMM Beheben bekannter Sicherheitsprobleme und „Low Hanging Fruits“ (Awareness) Workshops Identifikation der Stakeholder, des Zielreifegrades & Erstellung der Initial‐Planung  Gewinnen eines Sponsers und Budgetierung der nächsten Phasen

Phase 2: Erste Stufe der Integration (9‐12 Monate) Aufsetzen der SSGs Pilotierung und Einführung von Security Tools Umsetzung von Standards und Guidelines  Pilotierung / Etablierung von SG1 + SG3 Aufbau eines Qualifikationsprogrammes / Durchführung von Schulungen / Coachings

Phase 3: Zweite Stufe der Integration (12‐18 Monate) Umbau der Organisation / Etablierung von Rollen / Zuständigkeiten Integration von Security Tools in Prozesse Aufbau von internem Security Testing Interne Zuständigkeiten und Gremien für Applikationssicherheit Anpassungen und laufende Überarbeitung

Page 32: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

32

Zum Schluss, ein paar wichtige Gedanken…

„Wenn Du ein Schiff bauen willst, dann trommle nicht Männer zusammen um Holz zu beschaffen, Aufgaben zu vergeben und die Arbeit einzuteilen, sondern lehre die Männer die Sehnsucht nach dem weiten, endlosen Meer.“

Antoine de Saint‐Exupery

„Ein Ding ist dann wichtig, wenn irgend jemand denkt, dass es wichtig ist.“

William James

Page 33: Sicherheit im Software Entwicklungsprozess („Secure SDLC“) 2015 Secure SDLC.pdf · 2016-09-27 · (Agile) Secure Coding Guidelines CodingGuidelines dienen dazu die Vorgaben aus

Folien: http://bit.ly/1Pb6Nzo

Matthias [email protected] / 50 40 76 04

Vielen Dank! Fragen?