Wie wählt man das richtige Software Composition Analysis (SCA) Tool?

Software Composition Analysis (SCA)-Tools identifizieren Risiken im Code, die Entwickler leicht übersehen können, und spielen so eine wichtige Rolle bei der Vermeidung von Sicherheitsrisiken und Open Source-Lizenzierungs-Risiken. Dieser Artikel beschreibt die Funktionsweise von SCA-Tools und liefert Tipps, worauf Sie beim Vergleichen von SCA-Lösungen achten sollten.

Was ist Software Composition Analysis?

Unter Software Composition Analysis versteht man den Einsatz automatisierter Tools zur Identifizierung von Open-Source-Komponenten innerhalb der Codebasis einer Anwendung. SCA-Tools scannen die Software, stellen fest, welche Abhängigkeiten und andere Bestandteile in ihr vorhanden sind, und ermitteln dann die ursprünglichen Quellen dieser Komponenten.  Auf diese Weise ermitteln SCA-Tools, welche Teile einer Codebasis aus Drittanbieter-Quellen stammen.

Warum ist SCA wichtig?

Software Composition Analysis ist aus zwei Gründen wichtig:

Erstens hilft sie Unternehmen, Sicherheitsrisiken zu vermeiden, die mit der Weiterverwendung von Open-Source-Code verbunden sind, der möglicherweise bekannte Schwachstellen enthält. SCA-Tools können die Verwendung unsicherer Module oder Abhängigkeiten innerhalb einer Anwendung identifizieren. Sie sind auch in der Lage, Fälle zu registrieren, in denen ein Entwickler unsicheren Code in eine Applikation kopiert.

Zweitens hilft SCA den Entwicklern sicherzustellen, dass sie die Softwarelizenzen einhalten, die für den von ihnen genutzten Quellcode gelten. Es gibt mehr als 80 Open Source-Lizenzen, die jeweils unterschiedliche Regeln und Bedingungen für die Weiterverwendung des Code enthalten. Mit SCA-Tools können Entwickler automatisiert feststellen, welche Lizenzen für ihren Code gelten, und eventuelle Verletzungen der Lizenzbestimmungen beheben.

Beide Aspekte – das Aufspüren von unsicheren Quellcodes und die Identifizierung von Lizenzproblemen – sind angesichts der weit verbreiteten Weiterverwendung von Open-Source-Code in Applikationen heute besonders wichtig. Allein GitHub beherbergt mehr als 128 Millionen öffentliche Repositories, die Code enthalten, den jeder einfach per Copy-and-Paste in eine Anwendung einfügen kann. Doch nur weil Entwickler Code übernehmen können, bedeutet dies nicht immer, dass dies auch sicher ist. Es bedeutet auch nicht, dass die mit dem Code verbundene Lizenz ihnen das Recht gibt, den Code so zu verwenden, wie sie es sich vorstellen. Indem sie den Quellcode bis zu seiner Quelle zurückverfolgen, lösen SCA-Tools diese beiden Probleme.

SCA-Tools sind heute auch deshalb besonders wichtig, weil Sicherheitsrisiken in der Supply Chain häufig auftauchen. Sicherheitsrisiken in der Supply Chain entstehen, wenn ein Unternehmen unsichere Software von Dritten in die eigenen Anwendungen übernimmt. SCA-Tools ermöglichen es Entwicklern, ihre Anwendungen automatisch zu scannen und Fälle zu identifizieren, in denen sie versehentlich gefährlichen Code aus einer externen Quelle importiert haben könnten.

Welche Arten von Risiken können SCA-Tools erkennen?

SCA-Tools können eine ganze Reihe unterschiedlicher Gefahren in Open-Source-Software aufspüren. Zu den gängigsten zählen, wie bereits erwähnt, Module oder Abhängigkeiten, die mit bekannten Schwachstellen behaftet sind. SCA-Tools können auch Malware erkennen, die in den Quellcode eingeschleust ist. Das könnte passieren, wenn sich ein Angreifer Zugang zu den CI/CD-Tools eines Unternehmens verschafft und diese dazu benutzt, Schadcode in eine Anwendung einzuschleusen.

Darüber hinaus können SCA-Tools, wie bereits erwähnt, potenzielle Softwarelizenz-Verletzungen erkennen. Sie sind zwar nicht in der Lage, den Entwicklern mitzuteilen, ob sie eine bestimmte Softwarelizenz erfüllen, aber sie können die Entwickler auf Open-Source-Lizenzen hinweisen, die für die von ihnen verwendeten Anwendungen gelten. Im Gegenzug können Entwickler oder Open-Source-Software-Compliance-Manager die Lizenzen überprüfen, um sicherzugehen, dass der Code rechtmäßig verwendet wird.

Es ist wichtig zu erwähnen, dass SCA-Tools nicht jede Art von Security- oder Lizenzierungsrisiko identifizieren können. Im Allgemeinen sind SCA-Tools nur in der Lage, Risiken im Zusammenhang mit Open-Source-Code zu identifizieren. Wenn Entwickler proprietären Code von Drittanbietern in eine Anwendung importieren, ist es unwahrscheinlich, dass dieser Code Teil der Datenbanken ist, die SCA-Tools nutzen, um die Herkunft des Quellcodes zu ermitteln. Daher sind die Tools nicht in der Lage, den Code zu bestimmen.

Tipps für die Auswahl eines SCA-Tools

Mit der zunehmenden Verwendung von Open-Source-Software in verschiedenen Codebasen ist auch die Auswahl an SCA-Tools auf dem Markt schnell gestiegen. Aber nicht alle SCA-Tools bieten die gleichen Funktionen und decken die gleichen Aufgaben ab. Bei der Auswahl von SCA-Tools sollten Sie auf die folgenden Features achten:

Breite Sprachen-Unterstützung: Wählen Sie, wenn möglich, ein SCA-Tool, das alle Arten von Programmiersprachen und Frameworks unterstützt, und nicht solche, die nur mit ausgewählten Sprachen arbeiten.

Unterstützung für Binär- und Quellcode-Scans: Während manche SCA-Tools nur mit Quellcode arbeiten können, sind die besseren SCA-Tools in der Lage, sowohl Quellcode als auch Binärdateien von Applikationen zu scannen, um riskante Komponenten zu identifizieren. Durch die Möglichkeit, Binärdateien zu scannen, bekommen Teams Einblick in Softwarepakete mit geschütztem Quellcode (z. B. Anwendungen von Drittanbietern), deren Quellcode normalerweise nicht verfügbar ist.

Automatisierte Codebase-Scans: Anstelle von SCA-Tools, die manuell ausgeführt werden müssen oder die Codebasen Datei für Datei analysieren, sollten Sie nach Tools suchen, die eine gesamte Codebase automatisch und kontinuierlich prüfen können. Dadurch kann Code automatisch gescannt werden, sobald er in die Codebasis aufgenommen wird, selbst wenn Sie mit komplexen Anwendungen arbeiten, deren Quellcode-Dateien sehr umfangreich sind.

CI/CD-Integration: SCA-Tools, die eine CI/CD-Integration unterstützen, können den SCA-Prozess optimieren, indem sie Code direkt in Continuous Integration (CI)-Servern oder Artefakt-Repositories scannen. So hilft die CI/CD-Integration den Entwicklern, Probleme so früh wie möglich im Software-Entwicklungszyklus zu erkennen.