Tim Bastin
Softwarearchitekt & Software Sicherheitsspezialist
24.1.2024

Schwachstellen in der Software-Lieferkette: Eine Analyse

Bonn, 24.1.20241 Minuten Lesezeit
Schwachstellen in der Software-Lieferkette: Eine Analyse

Die Software-Lieferkette ist ein kritischer Aspekt in der modernen Software-Entwicklung, dessen Schutz oft herausfordernd ist. In diesem Beitrag wird erörtert, warum dies so ist, und welche Risiken dabei bestehen.


Was ist die Software-Lieferkette?

Die Software-Lieferkette umfasst alle Elemente und Prozesse, die für die Entwicklung, den Bau und die Veröffentlichung einer Software erforderlich sind. Dabei werden Komponenten, Bibliotheken, Tools und Prozesse integriert. Sie beinhaltet sowohl hausintern entwickelte als auch Dritt-Komponenten wie Open-Source-Bibliotheken.

Softwarelieferkette nach slsa.devSoftwarelieferkette nach slsa.dev
Quelle: slsa.dev

Die Software-Lieferkette besteht aus vier Hauptkomponenten: der Quelle (Producer / Source), dem Bauprozess (Build), den Abhängigkeiten (Dependencies) und der Auslieferung (Package / Consumer).

In der komplexen und weitreichenden Natur der Software-Lieferkette finden sich zahlreiche Angriffspunkte, die sich über den gesamten Lebenszyklus der Software erstrecken können. Sowohl direkte Angriffe auf spezifische Systeme, wie beispielsweise auf Build-Systeme, als auch indirekte Bedrohungen, die durch Schwachstellen in Prozessen oder Vernachlässigungen entstehen, sind möglich.

Bedrohungslandschaft in der Software-Supply Chain

Die Bedrohungslandschaft in der Software Supply Chain ist komplex und ständig im Wandel. Diese Komplexität ergibt sich aus der Vielzahl von Komponenten und Prozessen, die in die Entwicklung und den Betrieb moderner Software eingebunden sind. Angreifer nutzen verschiedene Schwachstellen und Angriffsvektoren, um Software-Lieferketten zu kompromittieren. Google stellt an der Zahl 12 mögliche Schwachstellen einer Software Supply Chain vor.

Software Supply Chain Attack VectorsSoftware Supply Chain Attack Vectors
Quelle: https://cloud.google.com/software-supply-chain-security/docs/attack-vectors?hl=de

Exemplarisch lassen sich beispielsweise folgende drei konkrete Angriffsvektoren ableiten:

  1. Schadcode im Namen des Entwicklers: Schadcode könnte im Namen des Entwicklers commited werden und ohne Code-Review in das Endprodukt gelangen.

  2. Kompromittierung der Build-Plattform: Angreifer könnten Plattformen wie Jenkins oder GitHub-Actions kompromittieren und unbemerkt Schadcode einschleusen.

  3. Kompromittierung von Bibliotheken: Eine weitere Gefahr besteht in der Kompromittierung einer verwendeten Bibliothek.

Die Auswirkungen eines Angriffs auf die Software-Lieferkette können verheerend sein, da sie nicht nur die Entwickler, sondern auch die Endbenutzer betreffen. Schwachstellen in der Software-Lieferkette sind ein oft übersehenes Risiko, das die Integrität und Sicherheit der Software ernsthaft gefährden kann. Ein Beispiel eines solchen Falls sind die SUNBURST-Cyberangriffe auf den Softwarehersteller SolarWinds im Jahre 2019.

Ablauf eines Software-Supply-Chain Angriffs

Der Ablauf eines Supply Chain Angriffs kann in verschiedene Phasen unterteilt werden, die zeigen, wie ein Angreifer schrittweise vorgeht, um die Endziele zu kompromittieren.

1. Cyberangriff auf den Lieferanten

Diese Phase beginnt mit einem gezielten Angriff auf den Lieferanten. Der Angreifer nutzt dabei oft Schwachstellen in der IT-Infrastruktur oder menschliche Fehler aus, um in das Netzwerk des Lieferanten einzudringen.

Methoden wie Phishing, Social Engineering oder das Ausnutzen von Software-Schwachstellen werden eingesetzt, um Zugang zu Systemen oder sensiblen Informationen zu erlangen.

Ziel ist es, einen Einstiegspunkt in die Lieferkette zu finden, der eine weitere Penetration und Kontrolle ermöglicht.

2. Kompromittierung der Software-Lieferkette des Lieferanten

Nach dem erfolgreichen Eindringen in das Netzwerk des Lieferanten konzentriert sich der Angreifer darauf, die Software-Lieferkette zu kompromittieren.

Dies kann durch die Manipulation von Software-Code, das Einfügen von Malware in Softwarepakete oder die Veränderung von Build-Prozessen erfolgen.

Der Angreifer kann auch versuchen, legitime Software-Updates oder Sicherheitspatches zu manipulieren, um so eine breitere Verteilung des schädlichen Codes zu erreichen.

3. Auslieferung eines kompromittierten Produktes

In dieser Phase wird das kompromittierte Produkt an die Kunden des Lieferanten, also die eigentlichen Zielunternehmen, ausgeliefert.

Da das Produkt oder Update von einem vertrauenswürdigen Lieferanten stammt, wird es oft ohne ausreichende Prüfung in den Systemen der Zielunternehmen implementiert.

Die schädliche Software kann sich so unbemerkt in den Systemen der Zielunternehmen ausbreiten und dort Schaden anrichten.

4. Kompromittieren des Ziels

Sobald die kompromittierte Software im Zielnetzwerk aktiv ist, beginnt die letzte Phase des Angriffs.

Der Angreifer kann nun Zugriff auf sensible Daten erhalten, weitere schädliche Aktivitäten ausführen oder das Netzwerk für zukünftige Angriffe nutzen.

Die Ziele können vielfältig sein, von Datendiebstahl und Spionage bis hin zur Sabotage kritischer Infrastrukturen.

Ein Angriff auf die Lieferkette ist somit immer eine Kombination aus mindestens zwei Angriffen.

  1. Der erste Angriff richtet sich gegen einen Lieferanten,

  2. Der Zweite gegen das eigentliche Ziel

Der Ablauf eines Supply Chain Angriffs zeigt, wie Angreifer durch die Ausnutzung von Vertrauensbeziehungen zwischen Unternehmen und ihren Lieferanten komplexe und schwer zu erkennende Angriffsvektoren schaffen können. Es ist daher entscheidend, dass Unternehmen nicht nur ihre eigenen Sicherheitsmaßnahmen stärken, sondern auch die Sicherheitspraktiken ihrer Lieferanten genau prüfen und bewerten.

Fazit

Die Bedrohungslage in der Software-Lieferkette verdeutlicht eine alarmierende Realität: selbst Software, die mit einer validen Signatur versehen und scheinbar integritätsgesichert ist, kann Schadcode enthalten. Dieses vermeintliche Paradoxon stellt ein signifikantes Sicherheitsrisiko dar und erfordert eine Neuorientierung in der Herangehensweise zur Cybersicherheit. Insbesondere Ansätze wie DevSecOps (eine Weiterentwicklung von DevOps), die eine Sicherheitskultur im Unternehmen fördern und die Software während des gesamten Lebenszyklus ständigen Sicherheitstests unterziehen, sollten für die Mitigation von Software-Supply-Chain Angriffen unbedingt in Erwägung gezogen werden.