Security: Angriffe auf die Softwarelieferkette erkennen und abwehren

Ein Überblick über Supply-Chain-Angriffe hilft, das Risiko abzuschätzen und Gegenmaßnahmen zu planen. Wir klären, wie Angreifer im Detail vorgehen.

Lesezeit: 24 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen
Von
  • Henrik Plate
  • Wolfram Fischer
Inhaltsverzeichnis

Alle Softwareentwicklungsprojekte stützen sich in der einen oder anderen Form auf Komponenten von Drittanbietern. Das gilt seit jeher für Low-Level-Komponenten wie Betriebssysteme oder Compiler, in jüngerer Zeit kommen aber immer mehr Tools und Komponenten hinzu, vor allem auf der Anwendungsebene. Heutige Softwareprojekte weisen im Median je nach Ökosystem zwischen sechs und zehn direkte Abhängigkeiten auf. Berücksichtigt man auch die transitiven (indirekten) Abhängigkeiten, steigt die Zahl je nach Ökosystem mehr oder weniger stark an. GitHubs Octoverse Report ermittelte dann beispielsweise im Python-Ökosystem einen Median von 19, im JavaScript-Umfeld von 683 Abhängigkeiten.

Gemeint sind hier die in diesem Artikel so bezeichneten Anwendungsabhängigkeiten – Bibliotheken und Frameworks wie Express, Requests oder Log4J, die für den Test, zur Kompilierung oder während der Laufzeit einer Anwendung nötig sind. Direkte Abhängigkeiten sind dabei solche, die Anwendungsentwickler deklarieren und aus Paketrepositorys laden. Transitiv hingegen sind Abhängigkeiten, die von den direkt genutzten Abhängigkeiten benötigt werden. Diese wiederum haben weitere Abhängigkeiten und immer so weiter – man kann sich das Ganze als einen Abhängigkeitsbaum vorstellen, mit dem Entwicklungsprojekt als Wurzelknoten.

Mehr zu Supply-Chain-Security

In Abgrenzung zu Anwendungsabhängigkeiten bezeichnet in diesem Artikel der Begriff Entwicklungstool im weiteren Sinne alle anderen Komponenten, die im Rahmen der Entwicklung zum Einsatz kommen. Das umfasst IDEs, Build-Server wie Jenkins und deren zahlreiche Plug-ins, aber auch all die anderen kleinen Helfer, die im Rahmen der Entwicklung und Qualitätssicherung zum Einsatz kommen: etwa zur Quellcodeformatierung, zur Generierung der Dokumentation oder zur Prüfung auf Sicherheitslücken. Manche dieser Tools werden dauerhaft installiert, andere mittels Containertechnologien eingebunden und wiederum andere während der Ausführung automatischer Builds geladen (etwa mittels curl|bash). All diese Komponenten sind Teil der Software Supply Chain. Während die Vorteile dieser Wiederverwendung offenkundig sind, geht dieser Artikel auf die Sicherheitsrisiken dieser quasi unumgänglichen Praxis ein, insbesondere auf Supply-Chain-Angriffe.