Agile Security

Security Testing bei Agiler Software Entwicklung

Agile Software-Entwicklung erfreut sich hoher Beliebtheit – kein Wunder angesichts der Generierung eines nutzbaren Software-Prototypen in vergleichsweise kurzer Zeit. Im Gegensatz zum V-Modell sind Agile Methoden iterative Verfahren und besitzen keinen festgelegten Zeitpunkt für bestimmte Testmethoden. Aus diesem Grund können Entwickler verunsichert sein, wie und wann die Security Tests der Software stattfinden sollten. Im Folgenden werden die beiden weit verbreitetsten Agilen Methoden Scrum sowie DevOps grob beschrieben und Wege dargestellt, wie dort Security umgesetzt werden kann.

Scrum

Bei dieser Methode der Agilen Entwicklung wird zu Beginn eine detaillierte Liste mit Security-Anforderungen erstellt, die die Software erfüllen soll (Produkt-Backlog). Aus diesem Produkt-Backlog wird eine (kleinere) Liste erzeugt (Sprint-Backlog), die im Sprint abgearbeitet wird. Am Ende des Sprints steht eine neue lauffähige und auslieferungsfähige Version der Software. Das Feedback der Software-Version fließt dann ins Produkt-Backlog ein und der Prozess beginnt von neuem.

Classic Scrum workflow
Klassischer Scrum Workflow

Bei Scrum stehen Features und schnelle Release-Zyklen im Vordergrund, Security ist eher sekundär. Scrum lässt sich aber leicht erweitern, sodass Sicherheit mehr in den Fokus gerückt wird. Ansätze hier sind beispielsweise Secure Scrum oder Security Backlog.

Bei Secure Scrum werden die Security relevanten Elemente im Produkt-Backlog markiert (S-Mark) und mit einem eigenen Element, das eine genaue Beschreibung der Sicherheitsbedrohung enthält, verknüpft (S-Tag). Dadurch sollen diese Elemente nicht übersehen und stattdessen priorisiert behandelt werden. Aufgrund des gesammelten Wissens in den S-Tags sollen sie außerdem schneller abgearbeitet werden können.

Security Backlog verspricht mehr Security in Scrum durch Einsatz eines eigenen Security-Backlogs neben dem eigentlichen Produkt-Backlog. Für diesen Backlog wird eine eigene Position geschaffen, die diesen verwaltet und verantwortlich ist, der Security Master.

Neben diesen beiden Methoden ist es möglich Security Testing Methoden in die Iterationen einzubauen. So können gegen Ende eines Sprints automatisierte Software Tests wie Unit Tests oder Methoden wie Fuzzing eingeführt werden. Dieses Prinzip ist aus DevOps unter dem Namen Continuous Integration (CI) bekannt. Ferner kann alle 3 – 4 Sprints ein externer Pentester die Software testen

Security Scrum workflow
Security fokussierter Scrum Workflow

DevOps

DevOps ist ein Kofferwort und steht für Development und Operations. Ziel von DevOps ist, durch gleiche Tools und Prozesse eine effiziente Zusammenarbeit der Bereiche Dev und Ops zu ermöglichen. DevOps ist ein iterativer Prozess, der einen hohen Anteil an Automatisierung aufweist. Typische DevOps Tools sind Docker, Vagrant oder Jenkins.

DevOps Lifecycle
DevOps Lifecycle: Links der Dev Teil, rechts der Ops Teil. Es ist ein fortlaufender Prozess

Typisch in DevOps Umgebungen ist der Einsatz von Continuous Integration. Hier wird der Quellcode in einer Versionsverwaltung (meist Git) gesammelt und dort bei Änderungen automatisch kompiliert (beispielsweise mit Jenkins). Neben der Kompilierung kann die gebaute Software sowohl statisch wie auch dynamisch automatisch getestet werden. Statische Tests können durch Quellcode Analyse Tools umgesetzt werden, dynamische Tests wären Unit Tests oder Fuzzing. Gerade Fuzzing ist aus Security Sicht interessant, da diese Methode unveröffentlichte Sicherheitslücken (Zero-Day-Vulnerabilities) liefert. Identifizierte Sicherheitslücken werden den Entwicklern gemeldet, die diese dann ausmerzen und die Änderungen für einen erneuten Test hochladen können.

DevSecOps

DevSecOps ähnelt dem Begriff DevOps, nur dass hier Development noch zusätzlich mit Security statt nur mit Operations verzahnt wird. DevSecOps Entwickler sind sich bewusst, dass Code von Anfang an sicher programmiert werden sollte, es aber dennoch zu Sicherheitslücken kommen kann: Tests sind daher unabdingbar. Red & Blue Team Testing und proaktives Verhalten sind typisch in DevSecOps Umgebungen.

OWASP Software Security 5D Framework

OWASP entwickelt aktuell einen Secure Development Lifecycle für DevOps, das Software Security 5D Framework. 5D steht hierbei für die folgenden 5 Dimensionen, auf die sich der Lifecycle konzentriert soll:

  • PROCESSES
  • TESTING
  • TEAM
  • AWARENESS
  • STANDARDS

Neben bekannten Testmethoden wie statischer Analyse (SAST) und dynamischer Analyse (DAST) sind auch moderne Methoden wie Interactive Application Security Testing (IAST) Teil des Lifecycles.


Testmethoden des 5D Frameworks. Quelle: OWASP
softScheck Logo