Was bedeutet Software Composition Analysis (SCA)?
- Sarah Berger
- SCA
- 9. April 2025
Inhaltsverzeichnis
Durch die vermehrte Nutzung von Open-Source und Third-Party-Komponenten konnten Vorteile wie schnellere Entwicklungszeiten und damit auch die entsprechenden Kosteneinsparungen realisiert werden. Allerdings entstanden natürlich auch entsprechende Risiken im Bereich Informationssicherheit und Compliance. Eine Software Composition Analysis (SCA) hilft, diese Risiken zu identifizieren und zielführend zu reduzieren.
SCA ist ein entscheidender Prozess, der Unternehmen hilft, die Zusammensetzung ihrer Software zu verstehen und zu verwalten. Durch diese Transparenz der verwendeten Komponenten können Sicherheitslücken frühzeitig erkannt und behoben werden. Gleichzeitig kann die Erfüllung der Lizenzanforderungen beachtet und bestenfalls erfüllt werden.
Dieser Blogartikel gibt ein grundlegendes Verständnis darüber, was eine Software Composition Analysis ist und welche Vorteile sie hat. Gleichzeitig gehen wir auf die toolunterstützte Einführung ein und beleuchten die typischen Funktionen eines SCA-Tools. Zudem gehen wir auf die verschiedenen Anwendungsfälle eines SCA-Tools im Unternehmen ein und geben Beispiele aus der Unternehmenspraxis.
Grundlagen der Software Composition Analysis (SCA)
Eine Software Composition Analysis (SCA) beschäftigt sich mit den verwendeten Komponenten innerhalb der Software. Das können Open-Source-Softwarekomponenten, proprietäre Komponenten oder allgemein Third-Party-Komponenten sein. SCA analysiert jedoch nicht nur, um dem Anwender eine Transparenz über den “Inhalt” der Software zu geben. Die Ergebnisse müssen in einen entsprechenden Kontext gebracht werden. In diesem Fall geht es darum, ob die gefundenen Komponenten Schwachstellen aufweisen, veraltet sind oder welche Lizenzbedingungen erfüllt werden müssen. All diese Aspekte werden einbezogen, um zu beurteilen, welches Risiko besteht, die entsprechende Softwarekomponente zu verwenden. Es gibt auch noch weitere Informationen, beispielsweise wann die Komponenten zuletzt aktualisiert wurden, wie oft sie bereits in anderen Projekten verwendet wurden oder wie viele Maintainer sie hat. Diese werden jedoch nicht von allen SCA-Tools unterstützt.
Bedeutung von SCA in der heutigen Softwareentwicklung
Sicherheitsanalysen innerhalb der Softwareentwicklung sind nichts Neues und sollten (hoffentlich) bereits fest etabliert sein. Sehr gängig ist beispielsweise SAST (Static Application Security Testing), diese Methode analysiert den Quellcode deiner Software, um potenzielle Sicherheitslücken zu identifizieren. Diese Methode ist immer toolunterstützt und sollte so früh wie möglich eingesetzt werden. Ein sehr bekanntes Beispiel ist SonarQube. Weiterhin bekannt ist DAST (Dynamic Application Security Testing), hierbei wird die Software während der Ausführung getestet, um entsprechende Sicherheitslücken zu entdecken. Hierbei werden Angriffe simuliert und direkt mit der Anwendung im Betrieb interagiert. SCA ist eine optimale Ergänzung, um die DevSecOps-Prozesse noch weiter zu verbessern und Schwachstellen zu erkennen, welche von SAST und DAST nicht erkannt werden können. Die Software Composition Analyse hat weiterhin den Vorteil, dass die verwendeten Komponenten auch nach der Markteinführung auf etwaige Schwachstellen beobachtet werden. In der Regel wird SAST und DAST nur bis zum Softwarerelease durchgeführt. Zum Teil gibt es jährliche Penetrationstests, um die Anwendung auch nach der Markteinführung auf Schwachstellen hin zu überprüfen.
Toolunterstützung
Eine Software Composition Analyse wird in der Regel immer mit einem entsprechenden Softwaretool unterstützt. Zu den typischen Funktionen kommen wir detailliert im nächsten Blogabschnitt. Wichtig ist zu beachten, dass der Markt für SCA-Tools in den letzten Jahren komplett explodiert ist. Während eines unserer Kundenprojekte haben wir eine umfassende Analyse zu den aktuellen SCA-Tools gemacht. Die Hersteller bieten hier sehr unterschiedliche Lösungen an. Von kompletten Plattformen, welche den kompletten Lebenszyklus der Software abbilden, bis hin zu sehr leichten only SCA-Lösungen gibt es alles. Leider geben einige Hersteller nur glänzende Marketingprospekte raus und erlauben keine tiefergehenden Analysen. Solltest du Hilfe benötigen bei der richtigen Auswahl eines SCA-Tools für dich, kannst du uns gerne ansprechen.
Funktionsweise eines SCA-Tools
Wie bereits beschrieben gibt es eine stetig wachsende Anzahl an SCA-Tools oder Plattformen, welche eine SCA-Lösung beinhalten. Durch den steigenden Druck, SBOMs zu erstellen und zu veröffentlichen, steigt natürlich auch die Nachfrage und damit auch das Angebot an SCA-Lösungen, welche hierbei die perfekte Unterstützung liefern. Während meiner Analyse von über 200 SCA-Tools sind mir jedoch die folgenden Grundfunktionen so gut wie immer über den Weg gelaufen.
Automatisierte Analyse
Bei der automatisierten Analyse geht es um die sogenannte “Scan-Funktion”. Das bedeutet, dass die Software entsprechend gescannt werden muss, um die Zusammensetzung von Software zu überprüfen und dabei Open-Source- und Third-Party-Komponenten zu identifizieren. Die Hersteller bieten in der Regel alle einen eigenen Scanner an. Es gibt jedoch auch jede Menge Command-Line-Tools, welche diese Scanfunktion übernehmen und nur den entsprechenden Output zur Verfügung stellen. Oftmals in Form von SBOMs, Excel-Files oder anderen Formaten. Ein sehr bekannter Anbieter ist hier ScanCode. Die Ergebnisse können dann von anderen SCA-Tools weiterverarbeitet werden. Es gibt Scanner, welche eine Reihe von Programmiersprachen abdecken, oder auch dedizierte Scanner für eine Programmiersprache.
Erkennung von Komponenten
Nachdem die Software gescannt wurde, wissen wir also, was in der Software enthalten ist, müssen die entsprechenden Komponenten noch erkannt werden. Zu jeder Softwarekomponente kann es eine Reihe an Informationen geben. Die folgende nicht abschließende Liste zeigt die typischen Informationen:
- Name
- Version
- Description
- CPE
- PURL
- External References
- Hash-Value
- License
- Copyright
Bei der Erkennung der entsprechenden Informationen trennt sich die Spreu vom Weizen. Es gibt Scanner, welche perfekt eine große Reihe an Informationen liefern, wie beispielsweise das bereits erwähnte ScanCode. Es gibt jedoch auch Scanner, welche bestimmte Informationen (z. B. Copyright) nicht finden oder leider Falschinformationen ausgeben.
Solltest du unterschiedliche Hersteller zum Scannen der Software und zur weiteren Verarbeitung in einem SCA-Tool nutzen, kannst du in der Regel von beiden Datenquellen profitieren.
Schwachstellenanalyse
Die Schwachstellenanalyse kann von Command-Line Scannern in der Regel nicht mehr abgedeckt werden und es wird ein vollumfängliches SCA-Tool benötigt. In diesem Schritt geht es darum zu erkennen, ob die erkannten Softwarekomponenten Schwachstellen besitzen und bestenfalls noch, ob diese im entsprechenden Kontext ausnutzbar sind. Dazu bedienen sich die Hersteller öffentlicher Datenbanken wie beispielsweise die National Vulnerability Database, der OSS Index, die Snyk Vulnerability Database oder Github Security Advisories. Je nach Hersteller werden die Schwachstellen aus den genannten Datenbanken 1:1 angezeigt inklusive der entsprechenden Schwachstellenerläuterung und Hinweise zur Beseitigung. Manche Hersteller haben noch eine eigene Datenbank und dedizierte Teams, welche sich mit dem Thema beschäftigen und öffentliche Schwachstellen mit eigenen Informationen ergänzen oder komplett eigene Schwachstellen finden und im SCA-Tool veröffentlichen.
Das Schwierige hierbei ist das richtige Matching zwischen gefundener Komponente und der entsprechenden Schwachstelle. Während meiner Analysen gab es hier gigantische Unterschiede. Einige SCA-Tools finden nicht jede Schwachstelle, andere wiederum finden zu viele False-positive, was wiederum die Effizienz verschlechtert.
Lizenzmanagement
Während wir bei der Schwachstellenanalyse versuchen, für die gefundenen Softwarekomponenten Schwachstellen zu finden, wird beim Thema Lizenzmanagement versucht, für die Softwarekomponenten möglichst alle Lizenzinformationen zu finden. Hierzu zählt zum Einen die Erkennung, welche Lizenzen vom Autor aktiv benannt wurden, aber auch welche sich tatsächlich ergeben. Hier kann es Unterschiede geben, wenn der Autor wiederum Drittkomponenten verwendet und diese Lizenzen haben, welche nicht zu den ausgewählten Lizenzen passen. Sind alle Lizenzen gefunden, gilt es, zu analysieren, ob die allgemeinen Standardlizenztexte verwendet wurden oder ob diese vom Autor abgewandelt wurden. Ist dies der Fall muss beides berücksichtigt werden. Weiterhin sollen möglichst alle Informationen über die Autoren und das entsprechende Copyright gefunden werden.
Weitere wichtige Funktionen eines SCA-Tools
Die bisherige Auflistung waren die sogenannten Grundfunktionen, welche in der Regel jedes SCA-Tool bietet. Damit der Blogartikel nicht zu lang wird, ist hier eine Auflistung an weiteren wichtigen Funktionen:
- Integration in CI/CD-Pipelines: Wie kann das SCA-Tool in die kontinuierlichen Integrations- und Deployment-Prozesse eingebunden werden.
- Berichterstattung und Dokumentation: Welche Möglichkeiten gibt es zur Erstellung von detaillierten Berichten und Dokumentationen über die Softwarezusammensetzung.
- Benachrichtigungen und Alarme: Echtzeit-Benachrichtigungen bei der Erkennung neuer Schwachstellen oder Lizenzproblemen.
- Unterstützung verschiedener Programmiersprachen: Kompatibilität mit einer Vielzahl von Programmiersprachen und Technologien.
- Policies: Definition und Durchsetzung von Sicherheits- und Compliance-Richtlinien, um sicherzustellen, dass die Software den internen und externen Anforderungen entspricht.
Vorteile der Nutzung eines SCA-Tools
Nachdem wir die wichtigsten Grundfunktionen eines SCA-Tools erläutert haben, wollen wir uns jetzt die Vorteile der Nutzung eines SCA-Tools ansehen. Diese sind natürlich allgemein gehalten, je nach Unternehmenskontext und Anwendungsfall können noch weitere Vorteile entstehen.
Sicherheitsverbesserung
Ein SCA-Tool ermöglicht es mir zu erkennen, ob meine Software Komponenten enthält, welche Schwachstellen aufweisen. Die Schwachstellenanalyse ist dabei nicht nur während des Entwicklungsprozesses, sondern auch noch darüber hinaus. Ich werde dadurch nicht nur auf neue Schwachstellen aktiv aufmerksam gemacht, sondern es erfolgt auch noch eine entsprechende Beschreibung, wie die Schwachstelle beseitigt werden kann. Viele Tools bieten ebenfalls ein entsprechendes Management an, bei dem dokumentiert werden kann, wie der aktuelle Status der Schwachstelle ist.
Compliance-Unterstützung
Je nach Hersteller unterstützt dieser unterschiedlich weitgehend bei der Einhaltung von Lizenzanforderungen. Die wirklich guten SCA-Tools zeigen nicht nur die Lizenz an, sondern dokumentieren direkt die Bedingungen, welche mit dieser Lizenz erfüllt sein müssen. Weiterhin erstellen sie automatisiert die notwendigen Dokumentationen wie beispielsweise die Notice Files. Da regulatorische Vorgaben wie beispielsweise der Cyber Resilience Act die Softwarehersteller verpflichten, eine SBOM zu erstellen, unterstützen die SCA-Tools dies ebenfalls.
Effizienzsteigerung
Je nach Softwareprojekt gibt es mehr als hunderte Softwarekomponenten. Diese manuell zu analysieren ist nicht möglich und falls doch einfach viel zu teuer und fehleranfällig. Durch die automatisierte Überprüfung erkennt man auf einen Blick, welche Softwarekomponenten Schwachstellen haben und gegebenenfalls ausgetauscht werden müssen. Je früher im Entwicklungsprozess solche Komponenten erkannt werden, desto günstiger und stressfreier wird es für alle Beteiligten.
Risikominimierung
Durch die Früherkennung von Sicherheitsrisiken und Lizenzverstößen können Unternehmen überhaupt ein Risikomanagement inklusive Beurteilung durchführen. Ebenfalls ist es ohne SCA-Tool nicht möglich überhaupt zu erkennen, ob neue Schwachstellen Produkte, welche bereits im Markt sind, überhaupt betreffen. Durch diese Intransparenz können große Risiken entstehen.
Anwendungsfälle für SCA-Tools
Muss jedes Unternehmen, welches Software entwickelt oder auch nur vertreibt, ein SCA-Tool haben? Die Antwort wird ständig “Ja” sein. Selbst wenn ein Unternehmen Software nicht selbst entwickelt und nur extern entwickeln lässt, sollte es ein Interesse haben zu wissen, welche Softwarekomponenten eigentlich verbaut wurden. Weiterhin bietet ein SCA-Tool für das beauftragende Unternehmen die Möglichkeit von Sicherheitsaudits und Compliance-Prüfungen. Anbei findest du typische Anwendungsfälle für den Einsatz von SCA-Tools. Diese Liste ist nicht vollständig und kann je nach Unternehmenskontext ergänzt werden.
Open-Source-Management
Die Verwendung von Open-Source-Softwarekomponenten ist nicht mehr wegzudenken aus der modernen Softwareentwicklung. Durch die Nutzung ergeben sich viele Vorteile. Für die Verwaltung und Überwachung von Open-Source-Komponenten in der Software kann ein SCA-Tool sehr unterstützend sein. Es gibt an, welche Open-Source-Softwarekomponenten verbaut worden sind und welchen Zustand diese haben (Schwachstellen, Lizenzen und Aktualität).
Sicherheitsaudits
Wie bereits am Anfang des Blogartikels erwähnt, gibt es verschiedene Möglichkeiten sicherzustellen, dass die Software möglichst frei von Schwachstellen ist. Neben SAST und Penetrationstests kann eine Software Composition Analyse hilfreiche Informationen geben, ob Schwachstellen in der Software zu finden sind. Hierbei ist es vor allem wichtig zu unterscheiden, wann ein Sicherheitsaudit stattfindet. Oftmals wird nach Marktrelease die Software nicht mehr sicherheitstechnisch begutachtet. Das ist ein grober Fehler, welcher mit einem SCA-Tool zumindest für die eingesetzten Komponenten beseitigt werden kann.
Compliance-Prüfungen bei externen Dienstleistern und Zulieferern
Mit diesem Punkt möchte ich explizit die Situation ansprechen, in der die Software nicht in-house entwickelt, sondern extern entwickelt wird. Entweder als komplettes Produkt oder als Teilstück, welches intern mit weiteren Bausteinen weiterentwickelt wird. Je nach Situation und Vertragsgestaltung sollte der Kunde den Source-Code selbst scannen, um anschließend zu analysieren, welche Komponenten verbaut wurden und ob diese den Anforderungen entsprechen. Sollte dies nicht möglich sein, muss eine SBOM bereitgestellt werden, welche dann als Import für ein SCA-Tool genutzt werden kann. Somit ist es möglich, auch für extern entwickelte Software Compliance-Prüfungen durchzuführen.
DevSecOps-Integration
Je früher ein Bug gefunden wird, desto günstiger ist die Beseitigung des Bugs. Das Gleiche gilt auch für Schwachstellen und Complianceverstöße. Die Software Composition Analyse sollte so früh wie möglich in die Entwicklungsprozesse integriert werden. Alles sollte so einfach wie möglich für den Softwareentwickler geschehen. Das bedeutet, die Analyse muss automatisch passieren und keine manuellen Schritte benötigen. Durch die richtige Integration in DevSecOps haben die Teams alle ein einheitliches Vorgehen und können keinen Weg um die Prüfung finden.
Fazit
Ich hoffe, dass nach diesem Blogartikel die Einführung von SCA einen Platz auf eurer To-Do-Liste gefunden hat. Neben den vielen Vorteilen von SCA-Tools nehmen jedoch auch die regulatorischen Anforderungen wie z. B. der Cyber Resilience Act weiter zu, so dass ich sicher bin, dass ein SCA-Tool bald nicht mehr wegzudenken sein wird. Die Herausforderung bei der Nutzung eines SCA-Tools ist vor allem zu erkennen, welches Tool es sein soll und wie dieses in die bestehenden Entwicklungsprozesse integriert werden kann. In der Zukunft gibt es weitere Blogartikel zum Thema, wie die richtigen Kriterien für die Auswahl eines geeigneten SCA-Tools gefunden werden und welche Tools wir aus der Praxis empfehlen. Solltest du bis dahin Fragen haben, kannst du dich gerne bei uns melden.
Du möchtest mehr zum Thema erfahren?
Vereinbare einen kostenlosen Gesprächstermin mit uns oder sende uns deine Anfrage über unser Kontaktformular.
