Der Weg zur sicheren Software-Lieferkette

Die Software-Lieferkette ist vielfältigen Gefahren ausgesetzt und eine Sicherheitsstrategie unbedingt erforderlich. Prakash Sethuraman, Chief Information Security Officer bei CloudBees, stellt in einem Gastbeitrag drei wesentliche Komponenten vor.

Mit der zunehmenden Bedeutung von Software für Unternehmen aller Größen und Branchen sowie der sich verschärfenden Bedrohung durch Cyberkriminalität wächst auch die Notwendigkeit, die Software-Lieferkette zu schützen. Es geht in der aktuellen Lage nicht mehr darum, ob Unternehmen ihre Software-Lieferkette absichern wollen oder nicht, sondern darum, ob sie dies erfolgreich umsetzen.

 

Unter „Software-Lieferkette“ verstehe ich dabei alle Komponenten einer Software und die Prozesskette, die zur Erstellung und Einführung neuer Software im Unternehme durchlaufen wird. Sie umfasst alle Komponenten, die in einer Anwendung verwendet werden, einschließlich des speziell dafür erstellten Codes, Open-Source-Software, proprietärer Anwendungen und Tools von Drittanbietern, Binärdateien, Builds, Paketierungsskripte und alle Abhängigkeiten, die für die Ausführung der Software erforderlich sind. Dazu gehören auch die zugrunde liegende Infrastruktur und sogar die automatisierte Build-Pipeline selbst. All diese Komponenten und Prozesse sind potenzielle Schwachstellen in der Software-Lieferkette, die die Gesamtsicherheit von Software beeinträchtigen können – und genau das stellt ein Risiko für ein Unternehmen und seine Kunden dar.

Für eine sichere Software-Lieferkette kommt es insbesondere auf drei Komponenten an:

 

  1. Entwicklung sauberen Codes

Nur sauberer Code ist sicherer Code. Darüber hinaus ist sauberer Code das Rückgrat der allgemeinen Anwendungssicherheit, der Entwicklungseffizienz und einer schnellen Veröffentlichung. Wenn der Code nicht sauber ist, kann er eine Menge nachgelagerter Probleme verursachen, vor allem, wenn diese erst identifiziert werden, nachdem der Code sich bereits im Produktiveinsatz befindet. In diesem Fall kann es sehr viel schwieriger sein, die Ursache zu finden und zu beheben.

Bei der Entwicklung ist von Beginn an auf die Sauberkeit des Codes zu achten. Dazu gehört die Identifizierung und Behebung von Fehlern durch die Überprüfung von Abhängigkeiten, die Analyse von Code, das Signieren von Binärdateien usw. So werden Maßnahmen zur Software-Sicherheit frühzeitig in den Entwicklungsprozess eingebunden. Es ist wichtig, dass Entwickler präventive Sicherheitsmaßnahmen verstehen und beherzigen, während sie Code erstellen. Wird Software-Sicherheit jedoch nur aus der Perspektive der Softwareentwicklung betrachtet, wird die Bedeutung von Sicherheit in den Bereitstellungs- und Produktivprozessen vernachlässigt. Deshalb ist es wichtig, dass die Verantwortung für die Sicherheit nicht allein bei den Entwicklern liegt.

Insbesondere gelten die folgenden drei Tipps:

  • Kennen Sie die Herkunft aller vorgefertigten Artefakte, die Sie verwenden, um sicherzustellen, dass sie validiert, verifiziert und sicher sind.
  • Nutzen Sie einen Controller: Das Tool hilft, die Umgebung proaktiv zu überwachen und Probleme zu erkennen, damit sie so schnell wie möglich behoben werden können.
  • Automatisieren Sie Ihr Ökosystem für die Softwarebereitstellung so weit wie möglich. Dadurch werden menschliche Fehler und Versäumnisse vermieden, die später zu Problemen und Sicherheitslücken führen.
  1. Metrik für mittlere Zeit bis zur Schadensbegrenzung

Oft scheint für Code nach dessen Bereitstellung zu gelten: „Aus den Augen, aus dem Sinn.“ Aber das sollte nicht der Fall sein. Insbesondere bei häufigen und schnellen Releases kann sich das Team nach der Bereitstellung nicht zurücklehnen und die Hände in den Schoß legen. Stattdessen ist es wichtig, den Code im Auge zu behalten, nachdem eine Anwendung in Produktion gegangen ist, und sicherzustellen, dass man in der Lage ist, schnell zu reagieren, sobald ein Software-Sicherheitsproblem auftritt.

Der Prozess der Fehlerbehebung besteht aus zwei grundlegenden Elementen, der Erkennung von Sicherheitsproblemen und der eigentlichen Fehlerbeseitigung. Für jedes Element hat sich eine spezielle Metrik in der Branche etabliert:

  • Mittlere Zeit bis zur Entdeckung (Mean time to detect: MTTD): Dies ist die Zeit, die benötigt wird, um ein Problem zu entdecken, nachdem die Software veröffentlicht wurde.
  • Mittlere Zeit bis zur Reparatur (Mean time to repair: MTTR): Dies ist die Zeit, die benötigt wird, um das entdeckte Problem zu beheben.

Zwischen der Entdeckung eines Sicherheitsproblems und seiner Behebung liegt natürlich immer eine gewisse Zeitspanne. Ist man mit einer schwerwiegenden Sicherheitslücke konfrontiert, ist es unglaublich wichtig, was in dieser Zeit – zwischen Erkennung und Behebung – tatsächlich getan wird. Hier können neue Techniken wie die Feature-Flagging und automatische Rollbacks helfen. In der Tat haben diese neuen Techniken dazu geführt, dass sich eine neue Metrik in der Branche immer stärker durchsetzt: Die Mean time to Mitigate (MTTM) oder mittlere Zeit bis zur Schadensbegrenzung.

Bei der Schadensbegrenzung geht es nicht darum, ein Problem zu beheben. Es geht darum, eine Schwachstelle zu schließen, sobald man sie entdeckt hat, um den potenziellen Schaden zu begrenzen, während das Team an der Entwicklung einer endgültigen Lösung arbeitet. Dabei kann es sich beispielsweise um das Herunterfahren einer Website oder das Abschalten einer Anwendung oder Funktion handeln. Wird eine Sicherheitslücke oder eine Schwachstelle entschärft, werden böswillige Akteure sofort daran gehindert, weiteren Schaden anzurichten. Nun kann man gefahrlos mit der Behebung der zugrunde liegenden Schwachstelle fortfahren.

  1. Bereitstellung absichern

Die dritte wesentliche Komponente einer Software-Lieferkette besteht darin, die Sicherheit bei der Bereitstellung der Software und die größtmögliche Integrität des Prozesses zu gewährleisten. Im Wesentlichen geht es bei der sicheren Bereitstellung darum, alle Dinge zu überwachen, die im Bereitstellungsprozess abseits des Codes selbst schiefgehen können. Es gilt zu bedenken: Selbst wenn der Code über jeden Zweifel erhaben ist, besteht ohne eine sichere Pipeline immer noch das Risiko, dass böswillige Akteure oder menschliche Fehler zu Problemen führen.

Um das zu vermeiden, sollten Sie wiederum drei Tipps beherzigen:

  • Automatisieren Sie so viel wie möglich. Durch Automatisierung werden menschliche Fehler und unterlassene Schritte vermieden, die später Sicherheitsprobleme verursachen können.
  • Erstellen Sie Zugriffs- und Berechtigungskontrollen für den Code und die Pipeline selbst. Um die Sicherheit zu gewährleisten, müssen Sie dafür Sorge tragen, dass die richtigen Personen Zugang zu allen relevanten Aspekten haben.
  • Erstellen Sie einen Katalog unveränderlicher Objekte und aktualisieren Sie ihn kontinuierlich. Unveränderliche Objekte verhindern, dass Personen den Code nach seiner Bereitstellung verändern. Während dies in einer Testumgebung vielleicht nicht so wichtig sein mag, kann es im Produktivbetrieb den Unterschied zwischen einem gelungenen und einen gescheiterten Software-Produkt bedeuten.

Resümee

Die Verantwortung für die Vermeidung von Schwachstellen und die Minimierung von Risiken kann sich zu einer echten Belastung auswachsen. Wenn man weiß, wo man ansetzen muss, und sicherstellt, dass die richtigen Maßnahmen auf alle Komponenten der Software-Bereitstellung angewandt werden, kann die Last dieser Verantwortung gemildert werden. Die Entwicklung von sauberem Code, die Entschärfung von Sicherheitsproblemen sowie ein möglichst sicherer Softwarebereitstellungsprozess sind Schritte, die helfen können, den Kampf gegen böswillige Akteure und Sicherheitsverletzungen zu bestehen.

 

Themenseiten: Cloudbees, DevOps

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Der Weg zur sicheren Software-Lieferkette

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *