Skip to main content

SAST und SCA: Gemeinsam mit Snyk noch besser

Artikel von
feature snyk code orange

10. Februar 2022

0 Min. Lesezeit

Je komplexer Anwendungen werden, desto anspruchsvoller wird auch ihre Absicherung.

Der Quellcode von Anwendungen besteht nicht nur aus proprietärem Code, sondern zu einem großen Teil auch aus Code von Drittanbietern und Open-Source-Code. Entwicklungs- und Sicherheitsteams, die sicheren Code veröffentlichen und zugleich ein hohes Entwicklungstempo beibehalten möchten, müssen daher statische Anwendungssicherheitstests (SAST) und Software Composition Analysis (SCA) als Teil einer umfassenden Softwaresicherheitsstrategie kombinieren.

Das ist allerdings leichter gesagt als getan.

Als ältere und etabliertere Testmethode galt SAST traditionell als naheliegender Einstieg in die Anwendungssicherheit. Praktikerinnen und Praktiker können aus einer Vielzahl von SAST-Tools wählen, zu denen es gut dokumentierte Methoden und Best Practices gibt. SAST-Lösungen haben jedoch einen schlechten Ruf, wenn es um Geschwindigkeit, Genauigkeit und allgemeine Benutzerfreundlichkeit geht. Diese Nachteile können Teams davon abhalten, SAST einzusetzen, oder sie dazu bewegen, stattdessen SCA zu wählen.

Bei herkömmlichen SCA-Lösungen sieht es ähnlich aus: Sie lassen sich oft nur schwer integrieren und weisen eine hohe Rate falsch positiver Ergebnisse auf. Zwar haben Schwachstellen in Open-Source-Paketen dazu beigetragen, SCA stärker in den Fokus zu rücken, doch die Verbreitung von SCA ist nach wie vor gering: Nur 38 % der Unternehmen bestätigen, Sicherheitskontrollen für Open Source einzusetzen. Und obwohl SCA Ihre Abhängigkeiten (und deren Abhängigkeiten) scannt, kann es keine Schwachstellen in dem von Ihnen geschriebenen Code finden.

Doch SAST und SCA unabhängig voneinander einzusetzen, steht im Widerspruch zum zunehmenden Bestreben von Unternehmen, die Tool-Vielfalt zu reduzieren und ihre Anwendungssicherheitstools zu konsolidieren. Daher lautet die typische Überlegung oft SAST oder SCA, statt SAST und SCA als kombinierten Ansatz zu betrachten.

In diesem Beitrag erfahren Sie, warum SAST und SCA der richtige Ansatz sind und wie Sie beide Methoden einsetzen, ohne die Tool-Vielfalt zu erhöhen.

Was ist der Unterschied zwischen SAST und SCA?

Wenn Sie den Unterschied zwischen SAST und SCA verstehen, sind Sie einem kombinierten Ansatz einen großen Schritt näher.

Wofür wird SAST eingesetzt?

SAST ist eine strukturierte Methode für Anwendungssicherheitstests. Sie scannt den Quell- oder Bytecode einer Anwendung auf Sicherheitslücken, etwa aus den OWASP Top 10 und CWEs. Neben Quell- und Bytecode können auch weitere Quellen wie Dokumentationen und Spezifikationen geprüft werden. Moderne SAST-Tools wandeln den Originalcode in eine Zwischendarstellung um und führen mithilfe verschiedener Testverfahren und eines Regelsatzes Tests durch, die üblicherweise auf einem logischen Solver basieren.

Der Vorteil von SAST: Es deckt alle möglichen Pfade und Zustände einer Anwendung ab und entdeckt sogar Fehler, nach denen Entwicklerinnen und Entwickler ursprünglich nicht gesucht haben. Werden solche Probleme gefunden, sollten ihr genauer Ort oder der Pfad durch die Anwendung angegeben werden – einschließlich Dateinamen und Zeilennummern sowie zusätzlicher Informationen zum Problem.

Ein Nachteil herkömmlicher SAST-Tools ist, dass der Anbieter einen Kompromiss zwischen dem Erkennen tatsächlicher Probleme, dem Aufspüren aller möglichen Probleme und dem benötigten Rechenaufwand finden muss. Die Tools überschätzen daher das Verhalten von Anwendungen und nehmen eine gewisse Rate falsch positiver Meldungen und übersehener Probleme in Kauf, um Rechenzeit zu sparen. Trotzdem kann der Scan größerer Projekte mit herkömmlichen SAST-Tools Tage oder sogar Wochen dauern.

Wofür wird SCA eingesetzt?

Moderne Anwendungen verwenden Dutzende, wenn nicht Hunderte von Open-Source-Paketen, die oft als Abhängigkeiten bezeichnet werden. Tatsächlich enthalten 98 % der Anwendungen Open-Source-Software. Diese Abhängigkeiten stützen sich wiederum auf weitere Open-Source-Pakete, sogenannte transitive Abhängigkeiten. Open-Source-Pakete decken vielfältige Aufgaben ab – von einfachen Funktionen wie der Textformatierung bis hin zu komplexen Frameworks und Laufzeitumgebungen.

Eine bewährte Vorgehensweise ist, Open-Source-Pakete als Einheit zu behandeln. Patches oder Codeänderungen sind willkommen, sofern sie an das Paket zurückgegeben und in dieses übernommen werden. Lokale Änderungen beeinträchtigen die Paketversionierung und können überschrieben werden, wenn eine neue Paketversion heruntergeladen wird.

SCA ist eine Methode zur Anwendungssicherheit, die Anwendungen auf direkt oder indirekt verwendete Open-Source-Abhängigkeiten scannt und die Ergebnisse mit Schwachstellendaten abgleicht, um bekannte Sicherheitslücken in diesen Abhängigkeiten aufzuspüren. Werden Schwachstellen gefunden, werden sie mit Informationen zur jeweiligen Sicherheitslücke und in manchen Fällen auch mit einer empfohlenen Korrektur gekennzeichnet. Wichtig ist außerdem, dass SCA das rechtliche Risiko durch die Verwendung von Open Source ermittelt, indem es die Lizenzen in den Open-Source-Paketen identifiziert.

Warum Sie SAST und SCA gemeinsam einsetzen sollten

Aufgrund der funktionalen Unterschiede zwischen den beiden Testmethoden ist klar: Ein direkter Vergleich ist nicht sinnvoll.

Zwar haben beide Methoden einige Gemeinsamkeiten – etwa, dass sie früh im Entwicklungsprozess zum Einsatz kommen und Quellcode prüfen –, doch sie decken zwei unterschiedliche Arten von Code ab, aus denen sich eine Anwendung zusammensetzt. SAST hilft, die Risiken des intern geschriebenen Codes zu mindern, während SCA die Risiken von Code reduziert, der außerhalb des Unternehmens entwickelt wurde.

Ein wirksamer Ansatz für Anwendungssicherheit sollte daher Sicherheitstest-Tools umfassen, mit denen sich beide Risikoarten verwalten und mindern lassen. So erhalten Sie einen umfassenden Überblick über proprietären Code und Open-Source-Komponenten, können Probleme früher und während des gesamten Entwicklungslebenszyklus erkennen und beheben und reduzieren damit insgesamt das Risiko.

Wichtige Voraussetzungen für einen kombinierten Ansatz

Die Entscheidung für einen kombinierten Ansatz fällt nicht leicht. Sowohl SAST als auch SCA in ein Anwendungssicherheitsprogramm zu integrieren, kann kulturell und technisch herausfordernd sein.

Das DevSecOps-Modell sieht vor, dass Entwicklerinnen und Entwickler mehr Verantwortung für die Sicherheit übernehmen. Frühere und aktuelle Erfahrungen mit herkömmlichen Lösungen erschweren es jedoch, eine Testmethode zu etablieren – geschweige denn zwei. Manche Teams stehen möglicherweise auch dem Einsatz eines weiteren Sicherheitstools neben den bereits verwendeten Tools skeptisch gegenüber.

Eine naheliegende Lösung könnte sein, die SAST- und SCA-Tools in die CI/CD-Pipeline zu integrieren und die Ergebnisse an die Entwicklungsteams zurückzuspielen. Dadurch wird der Prozess jedoch entkoppelt, und Bereitstellungen müssen warten, bis Scans und Korrekturen abgeschlossen sind. In der agilen DevOps-Welt ist es schlicht keine praktikable Option, eine Veröffentlichung wochenlang zu verzögern.

Damit ein kombiniertes Anwendungssicherheitsprogramm erfolgreich ist, braucht es daher vor allem entwicklerfreundliche Lösungen. Entwicklerinnen und Entwickler nutzen eher SAST- und SCA-Tools, die sich schnell, einfach und frühzeitig in bestehende Entwicklungsabläufe integrieren lassen, als langsame, schwer bedienbare Tools, die erst in späteren Entwicklungsphasen eingesetzt werden können.

Ein konsolidierter Workflow, in dem SAST- und SCA-Scans gleichzeitig oder im selben Tool ausgeführt werden, reduziert außerdem die Komplexität für Entwicklerinnen und Entwickler und die Gesamtkosten für die Sicherheit.

Der Ansatz von Snyk: Snyk Code und Snyk Open Source

Die Snyk-Plattform bietet einen kombinierten Ansatz für SAST und SCA, mit dem sich alle unterschiedlichen Bestandteile moderner Anwendungen sicher und schnell entwickeln lassen.

Gemeinsam bieten Snyk Code für SAST und Snyk Open Source für SCA einfache, schnelle und präzise Tests, bei denen Sie sich selbst helfen können. So finden, priorisieren und beheben Entwicklungs- und Sicherheitsteams Sicherheitsprobleme im proprietären Code sowie bekannte Schwachstellen in Open-Source-Abhängigkeiten – und reduzieren Risiken, während sie die sichere Entwicklung beschleunigen.

Die Anwendung wird korrigiert, bevor sie in die CI/CD-Pipeline gelangt. So entfallen Verzögerungen durch Scans und der Aufwand für die Bewertung und Meldung von Problemen. Gleichzeitig kann sich das Anwendungssicherheitsteam auf die allgemeine Sicherheitslage des Unternehmens konzentrieren.

Die konsolidierten Tests von Snyk finden früh und über den gesamten Entwicklungslebenszyklus hinweg statt, zum Beispiel direkt in der IDE:

Eine JetBrains-IDE zeigt Java-Code sowie die Scan-Ergebnisse von Snyk SAST und SCA an, darunter schwerwiegende Passwort-Schwachstellen und Probleme mit der Codequalität.
Ein Tool, zwei Scanmethoden: Das JetBrains-IDE-Plugin von Snyk im Einsatz.

Scans laufen schnell, und die Ergebnisse werden direkt in der Entwicklungsumgebung mit klaren, verständlichen Erklärungen angezeigt. Ein Datenfluss durch die Anwendung wird zusammen mit dem Originalcode dargestellt und lässt sich auch über mehrere Dateien hinweg verfolgen. Beispiele aus Open-Source-Projekten zeigen, wie andere dasselbe Problem in einem ähnlichen Kontext gelöst haben. Und das Beste: Da die Scans schnell und unbegrenzt möglich sind, können Entwicklerinnen und Entwickler kleine Änderungen häufig prüfen und Probleme beheben, bevor sie in die Versionsverwaltung des Quellcodes gelangen.

Snyk führt konsolidierte Scans auch in späteren Entwicklungsphasen automatisch durch. Wenn Sie beispielsweise ein neues Projekt aus GitHub importieren, testet Snyk den Quellcode im Repository automatisch mit SAST (1) und SCA (2):

Snyk Projects-Dashboard mit konsolidierten Codeanalyse- und package.json-Scan-Ergebnissen für ein importiertes Projekt.
Ein in Snyk importiertes Projekt. Ergebnisse von SAST- und SCA-Scans in einer konsolidierten Ansicht.

Die Snyk-Plattform basiert auf der Snyk Intel Vulnerability Database. Sie vereint mehrere öffentliche Quellen, Rückmeldungen aus der großen Entwickler-Community von Snyk und die Arbeit des eigenen Forschungsteams von Snyk. So bietet sie die umfassendsten, aktuellsten und verwertbarsten Schwachstellendaten auf dem Markt. Das sorgt für präzise Scan-Ergebnisse und passende Empfehlungen zur Behebung.

Die Snyk-Benutzeroberfläche ermöglicht es Entwicklungs- und Sicherheitsteams, ihre Codebasis regelmäßig auf neu entdeckte Schwachstellen zu prüfen. Bei der kürzlich bekannt gewordenen Log4shell-Schwachstelle konnten Snyk-Nutzerinnen und -Nutzer beispielsweise mit Snyk Open Source schnell und einfach ihre gesamte Anwendungs-Codebasis scannen, anfällige Repositorys identifizieren und entsprechend handeln. Mit PR-Prüfungen oder der Integration von Snyk in eine CI/CD-Pipeline lassen sich diese Tests automatisieren und verbindlich machen.

Snyk wird weder pro Scan noch pro Codezeile oder Projekt lizenziert. Anwendungssicherheitsteams müssen ihre Scans nicht aufgrund von Lizenzkosten auf zentrale Projekte oder eine bestimmte Scan-Häufigkeit beschränken. Sie können so viel Code so oft scannen, wie sie möchten.

Schließlich scannt die Snyk-Plattform auch Container und Infrastructure as Code (wie Sie vielleicht in einem früheren Screenshot gesehen haben) und bietet so einen ganzheitlichen Überblick über alle Bestandteile einer Anwendung.

Das Ergebnis … beides

SAST und SCA ergänzen sich ideal und verschaffen Unternehmen einen vollständigen Überblick über sämtliche verwendete Software.

Die Absicherung moderner Anwendungen muss ebenso agil sein wie die Prozesse, mit denen sie entwickelt werden. Beide Tools zu verwenden, ist inzwischen ein De-facto-Standard für Anwendungssicherheit und zunehmend auch eine Voraussetzung, um verschiedene regulatorische Vorgaben wie PCI DSS sowie staatliche Initiativen weltweit einzuhalten, die sich mit Anwendungssicherheit und der Zunahme von Supply-Chain-Angriffen auf Software befassen.

Unternehmen, die sichere Anwendungen bereitstellen möchten, sollten nicht aufgrund früherer Erfahrungen, einer einseitigen Bevorzugung oder begrenzter Budgets zwischen den Methoden wählen müssen. SAST und SCA bieten unverzichtbare, umfassende Einblicke in den GESAMTEN Quellcode einer Anwendung und sollten daher zentrale Bestandteile jedes Anwendungssicherheitsprogramms sein.

Sie wissen nicht, wie Sie mit SAST und SCA loslegen sollen? Testen Sie Snyk kostenlos!

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.