Integration von Security-Checks
in die CI-Pipeline
ÜBER MICH
• Software-Entwickler
• Speaker
• CI / CD Flüsterer
• Angular(-ität)
Christian Schulz
ÜBER OPEN KNOWLEDGE
Branchenneutrale Softwareentwicklung und IT-Beratung
Warum?
OOPSIE!
• 2017
Equifax 143 Millionen
• 2016
Adult Friend Finder 422 Millionen
• 2015
Anthem 78 Millionen
• 2014
eBay 145 Millionen
JP Morgan Chase 76 Millionen
Softwarelebenszyklus
Product Design Development Testing Deployment Production
Product Design Development
Software Entwicklung …
… ist eine unendliche Geschichte
Security?
WORKED FINE IN DEV
NOW OPS PROBLEM
Softwarelebenszyklus
Product Design Development Testing Deployment Production
Penetration
Tests
Real-Time Application
Security Protection
oder
Web Application Firewall
Doppelter Boden?
Doppelter Boden
Web Application Firewall Anwendung
?
Doppelter Boden
Web Application Firewall Anwendung
?
Doppelter Boden
Web Application Firewall Anwendung
!
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
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
Aber wie?!
OWASP & Co
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)
Selbsttraining
WebGoat
• Entwickelt von OWASP
• Java Spring
• Unsichere Webanwendung mit
Sicherheitslücken
• Spielwiese zum Lernen
https://github.com/WebGoat/WebGoat
WebGoat – Beispiel
Damn Vulnerable Web Application (DVWA)
• Entwickelt von RandomStorm
• PHP
• Unsichere Webanwendung mit
Sicherheitslücken
• Spielwiese zum Lernen
https://github.com/ethicalhack3r/DVWA
Game of Hacks
• Checkmarx
• http://www.gameofhacks.com/
Game of Hacks
• Checkmarx
• http://www.gameofhacks.com/
Game of Hacks
• Checkmarx
• http://www.gameofhacks.com/
Game of Hacks
• Checkmarx
• http://www.gameofhacks.com/
Schwachstellenanalyse
Softwarelebenszyklus
Product Design Development Testing Deployment Production
Static Application Security Testing
Dynamic Application Security Testing
Real-Time Application
Security Protection
oder
Web Application FirewallSicherheitsanforderungen
Penetration
Tests
Anforderungen
• Integration
• IDE
• BuildTools
• CI Server
• Automatisiert ausführbar
Static Application Security Testing
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
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
OWASP Dependency Check
• Analysiert Abhängigkeiten
• Sucht nach bekannten CVE (Common
Vulnerabilities and Exposures)
• Build Tool Integration
• Jenkins Integration
• Auch für Repository Server verfügbar
• Nexus Repository (Nexus Firewall)
• Artifactory (JFrog Xray)
https://jeremylong.github.io/DependencyCheck/
SAST
@GET
@Path("/images/{image}")
@Produces("images/*")
public Response getImage(@PathParam("image") String image) {
File file = new File("resources/images/", image);
if (!file.exists()) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return Response.ok().entity(
new FileInputStream(file)
).build();
}
SAST – Potential Path Traversal
@GET
@Path("/images/{image}")
@Produces("images/*")
public Response getImage(@PathParam("image") String image) {
File file = new File("resources/images/", image);
if (!file.exists()) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return Response.ok().entity(
new FileInputStream(file)
).build();
}
SAST – Potential Path Traversal
@GET
@Path("/images/{image}")
@Produces("images/*")
public Response getImage(@PathParam("image") String image) {
File file = new File("resources/images/",
FilenameUtils.getName(image)
);
if (!file.exists()) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return Response.ok().entity(
new FileInputStream(file)
).build();
}
PMD
• Sourcecode Analyse
• Keine dedizierten Sicherheitsregeln
• CLI
• Build Tool Integration
• IDE Integration
• Jenkins Integration
https://pmd.github.io/
PMD Beispiel
public boolean isGuest() {
return "guest" == user.getRole();
}
PMD Beispiel
public boolean isGuest() {
return "guest" == user.getRole();
}
PMD Beispiel – Fixed
public boolean isGuest() {
return "guest".equals(user.getRole());
}
findbugs
• Bytecode Analyse
• Bis Java 8
• CLI mit GUI
• Build Tool Integration
• IDE Integration
• Jenkins Integration
http://findbugs.sourceforge.net/
SpotBugs
• Bytecode Analyse
• findbugs Nachfolger
• Plugin System
• CLI mit GUI
• Build Tool Integration
• IDE Integration
• Jenkins Integration
https://spotbugs.github.io/
SpotBugs Beispiel
public boolean authenticate() {
boolean authenticated = true;
try {
authenticated = ldapService.isUserAuthenticated(...);
} catch (SomeException e) {
}
return authenticated;
}
SpotBugs Beispiel
public boolean authenticate() {
boolean authenticated = true;
try {
authenticated = ldapService.isUserAuthenticated(...);
} catch (SomeException e) {
}
return authenticated;
}
SpotBugs Beispiel – Fixed
public boolean authenticate() {
boolean authenticated = true;
try {
authenticated = ldapService.isUserAuthenticated(...);
} catch (SomeException e) {
logger.warn("User authentication failed", e);
authenticated = false;
}
return authenticated;
}
find-sec-bugs
• Erweiterung für SpotBugs
• Fokus auf Sicherheit
https://find-sec-bugs.github.io/
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
find-sec-bugs Beispiel
public boolean authenticate(...) {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
String query = "SELECT * FROM users WHERE user = '" +
user + "' AND pass = '" + pass + "'";
java.sql.Statement statement = connection.createStatement();
java.sql.ResultSet resultSet =
statement.executeQuery(query);
return resultSet.next();
}
find-sec-bugs Beispiel
public boolean authenticate(...) {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
String query = "SELECT * FROM users WHERE user = '" +
user + "' AND pass = '" + pass + "'";
java.sql.Statement statement = connection.createStatement();
java.sql.ResultSet resultSet =
statement.executeQuery(query);
return resultSet.next();
}
find-sec-bugs Beispiel – Fixed
public boolean authenticate(...) {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
String query =
"SELECT * FROM users WHERE user = ? AND pass = ?";
java.sql.Statement statement = connection.createStatement();
statement.setString(1, user);
statement.setString(2, pass);
java.sql.ResultSet resultSet =
statement.executeQuery(query);
return resultSet.next();
}
SonarQube
• Tool Aggregator
• Eigene Regeln
• IDE Integration (sonarlint)
• Build Tool Integration (Sonar Scanner)
• Jenkins Integration
https://www.sonarqube.org/
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/
Integration
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
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
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
Integration – SonarQube + sonarlint
✓Sehr hohe Sichtbarkeit für den Entwickler
✓Zentrale Konfigurationspflege
✓Offline fähig
o Einmaliger minimaler Konfigurationsaufwand
sonarlint im Einsatz
sonarlint im Einsatz
sonarlint im Einsatz
Softwarelebenszyklus
Product Design Development Testing Deployment Production
Static Application Security Testing
War da nicht noch was?
Authentifizierung?
Dynamic Application Security Testing
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
OWASP Zed Attack Proxy (ZAP)
• Security Scanner
• DAST und Penetration Tests
• Kann automatisiert eingesetzt werden
• Viele Addons
• Jenkins Plugin
• SonarQube Plugin
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
ZAP Demo
ZAP in CI?
• Manuell die URL eingeben?
• Spider soll die ganze Anwendung crawlen?
• Attacke starten?
• AUTOMATISIERUNG!
UI Tests
Product Design Development Testing Deployment Production
Warum nicht wieder verwenden?
ZAP in CI
UI Test
Framework
ZAP
(Proxy Mode)
Deployed
Application
ZAP
(Attack Mode)
Deployed
Application
Session
Softwarelebenszyklus
Product Design Development Testing Deployment Production
Static Application Security Testing
Dynamic Application Security Testing
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
FRAGEN
KONTAKT
Christian Schulz,
Enterprise Developer
christian.schulz@openknowledge.de
+49 (0)441 4082 – 146
OFFENKUNDIGGUT
BILDNACHWEISE
• Folie 8,
http://candycrush.wikia.com/wiki/Level_1350?file=Level_1350_Reality.png
• Folie 36: https://wiki.jenkins.io/display/JENKINS/OWASP+Dependency-
Check+Plugin
• Folie 44: http://findbugs.sourceforge.net/manual/example-details.png
• Folie 49: https://find-sec-bugs.github.io/images/screens/eclipse.png
• Folie 54: https://www.sonarqube.org/index/detect-bugs-2@2x.png
• Folie 56: https://www.sonarlint.org/static/screenshot-feature-1-
07de0778bcba0a0fce549fedb082e187-9918a.png
• Icons in this presentation designed by “Freepik”, “Nice and Serious” and
“Elegant Themes” from www.flaticon.com

Integration von Security-Checks in die CI-Pipeline

  • 1.
  • 2.
    ÜBER MICH • Software-Entwickler •Speaker • CI / CD Flüsterer • Angular(-ität) Christian Schulz
  • 3.
    ÜBER OPEN KNOWLEDGE BranchenneutraleSoftwareentwicklung und IT-Beratung
  • 4.
  • 5.
    OOPSIE! • 2017 Equifax 143Millionen • 2016 Adult Friend Finder 422 Millionen • 2015 Anthem 78 Millionen • 2014 eBay 145 Millionen JP Morgan Chase 76 Millionen
  • 6.
    Softwarelebenszyklus Product Design DevelopmentTesting Deployment Production Product Design Development
  • 7.
  • 8.
    … ist eineunendliche Geschichte
  • 9.
  • 10.
    WORKED FINE INDEV NOW OPS PROBLEM
  • 11.
    Softwarelebenszyklus Product Design DevelopmentTesting Deployment Production Penetration Tests Real-Time Application Security Protection oder Web Application Firewall
  • 12.
  • 13.
    Doppelter Boden Web ApplicationFirewall Anwendung ?
  • 14.
    Doppelter Boden Web ApplicationFirewall Anwendung ?
  • 15.
    Doppelter Boden Web ApplicationFirewall Anwendung !
  • 16.
    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
  • 17.
    Der richtige Zeitpunkt Währendder 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
  • 18.
  • 19.
  • 20.
    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)
  • 21.
  • 22.
    WebGoat • Entwickelt vonOWASP • Java Spring • Unsichere Webanwendung mit Sicherheitslücken • Spielwiese zum Lernen https://github.com/WebGoat/WebGoat
  • 23.
  • 24.
    Damn Vulnerable WebApplication (DVWA) • Entwickelt von RandomStorm • PHP • Unsichere Webanwendung mit Sicherheitslücken • Spielwiese zum Lernen https://github.com/ethicalhack3r/DVWA
  • 25.
    Game of Hacks •Checkmarx • http://www.gameofhacks.com/
  • 26.
    Game of Hacks •Checkmarx • http://www.gameofhacks.com/
  • 27.
    Game of Hacks •Checkmarx • http://www.gameofhacks.com/
  • 28.
    Game of Hacks •Checkmarx • http://www.gameofhacks.com/
  • 29.
  • 30.
    Softwarelebenszyklus Product Design DevelopmentTesting Deployment Production Static Application Security Testing Dynamic Application Security Testing Real-Time Application Security Protection oder Web Application FirewallSicherheitsanforderungen Penetration Tests
  • 31.
    Anforderungen • Integration • IDE •BuildTools • CI Server • Automatisiert ausführbar
  • 32.
  • 33.
    Static Application SecurityTesting 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
  • 34.
    Verwundbare Bibliotheken CVE-2017-15708 Apache CommonsCollection 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
  • 35.
    OWASP Dependency Check •Analysiert Abhängigkeiten • Sucht nach bekannten CVE (Common Vulnerabilities and Exposures) • Build Tool Integration • Jenkins Integration • Auch für Repository Server verfügbar • Nexus Repository (Nexus Firewall) • Artifactory (JFrog Xray) https://jeremylong.github.io/DependencyCheck/
  • 36.
    SAST @GET @Path("/images/{image}") @Produces("images/*") public Response getImage(@PathParam("image")String image) { File file = new File("resources/images/", image); if (!file.exists()) { return Response.status(Response.Status.NOT_FOUND).build(); } return Response.ok().entity( new FileInputStream(file) ).build(); }
  • 37.
    SAST – PotentialPath Traversal @GET @Path("/images/{image}") @Produces("images/*") public Response getImage(@PathParam("image") String image) { File file = new File("resources/images/", image); if (!file.exists()) { return Response.status(Response.Status.NOT_FOUND).build(); } return Response.ok().entity( new FileInputStream(file) ).build(); }
  • 38.
    SAST – PotentialPath Traversal @GET @Path("/images/{image}") @Produces("images/*") public Response getImage(@PathParam("image") String image) { File file = new File("resources/images/", FilenameUtils.getName(image) ); if (!file.exists()) { return Response.status(Response.Status.NOT_FOUND).build(); } return Response.ok().entity( new FileInputStream(file) ).build(); }
  • 39.
    PMD • Sourcecode Analyse •Keine dedizierten Sicherheitsregeln • CLI • Build Tool Integration • IDE Integration • Jenkins Integration https://pmd.github.io/
  • 40.
    PMD Beispiel public booleanisGuest() { return "guest" == user.getRole(); }
  • 41.
    PMD Beispiel public booleanisGuest() { return "guest" == user.getRole(); }
  • 42.
    PMD Beispiel –Fixed public boolean isGuest() { return "guest".equals(user.getRole()); }
  • 43.
    findbugs • Bytecode Analyse •Bis Java 8 • CLI mit GUI • Build Tool Integration • IDE Integration • Jenkins Integration http://findbugs.sourceforge.net/
  • 44.
    SpotBugs • Bytecode Analyse •findbugs Nachfolger • Plugin System • CLI mit GUI • Build Tool Integration • IDE Integration • Jenkins Integration https://spotbugs.github.io/
  • 45.
    SpotBugs Beispiel public booleanauthenticate() { boolean authenticated = true; try { authenticated = ldapService.isUserAuthenticated(...); } catch (SomeException e) { } return authenticated; }
  • 46.
    SpotBugs Beispiel public booleanauthenticate() { boolean authenticated = true; try { authenticated = ldapService.isUserAuthenticated(...); } catch (SomeException e) { } return authenticated; }
  • 47.
    SpotBugs Beispiel –Fixed public boolean authenticate() { boolean authenticated = true; try { authenticated = ldapService.isUserAuthenticated(...); } catch (SomeException e) { logger.warn("User authentication failed", e); authenticated = false; } return authenticated; }
  • 48.
    find-sec-bugs • Erweiterung fürSpotBugs • Fokus auf Sicherheit https://find-sec-bugs.github.io/
  • 49.
    find-sec-bugs Beispiel • UnsichereHash Algorithmen z.B. MD5, SHA1 • Hard kodierte Werte z.B. Passwörter, Secret Keys • Unsichere Cipher Benutzung, z.B. No Padding bei RSA
  • 50.
    find-sec-bugs Beispiel public booleanauthenticate(...) { String user = request.getParameter("user"); String pass = request.getParameter("pass"); String query = "SELECT * FROM users WHERE user = '" + user + "' AND pass = '" + pass + "'"; java.sql.Statement statement = connection.createStatement(); java.sql.ResultSet resultSet = statement.executeQuery(query); return resultSet.next(); }
  • 51.
    find-sec-bugs Beispiel public booleanauthenticate(...) { String user = request.getParameter("user"); String pass = request.getParameter("pass"); String query = "SELECT * FROM users WHERE user = '" + user + "' AND pass = '" + pass + "'"; java.sql.Statement statement = connection.createStatement(); java.sql.ResultSet resultSet = statement.executeQuery(query); return resultSet.next(); }
  • 52.
    find-sec-bugs Beispiel –Fixed public boolean authenticate(...) { String user = request.getParameter("user"); String pass = request.getParameter("pass"); String query = "SELECT * FROM users WHERE user = ? AND pass = ?"; java.sql.Statement statement = connection.createStatement(); statement.setString(1, user); statement.setString(2, pass); java.sql.ResultSet resultSet = statement.executeQuery(query); return resultSet.next(); }
  • 53.
    SonarQube • Tool Aggregator •Eigene Regeln • IDE Integration (sonarlint) • Build Tool Integration (Sonar Scanner) • Jenkins Integration https://www.sonarqube.org/
  • 55.
    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/
  • 56.
  • 57.
    Integration – IDE ✓Sehrhohe Sichtbarkeit für den Entwickler − wird nur lokal beim Entwickler ausgeführt − Keine Garantie der Ausführung − CI muss extra konfiguriert werden − Konfigurationsaufwand / -pflege
  • 58.
    Integration – BuildTools ✓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
  • 59.
    Integration – SonarQube ✓HoheSichtbarkeit 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
  • 60.
    Integration – SonarQube+ sonarlint ✓Sehr hohe Sichtbarkeit für den Entwickler ✓Zentrale Konfigurationspflege ✓Offline fähig o Einmaliger minimaler Konfigurationsaufwand
  • 61.
  • 62.
  • 63.
  • 64.
    Softwarelebenszyklus Product Design DevelopmentTesting Deployment Production Static Application Security Testing
  • 65.
    War da nichtnoch was? Authentifizierung?
  • 66.
  • 67.
    Dynamic Application SecurityTesting 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
  • 68.
    OWASP Zed AttackProxy (ZAP) • Security Scanner • DAST und Penetration Tests • Kann automatisiert eingesetzt werden • Viele Addons • Jenkins Plugin • SonarQube Plugin https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
  • 69.
  • 70.
    ZAP in CI? •Manuell die URL eingeben? • Spider soll die ganze Anwendung crawlen? • Attacke starten? • AUTOMATISIERUNG!
  • 71.
    UI Tests Product DesignDevelopment Testing Deployment Production Warum nicht wieder verwenden?
  • 72.
    ZAP in CI UITest Framework ZAP (Proxy Mode) Deployed Application ZAP (Attack Mode) Deployed Application Session
  • 73.
    Softwarelebenszyklus Product Design DevelopmentTesting Deployment Production Static Application Security Testing Dynamic Application Security Testing
  • 74.
    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
  • 75.
  • 76.
  • 77.
    BILDNACHWEISE • Folie 8, http://candycrush.wikia.com/wiki/Level_1350?file=Level_1350_Reality.png •Folie 36: https://wiki.jenkins.io/display/JENKINS/OWASP+Dependency- Check+Plugin • Folie 44: http://findbugs.sourceforge.net/manual/example-details.png • Folie 49: https://find-sec-bugs.github.io/images/screens/eclipse.png • Folie 54: https://www.sonarqube.org/index/detect-bugs-2@2x.png • Folie 56: https://www.sonarlint.org/static/screenshot-feature-1- 07de0778bcba0a0fce549fedb082e187-9918a.png • Icons in this presentation designed by “Freepik”, “Nice and Serious” and “Elegant Themes” from www.flaticon.com