Cloudogu Logo

Hallo, wir sind Cloudogu!

Experten für Software-Lifecycle-Management und Prozess­auto­mati­sierung, Förderer von Open-Source-Soft­ware und Entwickler des Cloudogu EcoSystem.

featured image Ist es möglich, Release-Zyklen zu verkürzen und gleichzeitig die Sicherheit zu verbessern?
02.09.2021 in Quality

Ist es möglich, Release-Zyklen zu verkürzen und gleichzeitig die Sicherheit zu verbessern?


Daniel Huchthausen
Daniel Huchthausen

IT Consultant


Die Abhängigkeit von Software ist schon groß und sie wird noch weiter zunehmen. Deswegen wird auch die Sicherheit von Anwendungen immer wichtiger werden. Verstärkt wird diese Entwicklung noch durch die Corona-Pandemie, da mehr Unternehmen ihre Angebote auch online bereitstellen. Die amerikanische Sicherheitsbehörde FBI hat z.B. einen 300%igen Anstieg der Cyber-Kriminalität seit Beginn der Pandemie berichtet: Das zeigt, dass mit der wachsenden Abhängigkeit von Software auch die Gefahr von Angriffen steigt.

Software entwickelnde Unternehmen befinden sich dadurch in einer Zwickmühle: Einerseits müssen sie neue Produkte und Upgrades schnell veröffentlichen, um am Markt erfolgreich zu sein. Andererseits sollten diese auch sicher sein um erfolgreiche Angriffe zu vermeiden. Sicherheit wird jedoch oft als eine Bremse für schnelle Entwicklung angesehen - und deswegen leider vernachlässigt.

Hinweis: Manche Tests, z.B. „Penetration-Tests“ können sehr lange dauern (2 Wochen), das steht im Widerspruch zu kurzen Entwicklungszyklen.

Diese Ansicht kommt daher, dass für sehr lange Zeit Entwicklungs- und Sicherheitsteams getrennt voneinander gearbeitet haben. Entwicklungsteams schreiben neuen Code und machen ihn für die Veröffentlichung fertig. Vor Veröffentlichung schaut das Sicherheitsteam nochmal auf den Code und stellt Sicherheitsanforderungen vor dem GoLive. Durch diese Schleife wird der Entwicklungsprozess teilweise extrem verlängert. Außerdem kann es zu Spannungen zwischen den Teams kommen, da es mehr als Kritik als eine Security-Verbesserung verstanden wird.

DevSecOps für eine bessere Integration von Sicherheit bei der Softwareentwicklung

Eine Antwort auf diese Herausforderungen bietet der DevSecOps-Ansatz. Er ist eine Weiterentwicklung des DevOps-Ansatzes, der Entwicklungs- und Betriebsteams enger zusammenarbeiten lässt. In DevSecOps werden Sicherheitsteams in DevOps-Teams integriert.

Vom Reagieren hin zu Proaktivität im Bereich Security

Egal wie Teams organisiert sind, in den meisten Fällen werden (Sicherheits-)Fehler reaktiv korrigiert. Das erfolgt in der Regel auf diesen beiden Wegen:

  • Es werden automatische Tests geschrieben, die bekannte Verwundbarkeiten überprüfen.
  • Es wird ein Bug gemeldet der entweder in manuellen Tests oder in Produktion aufgefallen ist.

Dabei sollte es das Ziel sein Fehler so früh wie möglich zu entdecken, damit der Änderungsaufwand so gering wie möglich ist. Der Shift-Left-Ansatz macht genau das und ist auch schon sehr lange bekannt. Es ist jedoch egal wie früh ein Fehler im Entwicklungsprozess gefunden wird, er führt immer dazu, dass jemand aus dem Team sich nochmal in den alten Code einarbeiten muss, um den Bug zu korrigieren. Den Aufwand weiter zu reduzieren funktioniert nur, indem Fehler proaktiv verhindert werden. Mehr dazu, wie aufwändig es ist Sicherheitslücken zu schließen, gibt es hier.

Lernen sicheren Code zu schreiben und nicht Verwundbarkeiten zu entdecken

Um (Sicherheits-) Fehler proaktiv verhindern zu können, müssen Entwickelnde entsprechende Sicherheitsrichtlinien und Wissen um Sicherheitslücken an die Hand bekommen. Das Open Web Application Security Project (OWASP) hat dafür 10 Maßnahmen definiert:

  • Definition von Sicherheitsanforderungen
  • Sicherheits-Frameworks und Bibliotheken nutzen
  • Zugriff auf Datenbanken sichern
  • Daten verschlüsseln und „escapen“
  • Alle Eingaben validieren
  • Implementieren von digitalen Identitäten
  • Berechtigungssysteme durchsetzen
  • Daten überall schützen
  • Protokollierung und Überwachung von sicherheitsreIevanten Vorgängen
  • Alle Errors und Exceptions bearbeiten

Lernansätze für Sicherheitsthemen für jede Situation in der Softwareentwicklung

Damit Entwickelnde diese Maßnahmen umsetzen können, müssen sie natürlich auch über das notwendige Wissen verfügen. Dafür gibt es unterschiedlichste Ansätze, die je nach Thema und persönlicher Vorliebe beim Lernen eingesetzt werden können. Wichtig ist, dass die Lerninhalte nicht nur einfach zugänglich, sondern auch zeitnah bearbeitbar sind.

Sicherheits-Training im Bereich DevSecOps

Nach traditionellem Verständnis gehört Sicherheit nicht zu den Kernaufgaben von Entwickelnden, das ist nämlich die Umsetzung von neuen Funktionen. Deswegen müssen Trainings zu Sicherheitsthemen Spaß machen, herausfordernd und ansprechend sein, um die entscheidenden Kenntnisse zu vermitteln. Wichtig ist, dass Trainings anhand von echtem Code, in der jeweiligen Sprache und entsprechend des Vorwissens durchgeführt werden, um einen direkten Wissenstransfer zu haben. Da das Sicherheitsbewusstsein der Entwickelnden gestärkt werden soll, ist es sinnvoll Trainings regelmäßig in kleinen Einheiten durchzuführen und nicht z.B. einmal im Jahr eine Schulung zu besuchen. Eine Möglichkeit dafür ist die Einbindung von Lerninhalten mittels Micro-Learning in Arbeitsprozesse. Diese Integration bietet z.B. ein Plugin für SCM-Manager, das Videos und Übungsaufgaben in Review-Prozesse einbindet.

Secure-Code-Warrior-Plugin

Laden Sie das exklusive und kostenlose Secure-Code-Warrior-Plugin für SCM-Manager über die Cloudogu Platform herunter.

Jetzt herunterladen
Secure Code Warrior Logo

Wettbewerbe für mehr Websecurity

Lernen sollte, wie schon erwähnt, Spaß machen, herausfordernd sein und die Entwickelnden ansprechen. Erreicht wird all das zum Beispiel durch Wettbewerbe bei denen die Teilnehmenden durch das Beheben von Sicherheitslücken um den Sieg wetteifern. Solche Wettbewerbe können nur einige Stunden oder mehrere Tage dauern.

Automatisiertes Echtzeit-Coaching

Mittlerweile gibt es Erweiterungen für Entwicklungsumgebungen, die den Code in Echtzeit gegen festgelegte Sicherheitsrichtlinien prüft. So bekommen die Entwickelnden direkt beim Schreiben des Codes Rückmeldung darüber, ob ihr Code den Sicherheits-Vorgaben entspricht oder nicht. Idealerweise bekommen sie, wie bei einer Rechtschreibprüfung, direkt Möglichkeiten zur Korrektur vorgeschlagen. Zusätzlich können auch passende Übungsaufgaben vorgeschlagen werden. Ganz im Zeichen von Gamification bzw. E-Learning.

Feststellung des Security-Lecks

Um Maßnahmen zur Verbesserung der Sicherheit festlegen zu können, muss zunächst festgestellt werden wie der aktuelle Stand ist. Nur so können Schwachstellen identifiziert werden. Idealerweise wird auch nicht nur einmalig der Status-Quo festgestellt, sondern sowohl die Entwicklung der Anwendungssoftware als auch die Entwicklung der Kenntnisse des Teams fortlaufend überwacht. Eine Möglichkeit den aktuellen Wissensstand des Teams zu sehen ist die Einführung von Badges oder Auszeichnungen für Entwickelnde die z.B. bestimmte Trainings absolviert haben.

Fazit

Um Softwareanwendungen sicherer zu machen ohne die Entwicklungszeit zu verlängern ist es notwendig proaktiv sicheren Code zu schreiben. Um das zu erreichen müssen traditionelle Strukturen aufgebrochen werden und mehr Verantwortung für die Sicherheit von Anwendungen direkt an die Entwickelnden übergeben werden. Die Grundvoraussetzung dafür ist, dass die Entwickelnden über die notwendigen Kenntnisse verfügen. Glücklicherweise gibt es mittlerweile mit Trainings, Wettbewerben, echtzeit-Coaching und Assessments viele interaktive und ansprechende Möglichkeiten zur Wissensvermittlung, die in kleinen Lerneinheiten Wissen mit hohem Praxisbezug vermitteln.