Skip to main content

Wenn Software kein „Liefergut“ ist

Artikel von
Headshot of Daniel Appelquist

Daniel Appelquist

blog feature snyk iac cli enhancements

15. Februar 2023

0 Min. Lesezeit

Anmerkung der Redaktion: Der folgende Essay von Daniel Appelquist, Director of Open Source and Open Standards Strategy bei Snyk, untersucht den Ursprung des Begriffs „Supply-Chain-Sicherheit“ und fragt, ob er zum heutigen Entwicklungsprozess von Open-Source-Software passt.

Zu diesem Beitrag inspiriert hat mich ein Post von Thomas Depierre auf Mastodon:

Screenshot eines Tweets von Thomas Depierre: „Als Maintainer von Open-Source-Bibliotheken und -Paketen fühlte sich die Diskussion um die Software-Lieferkette immer falsch an. Es ist ganz einfach: Ich bin kein Lieferant.“

Der Post griff etwas auf, das mich in letzter Zeit beschäftigt. Wenn es um Softwaresicherheit geht, sprechen wir viel über die Software-Lieferkette und verwandte Konzepte wie die Software Bill of Materials (SBOM). Diese Metapher stammt aus dem industriellen Sprachgebrauch. Wer sich mit Wirtschaft und Fertigung beschäftigt, kennt das Konzept der Lieferkette. Es ist also verständlich, dass viele in der Branche an dieser Metapher festhalten, wenn wir über Software sprechen – insbesondere über Open-Source-Software mit ihren verschachtelten Abhängigkeiten. Sie ist eine Kurzform, um Menschen, die Konzepte wie Abhängigkeiten möglicherweise nicht kennen, die moderne Softwareentwicklung zu erklären.

Doch wie viele nützliche Metaphern ist auch diese ungenau und lässt sich nur begrenzt übertragen. Die Metapher der Lieferkette soll nicht nur den Maintainer bezeichnen, sondern das gesamte Ökosystem und alles, was dazwischenliegt, bis eine Bibliothek in ein Open-Source-Projekt gelangt. So ist beispielsweise die npm-Registry eine „Bezugsquelle“, während der GitHub Actions Marketplace eine weitere ist.

Manche betrachten die Open-Source-Welt gern als eine zusammenhängende Gemeinschaft. Tatsächlich ist Open Source stark in verschiedene Lager aufgeteilt. Auf der einen Seite gibt es den eher unternehmensgeprägten Bereich von Open Source, manchmal als „Open-Source-Industriekomplex“ bezeichnet – für diesen wäre die Terminologie rund um die Lieferkette durchaus passend. Am anderen Ende des Spektrums steht die Freie-Software-Bewegung, die das Konzept einer „Software-Lieferkette“ wahrscheinlich als unvereinbar mit ihrer Denkweise betrachten würde. Dazwischen liegt ein breites Spektrum.

In seinem Post weist Thomas völlig zu Recht darauf hin, dass Open-Source-Software-Abhängigkeiten keine Lieferantenvereinbarung beinhalten. In diesem Sinne ist ein OSS-Entwickler kein Lieferant für nachgelagerte Projekte. Die Metapher der „Lieferkette“ kann zu Missverständnissen führen – etwa wenn Maintainer von Open-Source-Softwareprojekten rechtliche Mitteilungen oder Schreiben von Unternehmen erhalten. Genau das geschah während des Log4j-Vorfalls. Der Open-Source-Entwickler Daniel Stenberg (bekannt für seine grundlegende Arbeit am Projekt Curl) erhielt Schreiben von einem (wohlmeinenden) Einkaufsteam eines Unternehmens zum Curl-Projekt. Darin wurde Daniel als Lieferant behandelt und aufgefordert, innerhalb einer strikt vorgegebenen Frist Daten zur Verwendung von Log4j in Curl bereitzustellen. Eine solche Kommunikation mag in einer klar geregelten Lieferantenbeziehung angemessen sein, die durch einen Vertrag mit einer Service Level Agreement festgelegt ist. Im Open-Source-Kontext ist sie jedoch überhaupt nicht angemessen.

Ich denke, die Terminologie und das Denkmodell rund um die Software-Lieferkette sind nach wie vor sehr nützlich – besonders, wenn es darum geht, politischen Entscheidungsträgern oder anderen Verantwortlichen die Zusammenhänge zu erklären, die mit Softwareabhängigkeiten oder der Funktionsweise von Open Source nicht vertraut sind. Diese Metapher hat jedoch ihre Grenzen. Wenn wir sie verwenden, sollten wir uns auch bewusst sein, dass Open-Source-Abhängigkeiten keine Lieferantenvereinbarungen darstellen. Noch wichtiger ist, dass es eine ganze Gemeinschaft von Open-Source-Softwareentwicklern gibt, die sich selbst nicht auf diese Weise sehen. Der Bereich Softwaresicherheit muss ein großes Zelt sein – offen für Menschen und Gemeinschaften, denen die Denkweise der „Lieferkette“ möglicherweise weniger zusagt –, wenn wir die Softwaresicherheit in der gesamten Branche verbessern wollen.

Wie könnten wir dieses Problem also angehen? Ich denke, wir sollten in bestimmten Kontexten eine leicht abweichende Terminologie in Betracht ziehen. Der Begriff Software-Abhängigkeitskette könnte passender sein, wenn es um die allgemeine Open-Source-Entwicklergemeinschaft geht. Oder wir müssen als Branche Open-Source-Entwicklern sehr klar erklären, was wir mit „Software-Lieferkette“ meinen – und was nicht.