DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

73
Stephan Kaps | Bundesversicherungsamt Continuous Security Testing

Transcript of DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Page 1: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Stephan Kaps | Bundesversicherungsamt

Continuous Security Testing

Page 2: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Unbekannt, http://rachaelandtom.info/gallery/v/falken-random/random-pics/kurios119.jpg.html

Page 3: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

© Christian Schneider

Page 4: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

© Christian Schneider

Page 5: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Mögliche Lösung:

Continuous Security Testing

Page 6: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Stephan Kaps

Techn. Projektleiter

Software-Architekt

JEE – SOA - Host

Java seit 2002Speaker & Autor

ISTQB, ISAQB, IREB und ITIL

zertifiziert

Leidenschaft sind neue Technologien und Methoden

Page 7: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Was ist das?

• Warum machen wir das?

• Wie fängt man an?

• Das Projekt

• Maturity Model

• Ausblick

• Fazit

Agenda

Page 8: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Was ist das?

Page 9: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Continuous Security Testing bedeutet:

statische und dynamische Analysen

bereits während der Entwicklung durchzuführen,

um frühzeitig und regelmäßig

Sicherheitsmaßnahmen umzusetzen,

bevor manuelle Prüfungen

wie Penetrationstests zum Einsatz kommen

Was ist das?

Page 10: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Secure Coding Guide

• Integration in Build-Prozess (SDLC)

• Automatisierung (wenn möglich)

• Zusammenarbeit von Entwicklung, Betrieb und

Sicherheitsbeauftragten (SecDevOps)

Im Detail

Page 11: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

#SecDevOps

Page 12: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Warum machen wir das?

Page 13: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Wir müssen

– ISO 2700x, BSI Grundschutz

• Wir wollen

– proaktiv werden

– Mysterium enträtseln

• „moving security to the left!“

Warum machen wir das?

Page 14: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Warum machen wir das?

Bisher

Page 15: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Warum machen wir das?

Bisher

Bei Continous Delivery

Page 16: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Wie fängt man an?

Page 17: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Verstehen!

Angriffe

Verwundbarkeiten

Fehler

Schwachstellen

Attacken

Page 18: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Verfügbare Informationsquellen

– OWASP Top 10

– MITRE Top 25

• Schwachstellen (CWE)

• Attacken (CAPEC)

– Web Application Security

Consortium (WASC)

Wie fängt man an?

Page 19: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

WASC Katalog

Page 20: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 21: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Zusammenhang

Page 22: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Ein Beispiel

Page 23: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Java Web-Anwendungen:

– Als Basis die TOP 10 des OWASP

– Schwachstellen zu den einzelnen Risiken

• eindeutige Vorgaben formulieren

• Testbar durch statische Analysen

• Integration in Build-Prozess möglich

Konkret

Page 24: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Das Projekt

Page 25: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Erstellung und Etablierung von

Programmierrichtlinien zur sicheren

Softwareentwicklung

• Schneller Start mit Quick Wins

• Umsetzung mit wenig Aufwand möglich

• Richtlinien sollen leicht und schnell testbar sein

Ziele

Page 26: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Der Plan

Page 27: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

RichtlinienNr Beschreibung Risiko Verwundbarkeit

/Schwachstelle

Attacken testbar durch

1 Verhindere das Injizieren von Schadcode in SQL-Befehlen A1 - OWASP Top10 2013 WASC-20

CWE-20

CWE-89

WASC-19

CAPEC-66

FindSecBugs

2 Verwende keine hart kodierten Passwörter A2 - OWASP Top10 2013 CWE-798

CWE-259

CWE-321

FindSecBugs

3 Verwende sicheres Session-Management A2 - OWASP Top10 2013 CWE-613

CWE-614

WASC-47

CAPEC-21

web.xml Check

4 Verwende keine vorhersagbaren Zufallszahlen-Generatoren A2 - OWASP Top10 2013 CWE-6

CWE-330

CAPEC-21

CAPEC-112

WASC-11

FindSecBugs

5 Verhindere den unerlaubten Zugriff auf Dateien durch Pfad-Manipulationen A4 - OWASP Top10 2013 CWE-22 WASC-33

CAPEC-126

FindSecBugs

6 Vermeide die Anzeige von technischen Fehlermeldungen A5 - OWASP Top10 2013 CWE-209

WASC-14

CAPEC-54 web.xml Check

7 Verwende keine schwachen kryptografischen Algorithmen A6 - OWASP Top10 2013 CWE-326

CWE-327

CWE-261

CAPEC-55

CAPEC-112

FindSecBugs

8 Verwende ausreichend lange Schlüssel A8 - OWASP Top10 2013 CWE-6 CAPEC-21 web.xml Check

9 Verwende keine 3rd-Party Libraries mit bekannten Verwundbarkeiten A9 - OWASP Top10 2013 diverse: injection,

broken access

control, XSS, etc.

entsprechend

den

Verwundbarkeiten

Dependency Check

10 Verhindere das unzulässige Umleiten zu anderen URLs A10 - OWASP Top 10 2013 CWE-601 CAPEC-194

WASC-38

FindSecBugs

Page 28: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Verhindere das Injizieren von

Schadcode in SQL-Befehlen

Beispiel

Page 29: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Ursache:

– Ungeprüfte Übernahme von Usereingaben oder

Input-Parametern in SQL-Abfragen

• Auswirkung:

– Ausführung unberechtigter Abfragen oder

Manipulation von Daten

Beispiel: SQL Injection

Page 30: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Kann verhindert werden durch:

– Verwendung von Prepared Statements

– Verwendung von Hibernate Criteria

Beispiel: SQL Injection

Page 31: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Vermeide die Anzeige von

technischen Fehlermeldungen

Beispiel II

Page 32: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Ursache:

– Technische Fehlermeldungen werden bis zum

Anwender durchgereicht

• Auswirkung:

– Sensible Informationen über eine Anwendung, die

Infrastruktur oder verarbeitete Daten werden für

Unberechtigte sichtbar

Beispiel: techn. Fehlermeldungen

Page 33: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Kann verhindert werden durch:

– Definition von Standard-Error-Pages in der web.xml

– Ausgabe von StackTraces in separate Log-Dateien

Beispiel: techn. Fehlermeldungen

Page 34: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Integration in den Build-Prozess

Page 35: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• FindSecBugs(http://h3xstream.github.io/find-sec-bugs/)

• OWASP Dependency Check(https://www.owasp.org/index.php/OWASP_Dependency_Check)

• Web.xml CheckerDemnächst https://github.com/kitenco

Tools

Page 36: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

FindSecBugs Report

Page 37: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 38: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Jenkins Report

Page 39: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 40: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Web.xml Checker

Page 41: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Code-Beispiel auf Github

https://github.com/kitenco/security-test

Page 42: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Xanitizer.com

Page 43: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

No work for Devs

Page 44: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Maturity Model

Page 45: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

© Christian Schneider

Page 46: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

4 verschiedene Axen

Dynamische Tiefe

4

3

2

1

1

2

3

4

Intensität

Konsolidierung 4 3 2 1 1 2 3 4 Statische Tiefe

Page 47: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Statische Tiefe

1

• Third-Party Libraries überprüfen

• Tool: OWASP Dependency Check, retire.js für JavaScript

2

• Wichtigen Code scannen

• Tool: FindSecBugs, ScanJS

3

• Kompletten Code scannen

• Tool: FindSecBugs, ScanJS

4

• Source-Code der Third-Party Libraries scannen

• Tool: FindSecBugs, ScanJS

Page 48: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Dynamische Tiefe

1

• public attack surface (pre-auth)

• Tool: Spider (z.B. ZAP, Arachni, BDD-Security)

2

• Scan über GUI (authenticated, post-auth)

• Tool: Spider (ZAP + Session Properties, Selenium)

3

• Separates Scannen einzelner Layer

• Tool: ZAP (z.B. bei internen Web-Service Aufrufen)

4

• Gezieltes, individuelles Scannen

• Tool: Selenium Tests über ZAP oder BDD-Security

Page 49: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Intensität

1

• Dynamisch: Passives Scannen

• Statisch: Einsatz des Standard-Regelwerks

2

• Dynamisch: leichtgewichtige aktive Scanns

• Statisch: Anpassung des Standard-Regelwerks

3

• Dynamisch: schwergewichtige Scanns für wichtige Bereiche

• Statisch: FindSecBugs Threshold=Low, Effort=Max

4

• Dynamisch: schwergewichtige Scanns für alle Bereiche

• Statisch: Customized rule sets

Page 50: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Konsolidierung

1

• Erzeuge HTML Reports

• Anzeige im Jenkins

2• Definition von Quality Gates

3

• Duplikate diverser Tools konsolidieren

• Tickets im Bug-Tracker erzeugen

4

• Code coverage of security tests

• z.B. OWASP Code Pulse -> dann Reviews

Page 51: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Level 3-4Statische Tiefe

• Level 0Dynamische Tiefe

• Level 3-4Intensität

• Level 2Konsolidierung

Dieses Projekt erreicht ...

Page 52: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Ausblick

Page 53: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Weitere Programmier-Richtlinien aufstellen

• Dazugehörige Tests entwickeln und in den

Build-Prozess aufnehmen

• KVP!

Ausblick

Page 54: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

https://www.owasp.org/index.php/OWASP_Proactive_Controls

Page 55: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

1. Verify for Security Early and Often

2. Parameterize Queries

3. Encode Data

4. Validate All Inputs

5. Implement Identity and Authentication Controls

6. Implement Appropriate Access Controls

7. Protect Data

8. Implement Logging and Intrusion Detection

9. Leverage Security Frameworks and Libraries

10.Error and Exception Handling

OWASP Proactive Controls

Page 56: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• ZAP (Zed Attack Proxy) by OWASP

– https://www.owasp.org/index.php/OWASP_

Zed_Attack_Proxy_Project

• BDD-Security (ContinuumSecurity)

– http://www.continuumsecurity.net

• Arachni Scanner

– http://www.arachni-scanner.com/

Dynamische Analysen (DAST)

Page 57: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Zed Attack Proxy (ZAP)

Page 58: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 59: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

BDD-Security

Page 60: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Scenario: Issue a new session ID after authentication

Page 61: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Apache Shiro

– http://shiro.apache.org

• OWASP ESAPI

– https://www.owasp.org/index.php/Category

:OWASP_Enterprise_Security_API

• JBoss Keycloak

– http://www.keycloak.org

Security Frameworks

Page 62: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 63: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• OWASP Java Encoder

– https://www.owasp.org/index.php/OWASP_

Java_Encoder_Project

• Google Keyczar

– https://github.com/google/keyczar

• OWASP Code Pulse

– https://www.owasp.org/index.php/OWASP_

Code_Pulse_Project

Weitere Tools

Page 64: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Bald…

• SecureCodeBox von Iteratec

• Docker Container zu Security Test Farm

https://www.iteratec.de/themen/securecodebox/

Page 65: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
Page 66: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Fazit

Page 67: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Aufstellen von Richtlinien, die durch eine kurze und

präzise Erläuterung verstanden werden

• Einführung von kleinen Tools, die sich in den Build-

Prozess integrieren lassen und somit kontinuierlich

und am besten automatisiert die Einhaltung der

Richtlinien verifizieren.

Wichtige Erfolgskriterien

Page 68: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

• Ausführung dynamischer Tests kann sehr viel

Zeit in Anspruch nehmen

• Nicht bei jedem Build-Lauf möglich

• Oder weniger Auslieferungen

ABER

Page 69: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Nur wenn sich Security Testing nahtlos in den

Entwicklungs-Workflow integriert, indem Security

Bugs genauso aufgespürt, verwaltet und behoben

werden wie andere Bugs, dann wird dieses

Instrument auch von Entwicklern akzeptiert und die

Art und Weise, wie sichere Software entwickelt wird,

positiv beeinflusst.

Fazit

Page 70: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Artikel zum Vortrag erschienen in der ObjektSpektrum 4/2015

Page 71: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Noch Fragen?

http://www.kitenco.de

[email protected] | @kitenco1

Vielen Dank

Page 72: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

work just simply smarter

● Continuous

Delivery

● Application

Lifecycle

Management

● Social-

Collaboration

● Vorträge

● Artikel

● PoCs

● JIRA

● Jenkins

● Confluence

● Schulung

● Coaching

● Training

Page 73: DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Suppression of False Positives

• BDD-Security– Use false positive tables in story files

• FindSecurityBugs– Use exclusion lists in config (XML filter files)

– Use annotation @SuppressWarnings on false positive code lines

• Dependency-Check– XML file of suppressions (checked-in along with

the project)