Defectdojo Owasp Stammtisch Final
Defectdojo Owasp Stammtisch Final
Endpoint
Docker
Seems to be easy!
Get it:
$ docker pull appsecpipeline/django-defectdojo
Run it:
$ docker run -it -p 8000:8000 \
appsecpipeline/django-defectdojo
Web interface:
$ open http://localhost:8000/
Livedemo
• High Level Walkthrough DefectDojo
– Typical workflows
– Manual creation of a finding
– Upload of report
– De-duplication
– Reporting
• Data needed/Products, etc.
– DB-Export MySQL
• manage.py / Django Data export/import
• DB Tools
DEFECTDOJO @REAL LIVE
DefectDojo at Company A
– Existing inventory of platform applications
– Existing inventory of internal software
– Existing inventory of Micro-Sites
– OWASP Dependency Check for all known software
projects
– Automated with Jenkins CI
• Jenkins jobs (XML) generated with ERB (embedded
ruby) templates
• and uploaded via Jenkins API
– Central issue tracking with JIRA
Too much Software at Company A
– Many subsidiaries
– More than 100 own software applications
– Many engineering teams writing code
– 50+ Micro-Sites (esp. marketing)
• Maintained by 17 external agencies
– 7+ mobile apps (Android, iOS, Windows)
– 2500+ hosts in two data centres (500+ physical,
2000+ VMs)
– A growing number of Docker containers (800+)
AppSec Pipeline at Company A
Custom
Checks
…
OWASP Dependency Check for all
projects @Company A
– Own software inventory
– Docker image with OWASP Dependency Check
(and Ruby’s bundler-audit)
– Generate Jenkins jobs for every software project
to scan source code repository
– Push findings to DefectDojo
– De-duplicate + review with DefectDojo
– Push to JIRA (and get status changes via
Webhook)
Dynamic Scanning @Company A
Scan all endpoints e.g. with Arachni
– Configure endpoints for all DefectDojo products
based on our own software inventory
– Jenkins job pulls all endpoints from DefectDojo
– Scan all endpoints
And from here on, you know the drill:
– Push findings to DefectDojo
– De-duplicate + review with DefectDojo
– Push to JIRA (and get status changes via
Webhook)
Dynamic Scanning @Company B
Scan all endpoints e.g. with ZAP
– Rundeck-Jobs for each application
• Perform ZAP Baseline Scan
• Upload to DefectDojo
• Review results
• Push to Jira
• Distribute to dev/ops
Manual findings @Company B
How to handle findings from internal audits,
external pen-tests
– Upload burp report to DefectDojo
– Enter findings for affected product in DefectDojo
• Templates
– Push to JIRA vunerability project
– Clone and move to dev/ops teams
Manual findings @Company A
How to handle findings from internal audits,
external pen-tests, and security researchers?
– Enter findings for affected product in DefectDojo
– Push to JIRA (and get status changes via
Webhook)
Easy!
FEATURES
API examples AP
IV
2
D e in
v
https://defectdojo.readthedocs.io/en/latest/integrations.html
WRAP UP
Lessons learned 1/2
– Don’t underestimate the total effort!
• Although first steps are fairly easy (esp. with Docker),
the full setup including processes takes time
– Tests are important, esp. JIRA integration is tricky
– Feels overengineered, basic features missing
– Data model seems to be too ambitious
– Core team is quite responsive (Github, Slack), but
has an own view on how to use DefectDojo
– Documentation somewhat dated, it does not keep
up with to current development speed
Lessons learned 2/2
– Needs a lot of glue code to integrate into existing
infrastructure (inventory, issue tracking)
– API – missing methods e.g. add metadata, add
tags, …
– API is complicated (eg. query by product id, which
has to be searched first)
– Operational challenge updates, stability
– User experience odd at times – no cancel buttons
– JIRA Webhooks
Not figured out, yet ;)
• Usage of Tags vs. Product-Type vs. Metadata
• Leading system for URLs/Endpoints/Application
– DefectDojo
– Asset-Management System
– Links between systems
• Combining AppSec and NetSec vulnerability data
– AppSec – web-applications
• Output DAST, SAST
– NetSec – IP-addresses
• Output Nessus, OpenVAS, Qualys, …