Sichere Software

Secure Software Development (I)  

Grundlagen und Historie der Softwareentwicklung 

Software kann als eine der entscheidensten Komponenten eines Computersystems angesehen werden. Ohne Software wäre jegliche Hardware lediglich ein nicht nutzbarer Haufen an Elektronik. Aufgrund des Bedarfs, geeignete Software auf eine strukturierte Art und Weise zur Verfügung zu stellen, kam relativ bald die Disziplin des Software Engineerings auf. Dazu zählen verschiedene Software-Lebenszyklus-Modelle (eng.: Software Development Lifecycle Model (SDLCs)), die sich in den letzten Jahrzenhten etabliert haben, wie z.B.:

  • Wasserfall
  • Iterative and Interaktive Entwicklung
  • Rapid Application Development (RAD)
  • Extreme Programming (XP) und in den letzten Jahren
  • Agile Methoden und DevOps.

Abbildung 1 zeigt eine grafische Darstellung ausgewählter SDLC-Modelle.

Wasserfall
Wasserfallmodell
Agil
Agiles Modell
DevOps
DevOps

Abbildung 1: Vergleich ausgewählter Lebenszyklus-Modelle in der Softwareentwicklung 

Alle SDLC-Modelle vereinen in sich den Ansatz eines strukturierten Prozesses für die Entwicklung einer Applikation – von der Konzeptphase bis hin zur Dekommissionierung. Das Ziel: die Verbesserung der Qualität und die Steigerung der Entwicklungsgeschwindigkeit in Projekten der Softwareentwicklung. SDLC-Modelle beinhalten üblicherweise folgende Phasen: 

  • Konzept und Planung 
  • Architektur und Design 
  • Implementierung (Programmierung) 
  • Testen und Bug Fixing 
  • Release (Deployment) 
  • Betrieb und Wartung. 

Testen – Funktionalität vs. Sicherheit 

Über einen langen Zeitraum wurde in der Softwareentwicklung unter dem Begriff „Testen“ oft ausschließlich das funktionale Testen verstanden. Nach dem Schreiben des Programmcodes wurden dazu verschiedene Prüfungen durchgeführt, um sicherzustellen, dass alle Funktionen gemäß den Anforderungen und Erwartungen der Nutzer umgesetzt wurden. 

Mit dem Eintritt in das digitale Zeitalter ist es eine unausweichliche Herausforderung geworden, insbesondere bei Applikationen mit Verbindung zum Internet, auch ihre Sicherheit zu testen. Nur so können Fehler, Verwundbarkeiten und Schwachstellen entdeckt und vermieden werden. 

Um hohe Zusatzkosten für die Behebung von Fehlern und Schwachstellen zu vermeiden, ist ihre frühe Identifizierung entscheidend (s. Abb. 2). Dieser Ansatz wird als „Shift Left“ bezeichnet. Dies ist auch deshalb sinnvoll, da der überwiegende Teil an Softwaredefekten seinen Ursprung bereits in den ersten Phasen des SDLC hat (s. Abb. 3). Darüber hinaus ist es wichtig, Sicherheit in jeder Phase des SDLC zu berücksichtigen. 

Phase im SDLC

Abbildung 2: Relative Kosten, um Software-Defekte zu beheben
(Quelle: IBM Systems Sciences Institute)

Anforderung und Design

Abbildung 3: Ursprung von Software-Defekten (Quelle: Crosstalk, the Journal of Defense Software Engineering) 

Einbettung von Sicherheit in den SDLC 

In den vergangenen Jahren ist eine Professionalisierung der Cyber-Kriminalität zu beobachten. Und damit steigt die Gefahr gezielter Cyber-Angriffe. Diese zielen auf bestimmte Wirtschaftszweige oder sogar spezielle Firmen ab. Für geeignete Schutzmaßnahmen ist ein strukturierter Ansatz erforderlich, der die Sicherheit als integralen Bestandteil über den gesamten SDLC berücksichtigt. Dieser Ansatz wird als sicherer Software-Lebenszyklus (eng.: secure Software Development Lifecycle (SSDLC)) bezeichnet und vereint in sich folgende Vorteile:  

  • Mehr sichere Software, da Sicherheit von fortlaufendem Interesse ist 
  • Alle beteiligten Interessengruppen sind sich der Bedeutung des Themas Sicherheit bewusst (buy-in) 
  • Frühes Erkennen struktureller Schwächen, bevor sie überhaupt programmiert werden 
  • Reduzierte Kosten, Dank frühzeitiger Ekrnennung und Behebung von Schwachstellen 
  • Reduzierung des zugehörigen Geschäftsrisikos einer Organisation 

In den vergangenen Jahren wurden verschiedene SSDLC-Modelle entwickelt und verfeinert, die sich in der industriellen Praxis bewährt haben. Diese kann man grundsätzlich in 2 Gruppen einteilen – vorschreibende und beschreibende SSDLC-Modelle. Abbildung 4 zeigt einige Beispiele für jede dieser Kategorien. 

Kategorien von SSDLC-Modellen

Abbildung 4: Kategorien von SSDLC-Modellen

Da jedes dieser SSDLC-Modelle mit einem bestimmten Schwerpunkt entwickelt wurde, gibt es nicht „das Beste“ Modell für alle Anwendungsfälle. Aber es kann eine klare Empfehlung gegeben werden: verwende EINS statt KEINS. 

Das bedeutet: unabhängig davon, welches SSDLC-Modell man für die Softwareentwicklung bevorzugt – es ist um Welten besser, als unstrukturiert („freestyle“) zu entwickeln. 

Im nächsten Artikel werden einige SSDLC-Modelle detaillierter vorgestellt, um die Auswahl eines passenden Modells zu erleichtern. 

Let’s Work together!

Lassen Sie uns Ihnen helfen die Zukunft Ihres Unternehmens zu entwerfen.

anic GmbH Logo

Bitte rufen Sie mich zurück.