Definition SCA Was ist eine Software Composition Analysis?

Von Dipl.-Ing. (FH) Stefan Luber 5 min Lesedauer

Software Composition Analysis ist eine wichtige Sicherheitsmaßnahme in der Softwareentwicklung. Sie identifiziert und analysiert Open-Source- und Drittanbieterkomponenten in der Codebasis. So lassen sich Sicherheitslücken oder Schwachstellen finden, Lieferkettenangriffe verhindern und Lizenzbedingungen klären.

Eine Software Composition Analysis ist eine wichtige Sicherheitsmaßnahme in der Softwareentwicklung die auf die Analyse der Zusammensetzung der Codebasis setzt.(Bild:  gemeinfrei /  Pixabay)
Eine Software Composition Analysis ist eine wichtige Sicherheitsmaßnahme in der Softwareentwicklung die auf die Analyse der Zusammensetzung der Codebasis setzt.
(Bild: gemeinfrei / Pixabay)

Ins Deutsche übersetzt bedeutet Software Composition Analysis Software-Zusammensetzungs- oder Software-Kompositionsanalyse. Das Akronym ist SCA. Bei SCA handelt es sich um einen Sicherheitsansatz und eine gängige Praxis in der Softwareentwicklung. Mithilfe der Software Composition Analysis lassen sich Open-Source- und Drittanbieterkomponenten in der Codebasis von Softwareanwendungen identifizieren und analysieren. SCA findet beispielsweise Open-Source-Bibliotheken, die für die Realisierung bestimmter Funktionalitäten in die Codebasis eingebunden wurden. Durch eine umfassende Analyse der gefundenen Open-Source- und Drittanbieter­komponenten können Sicherheitslücken oder Schwachstellen aufgespürt und beseitigt werden. Lizenz- oder Compliance-Probleme lassen sich mit SCA ebenfalls identifizieren und beseitigen. Software Composition Analysis sichert Software-Lieferketten ab und optimiert die Sicherheit und Integrität der Softwareanwendungen. Durch die zunehmende Abhängigkeit moderner Software von Open-Source- und Drittanbieter­komponenten hat die Bedeutung von Software Composition Analysis in den letzten Jahren stark an Bedeutung gewonnen. Zur Durchführung der Software-Zusammen­setzungs­analyse kommen unterstützende Software-Lösungen und Tools zum Einsatz, mit deren Hilfe sich der SCA-Prozess zu einem Großteil automatisieren lässt.

Warum ist SCA notwendig und wichtig?

Um Softwareentwicklungsaufwände zu reduzieren, Entwicklungszeiten zu verkürzen und Anwendungen schneller auf den Markt zu bringen, ist es heute gängige Praxis, bestimmte Funktionen und Programmkomponenten mithilfe von externen Codebestandteilen zu realisieren. So müssen nicht alle Programmbestandteile neu entwickelt und programmiert werden, sondern es lassen sich bereits fertige Programmcodes oder Programmmodule einbauen und wiederverwenden. Beispielsweise werden häufig Open-Source-Komponenten in Form von Bibliotheken (Libraries) in die Codebasis einer Anwendung integriert. Durch diese Integration entstehen aber auch neue Abhängigkeiten von externen Codequellen und Drittanbietern. Einbau und die Verwendung von externem Code sind daher mit Sicherheitsrisiken verbunden. Es können Programmierfehler, Schwachstellen oder Sicherheitslücken im externen Programmcode vorhanden sein, die durch den Einbau in die eigenen Softwareanwendungen importiert werden. Zudem kann es zur Verletzung von Lizenzbedingungen oder Compliance-Anforderungen kommen.

Nur auf die Qualität des externen Programmcodes und die Zuverlässigkeit und Vertrauenswürdigkeit der Drittanbieter und der externen Entwickler zu vertrauen, ist hochriskant. Denn häufig versuchen bösartige Akteure über die Bereitstellung von externem Code, schädliche Programmbestandteile unbemerkt in fremde Softwareanwendungen einzuschleusen und diese für kriminelle Zwecke auszunutzen. Solche Angriffe werden auch als (Software-)Lieferkettenangriffe bezeichnet und stellen eine zunehmende Bedrohung dar. In der Vergangenheit ist es bereits mehrfach gelungen, Bibliotheken mit bösartigem Code zu entwickeln und bereitzustellen, die unwissend in eine Vielzahl von Softwareanwendungen integriert wurden.

Eine manuelle Verwaltung externer Codebestandteile und ihrer Abhängigkeiten ist bei komplexen Anwendungen kaum zu leisten. Es sind automatisierte Verfahren notwendig, die die Zusammensetzung der kompletten Codebasis automatisiert untersuchen, Fremdbestandteile identifizieren und nach verschiedenen Aspekten wie Sicherheit, Lizenzbedingungen und Abhängigkeiten analysieren. Genau diese Funktionen bietet die Software Composition Analysis. Mithilfe von SCA lassen sich die Sicherheit, Qualität und Konformität der Software und ihren externen Codebestandteilen prüfen und sicherstellen.

Prinzipielle Funktionsweise der Software-Kompositionsanalyse

Die Software-Kompositionsanalyse erfolgt in verschiedenen aufeinanderfolgenden Prozessschritten. Die grundlegenden Prozessschritte sind:

  • scannen des Software-Source-Codes und aller zugehörigen Bestandteile, die zur Kompilierung der Anwendung verwendet werden
  • identifizieren von externen Codebestandteilen wie Open-Source-Libraries und Ermitteln der Quellen und Versionen der Fremdkomponenten
  • dokumentieren aller ermittelten Informationen zum Beispiel in einer Datenbank oder einer Software Bill of Materials (SBOM)
  • abgleichen der ermittelten Informationen beziehungsweise der SBOM mit anderen Quellen und Datenbanken, die Informationen über bekannte Schwachstellen oder einzuhaltende Lizenzbedingungen des Fremdcodes enthalten, zum Beispiel Schwachstellendatenbanken oder Common Vulnerabilities and Exposures (CVEs)
  • erstellen eines Berichts mit allen gefundenen Schwachstellen, Problemen, einzuhaltenden Lizenzbedingungen und weiteren für die Verwendung der Fremdcodebestandteile relevanten Informationen

Üblicherweise liefert eine Software Composition Analysis eine sogenannte Software Bill of Materials (SBOM). Eine SBOM ist eine Inventarliste einer Softwareanwendung, die sämtliche verwendeten Komponenten wie Pakete oder Open-Source-Bibliotheken inklusive ihren Abhängigkeiten und Versions- und Lizenzinformationen enthält. Das letztendliche Ergebnis einer Software Composition Analysis kann in verschiedenen digitalen Formaten bereitgestellt werden. Es kann sich beispielsweise um einen Bericht mit konkreten Handlungsanweisungen oder Empfehlungen handeln, welche Schwachstellen enthalten sind und wie sie behoben oder wie Workarounds erstellt werden können. Unter Umständen erfolgt bei erkannten Problemen oder Schwachstellen eine automatische Alarmierung des für die Anwendungssicherheit verantwortlichen Personals.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Typische Anwendungsbereiche der Software Composition Analysis

Die Hauptanwendungsbereiche der Software Composition Analysis sind das Sicherheits- und Schwachstellenmanagement, Lizenzmanagement, Abhängigkeitsmanagement, Qualitätssicherung, Absicherung von Software-Lieferketten, Erfüllung von Compliance-Richtlinien und gesetzlichen Vorgaben und die Implementierung von CI/CD-Pipelines.

Aufgrund der heutzutage großen Anzahl üblicherweise in Softwareprodukten verwendeten Open-Source- und Drittanbieterkomponenten ist Software Composition Analysis ein unverzichtbarer Bestandteil der Softwareentwicklung und der Bereitstellung sicherer, fehlerfreier Anwendungen geworden. Ein weiterer wichtiger SCA-Anwendungsbereich ist das Lizenzmanagement. Mit SCA lässt sich sicherstellen, dass die Bedingungen der vielen unterschiedlichen Open-Source-Lizenzen oder proprietären Lizenzen eingehalten werden. SCA minimiert das Risiko von Lizenzverletzungen und Lizenzkonflikten. Die Software-Kompositionsanalyse trägt zudem dazu bei, die Qualität von Softwareprodukten zu sichern. Es lassen sich Probleme und Abhängigkeiten erkennen, die die Qualität, Performance und Wartbarkeit der Software negativ beeinflussen. Bei Softwareprodukten bestimmter Branchen unterstützt SCA die Erfüllung von Compliance-Richtlinien und gesetzlichen Vorgaben. Software Composition Analysis ist häufig direkt in CI/CD-Pipelines (Continuous Integration/Continuous Deployment) integriert. Das ermöglicht die fortlaufende Überwachung und Analyse der Fremdbestandteile einer Codebasis während des gesamten Softwareentwicklungsprozesses.

SCA-Tools und ihre Funktionen

Zur Unterstützung des Prozesses der Software-Kompositionsanalyse kommen SCA-Tools zum Einsatz. Sie automatisieren die Scan- und Analyseprozesse, gleichen die gewonnenen Informationen automatisch mit Lizenzanforderungen und externen Quellen wie Schwachstellendatenbanken ab und liefern Berichte mit den identifizierten Sicherheitslücken oder etwaigen Lizenzproblemen inklusive Empfehlungen zu deren Behebung. Moderne SCA-Software ist darüber hinaus in der Lage, automatische Bereinigungen gefundener Schwachstellen durchzuführen und Komponenten von Drittanbietern proaktiv zu verwalten. Je nach Tool werden unterschiedlich viele Programmiersprachen und Frameworks unterstützt. Einige SCA-Tools können neben dem Quellcode auch Binärdateien der zu prüfenden Anwendungen scannen und analysieren. SCA-Software lässt sich oft nahtlos in Entwicklungs-Workflows und CI/CD-Pipelines integrieren. Beispiele für SCA-Tools mit teils recht unterschiedlichem Funktionsumfang sind sind Black Duck von Synopsys, Veracode , Xygeni, Snyk, JFrog Xray, Checkmarx, Semgrep oder FOSSA.

Herausforderungen der Software Composition Analysis

Die Software Composition Analysis ist auch mit einigen Herausforderungen verbunden. Zu diesen zählen:

  • Die Implementierung einer kontinuierlichen und umfassenden Software-Kompositionsanalyse in die vorhandenen Workflows kann aufwendig und komplex sein.
  • Komplexe Software-Applikationen mit vielen Abhängigkeiten und Fremdkomponenten erfordern aufwendige und langwierige Analysen.
  • Software-Kompositionsanalysen müssen kontinuierlich erfolgen.
  • Proprietäre Abhängigkeiten werden unter Umständen nicht erfasst oder erkannt.
  • Es ist eine enge Zusammenarbeit zwischen Entwicklungs- und Sicherheitsteams erforderlich.
  • Es kann mit den vielen Warnhinweisen, identifizierten Problemen, Abhängigkeiten oder False-Positive-Meldungen zu einer Überforderung der Entwicklungs- und Sicherheitsteams kommen (Alarm Fatigue).
  • Eine fehlerfreie Software-Kompositionsanalyse bietet keine hundertprozentige Sicherheit, dass keine Schwachstellen enthalten sind, da Schwachstellen­datenbanken, mit denen der Abgleich erfolgt, oft erst zeitverzögert nach der Entdeckung einer Schwachstelle aktualisiert werden.

(ID:50398010)