Security by Design Sichere Software-Entwicklung von Anfang an

Christian Rentrop Christian Rentrop |

Anbieter zum Thema

In der Softwareentwicklung spielt die Sicherheit eine immer wichtigere Rolle. „Security by Design“ ist allein schon deshalb so wichtig, weil Computer und Smart Devices heute ständig online und somit bedroht sind. Sicherheitsaspekte vom ersten Tag an umzusetzen ist aber nicht so schwer, wie man glauben könnte.

Applikationssicherheit sollte schon zu Beginn des Entwicklungszyklus berücksichtigt werden.
Applikationssicherheit sollte schon zu Beginn des Entwicklungszyklus berücksichtigt werden.
(Bild: / CC0)

Erpressungstrojaner, Botnetze, Hackerangriffe und schwere Sicherheitslücken: Die Fachpresse berichtet inzwischen täglich über schwere Anschläge auf die weltweite IT-Infrastruktur, die inzwischen teils weltbewegende Ausmaße annehmen.

Betroffen sind dabei keinesfalls nur Consumer-Systeme, auch wenn die schlicht aufgrund ihrer großen Zahl den Großteil der angegriffenen Systeme stellen. Auch die Infrastruktur von Unternehmen, Regierungen und des Internets selbst sind ständig von Sicherheitslecks bedroht. Während der handelsübliche Erpressungstrojaner bestenfalls Opa Heinrichs Festplatte verschlüsselt, können große Sicherheitslücken auch große Folgen haben – sogar geopolitischer Art.

Das beweist zum Beispiel der Angriff auf die IT-Infrastruktur des Bundestages im Frühjahr 2015. Beim schweren Hacker-Angriff auf die Server des Internet-Dienstleister Dyn im Oktober 2016 ging die Ostküste der Vereinigten Staaten zeitweise vom Netz – mit erheblichem finanziellen Schaden für dort ansässige Unternehmen.

Sicherheit ins Design einfließen lassen

Sicher: Gegen große DDoS-Angriffe auf die Basis-Infrastruktur des Internets wie bei Dyn ist kaum ein Kraut gewachsen. Wohl aber gegen Angriffe wie die auf den Bundestag, der hinsichtlich seiner Daten- und Software-Infrastruktur durchaus mit einem großen Unternehmen vergleichbar ist.

Doch auch bei kleineren Projekten – und das beginnt im Grunde schon beim Webauftritt des Unternehmens oder einer Smartphone-App – müssen Entwickler von vornherein darauf achten, dass alle gängigen Sicherheitsstandards erfüllt sind. Mit der Größe und Komplexität des Projekts – eine Smartphone ist natürlich etwas anderes als eine Steuerungsanlage für eine Chemieanlage oder gar die Software für ein selbstfahrendes Auto – steigt natürlich auch der Anspruch an die Sicherheit.

Von daher müssen Sicherheitsmaßnahmen von vornherein in den Entwicklungsprozess implementiert werden. Der internationale Standard der ISO 270XX-Reihe sowie insbesondere ihre holistische Konkretisierung über ISO 27034 geben Entwicklern und Unternehmen die nötigen Richtlinien an die Hand, auch über Ressortgrenzen hinweg: IT-Sicherheit ist heutzutage eben nicht mehr nur die Formulierung sauberen Codes, sondern betrifft auch Faktoren juristischer und wirtschaftlicher Art – und nicht zuletzt Fragen der betriebsinternen Informationskontrolle.

Konkrete Richtlinien des BSI nutzen

Doch was bedeutet das konkret in der Anwendungsentwicklung? Grundsätzlich gilt es, bereits vor der Softwareentwicklung eine Infrastruktur bereitzustellen, die Zuständigkeiten, Berechtigungen und Kompetenzen von vornherein klärt. Nur so können von vornherein die nötigen Grundlagen geschaffen werden, um – neben sauberem Code – zu gewährleisten, dass das Software-Projekt die nötigen Sicherheitsanforderungen erfüllt. Denn eine nachträgliche Implementierung kann ausgesprochen teuer und schwer durchführbar sein.

Zwar sind die ISO-Standards dafür gut geeignet, deutlich konkreter sind jedoch die Leitfäden zur sicheren Software-Entwicklung des Bundesamts für Sicherheit in der Informationstechnik (BSI): Diese beziehen sich auf den konkreten Fall der Webanwendungsentwicklung, der jedoch heutzutage in vielen Fällen greift; schließlich ist jede Anwendung auf einem Online-System letztlich auch eine Web-Anwendung – selbst wenn sie eigentlich nicht als solche gedacht ist. Zumal selbst bei reinen Offline-Systemen eine mittel- oder langfristige Aktualisierung auf Online-Funktionen (Stichwort Fernzugriff) nie völlig ausgeschlossen werden kann.

Von daher ist es sinnvoll, alle Anwendungen sicherheitstechnisch als Web-Anwendungen zu betrachten. Es sei denn, eine Online-Nutzung oder Nutzung auf einem Online-System inklusive Verwendung kabelloser Technologien und die Einbindung von Drittgeräten mit Online-Zugang kann grundsätzlich ausgeschlossen werden.

Rechtevergabe und Zuständigkeiten richtig setzen

Sicherheit in der Softwareentwicklung ist folgerichtig mit großer Ordnung beim Entwicklungsprozess verbunden: Rechte und Zuständigkeiten müssen klar definiert, die Anforderungen, Beiträge und Fortschritte sauber dokumentiert werden, genau wie Schnittstellen und Funktionen. Auf diese Weise lassen sich Fehler später auch vergleichsweise einfach identifizieren und beheben.

Als klassische Fehlerquelle bei der Softwareentwicklung gelten typischerweise unklare Teamstrukturen. Ein fehlendes oder unzureichendes Qualitätsmanagement und mangelnde Sachkenntnis bei Entwicklern, Verantwortlichen und Entscheidern sind weitere Ursachen. Da bei größeren Projekten auch viele Personen und gegebenenfalls auch Drittentwickler wie Freelancer oder externer Firmen involviert sind, ist es natürlich sinnvoll, vorab klare Strukturen und Abläufe vom kleinsten bis zum größten Rädchen im Getriebe zu etablieren.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Im laufenden Betrieb gilt es, Berechtigungen und die Dokumentation jederzeit nachzuhalten, um zum Beispiel das Ausscheiden oder die Erkrankung eines Mitarbeiters (auch extern) abfangen zu können – ein Faktor, der übrigens in vielen Unternehmen, und nicht nur bei der Softwareentwicklung, massiv vernachlässigt wird. Dazu zählt dann zum Beispiel auch die Etablierung von Richtlinien in Bezug auf Zugriffsrechte, Zugangsdaten, Softwarelizenzen und andere Werkzeuge.

Sichere Umgebung schaffen

Zusätzlich sollte die Entwicklung natürlich immer in einer geschützten Umgebung erfolgen. Was bei der Entwicklung kompletter Webanwendungen auf der Hand liegt, ist auch beim Herstellen „kleiner“ Bugfixes oder Plugins relevant: Jede noch so kleine Funktion kann im Zweifel zu einem großen Sicherheitsrisiko auswachsen, weshalb die „on-the-fly“-Programmierung an laufenden Produktivumgebungen grundsätzlich vermieden werden muss.

Wenn möglich, sollte eine identische, technisch aber vollständig von der Produktivumgebung getrennte Softwarebasis geschaffen werden, auf der die Entwicklung inklusive Testing, Bugfixing, Sicherheits- und Qualitätsprüfung erfolgt. Erst wenn hier alle Tests bestanden und alle Fehler behoben sind, kann das Ergebnis eingepflegt werden. Auch bei neuer Software sollte so verfahren werden, denn spätestens ab dem ersten Update werden auch hier entsprechende Maßnahmen notwendig.

Fazit: Der Aufwand zur sicheren Entwicklung lohnt sich

Auch, wenn der Aufwand zunächst groß und kostenintensiv erscheint, zahlt er sich doch spätestens bei der Wartung und Aktualisierung des Software-Systems aus. Doch schon vorher ist sichere Software-Entwicklung ein Garant dafür, dass nicht unvorhersehbare Folgekosten auftreten.

Hierzu zählen, neben den offensichtlichen Schäden, die Cyber-Kriminelle anrichten können, auch damit verbundene andere Schwierigkeiten: Von hohen Kosten für das Bug-Fixing bis zu Schadensersatzforderungen eines Auftraggebers oder den Verlust eines wichtigen Kunden. Von vornherein mehr in die sichere Entwicklung zu investieren heißt deshalb, zumindest in Sachen Sicherheit in eine vorhersehbare Zukunft zu investieren.

(ID:44438499)