Entwicklerorientiertes DAST mit Bright Security
14. April 2023
0 Min. LesezeitSicherheitstests gelten zunehmend als wesentlicher Bestandteil des Softwareentwicklungslebenszyklus (SDLC). Traditionell lag der Fokus der agilen Softwareentwicklung auf Entwicklungsgeschwindigkeit, schnellem Feedback vom Markt und der Bereitstellung hochwertiger Produkte und Services. Doch Software, die anfällig für Cyberangriffe ist, bietet Endnutzern keinen Mehrwert und birgt erhebliche Risiken für Kunden und Softwareanbieter. Deshalb ist es entscheidend, Sicherheitstests in den Softwareentwicklungsprozess zu integrieren.
In diesem Artikel zeigen wir, wie Softwaretest-Tools – insbesondere die neue Generation entwicklerorientierter DAST-Tools – Unternehmen dabei helfen können, die Abdeckung ihrer Sicherheitstests zu verbessern, Entwickler zu schulen, einen effektiven Prozess zur Behebung von Schwachstellen einzurichten und sichere Anwendungen zu entwickeln, um kostspielige Sicherheitsvorfälle zu verhindern.
Was sind SAST und DAST?
SAST und DAST sind zwei gängige Methoden für Sicherheitstests von Software.
SAST, kurz für Static Application Security Testing, ist eine Testmethode, bei der der Quellcode einer Anwendung analysiert wird, um Sicherheitslücken zu erkennen. SAST-Tools wie Snyk Code scannen den Quellcode auf häufige Programmierfehler und Sicherheitsprobleme wie Pufferüberläufe, SQL-Injection und Remote Code Execution (RCE). SAST wird üblicherweise während der Entwicklungsphase einer Anwendung eingesetzt und hilft dabei, Schwachstellen früh im Softwareentwicklungslebenszyklus zu erkennen.
DAST, kurz für Dynamic Application Security Testing, ist eine Testmethode, bei der ein Angriff auf eine Anwendung simuliert wird, um Sicherheitslücken zu erkennen. DAST-Tools testen das Verhalten der Anwendung und ihre Interaktionen mit der externen Umgebung, etwa mit Webservices und Datenbanken. DAST wird üblicherweise in einer Staging- oder Produktionsumgebung eingesetzt und hilft dabei, Schwachstellen zu erkennen, die bei SAST möglicherweise übersehen wurden, sowie solche, die nur in einer Live-Umgebung auftreten.
Vorteile und Grenzen von SAST- und DAST-Tools
SAST- und DAST-Tools sind für Entwicklungs- und Application-Security-Fachleute gleichermaßen äußerst nützlich, aber nicht perfekt. Snyk hat einen ausführlicheren Artikel dazu, wie sich mit SAST und DAST gemeinsam einsetzen lassen, um die jeweiligen Lücken zu schließen. Werfen wir zunächst einen kurzen Blick auf die Vor- und Nachteile der beiden Technologien.
Vorteile von SAST:
Früherkennung von Schwachstellen: SAST kann Schwachstellen früh im Softwareentwicklungslebenszyklus erkennen. Entwickler können Probleme dadurch beheben, sobald sie auftreten, und vermeiden die Kosten einer späteren Behebung im Entwicklungszyklus oder – noch schlimmer – nach der Bereitstellung der Anwendung.
Integration in Entwicklungsprozesse: SAST-Tools lassen sich in den Entwicklungsprozess integrieren und ermöglichen kontinuierliche Tests sowie die automatisierte Erkennung von Schwachstellen. Das kann im Vergleich zu manuellen Sicherheitstests Zeit und Ressourcen sparen.
Anpassbare Regelsätze: SAST-Tools lassen sich mit spezifischen Regelsätzen für jede Anwendung anpassen, sodass anwendungsspezifische Schwachstellen erkannt werden können. Diese Anpassungsmöglichkeiten stellen sicher, dass das Tool Probleme erkennt, die für die jeweilige Anwendung relevant sind.
Nachteile von SAST:
Begrenzte Auswahl an erkennbaren Problemen: SAST-Tools können nur bestimmte Arten von Schwachstellen erkennen und übersehen möglicherweise komplexere oder weniger offensichtliche Schwachstellen. Dadurch können manche Schwachstellen unentdeckt bleiben und eine Anwendung Angriffen aussetzen.
Abhängigkeit von statischen Eingaben: SAST-Tools arbeiten mit statischen Eingaben und können daher nur den Code analysieren, der ihnen vorliegt. Verwendet eine Anwendung dynamische Eingaben, etwa von Nutzern eingegebene Daten, kann SAST möglicherweise keine Schwachstellen erkennen, die sich aus diesen dynamischen Eingaben ergeben.
False Positives: SAST-Tools können False Positives erzeugen, die Zeit und Ressourcen verschwenden. Dazu kommt es, wenn das Tool ein Problem erkennt, das tatsächlich keine Schwachstelle ist oder nicht aktiv ausgenutzt werden kann. False Positives können Entwickler frustrieren und ihr Vertrauen in das Tool untergraben.
Vorteile von DAST:
Realitätsnahe Abbildung von Angriffsszenarien: DAST bildet reale Angriffsszenarien realitätsnah ab, da das Verhalten einer Anwendung in einer Live-Umgebung getestet wird. So lassen sich Schwachstellen erkennen, die bei SAST möglicherweise unentdeckt geblieben sind.
Unabhängig vom Entwicklungsprozess: DAST-Tests sind unabhängig vom Entwicklungsprozess. Sie können daher für eine bereitgestellte Anwendung durchgeführt werden, ohne Zugriff auf den Quellcode zu benötigen. Das macht DAST ideal für das Testen von Drittanbieteranwendungen.
Umfassende Testabdeckung: DAST bietet eine umfassende Testabdeckung, da die Interaktionen einer Anwendung mit ihrer Laufzeitumgebung getestet werden, etwa mit Webservices, Datenbanken und APIs.
Nachteile von DAST:
Probleme sind mitunter schwieriger zu priorisieren: DAST-Tests können gelegentlich Probleme aufdecken, die sich über mehrere Komponenten der Anwendung erstrecken (etwa Probleme bei der Bereinigung von Eingaben und Ausgaben). Teams benötigen dann möglicherweise mehr Zeit, um das Problem zu priorisieren und zu beheben.
Abhängigkeit von Laufzeitumgebungen: DAST-Tests sind von der Laufzeitumgebung der Anwendung abhängig. Daher können sie möglicherweise keine Schwachstellen erkennen, die nur in bestimmten Laufzeitumgebungen auftreten. Das kann zu False Negatives und einem falschen Sicherheitsgefühl führen.
Späte Implementierung: Da DAST eine laufende Instanz der Anwendung benötigt, um ihr Verhalten in einer Live-Umgebung zu testen, wird es üblicherweise erst gegen Ende des Entwicklungsprozesses eingeführt. DAST kann also erst beginnen, wenn die Anwendung vollständig entwickelt und in einer Produktions- oder Staging-Umgebung bereitgestellt wurde – potenzielle Probleme bleiben dadurch zunächst unentdeckt.
Was ist entwicklerorientiertes DAST und wie kann es SAST ergänzen?
Entwicklerorientiertes DAST ist eine Form von DAST-Tests, bei der Sicherheitstests in den Softwareentwicklungslebenszyklus integriert werden. Ziel ist es, Sicherheitstests im Entwicklungsprozess nach links zu verlagern, damit Schwachstellen früh im Entwicklungszyklus erkannt und behoben werden können.
Gemeinsam eingesetzt bieten entwicklerorientiertes DAST und SAST einen umfassenderen Ansatz für Sicherheitstests von Anwendungen.
SAST wird üblicherweise in den frühen Phasen des Entwicklungsprozesses eingesetzt, wenn Entwickler Code schreiben. Dabei wird der Quellcode der Anwendung auf Schwachstellen wie SQL-Injection geprüft. So können Entwickler potenzielle Sicherheitsprobleme erkennen und beheben, bevor der Code kompiliert und bereitgestellt wird. SAST hat jedoch Grenzen und kann bestimmte Schwachstellen möglicherweise nicht erkennen, die erst in der laufenden Anwendung sichtbar werden.
Entwicklerorientiertes DAST hingegen testet die laufende Anwendung und kann Schwachstellen erkennen, die SAST möglicherweise übersieht, etwa im Zusammenhang mit Eingabevalidierung, Konfiguration und Authentifizierung. Entwicklerorientiertes DAST lässt sich in den Entwicklungsprozess integrieren, sodass Entwickler die Anwendung bereits während ihrer Entwicklung testen können. Dadurch erhalten sie sofortiges Feedback zur Sicherheit ihres Codes und können Schwachstellen schnell beheben.
Durch die Kombination von SAST und entwicklerorientiertem DAST können Unternehmen Schwachstellen sowohl im Quellcode als auch in der laufenden Anwendung erkennen und beheben. Das ermöglicht ein vollständigeres Bild der Sicherheitslage. Außerdem hilft dieser Ansatz Unternehmen dabei, Compliance-Anforderungen zu erfüllen und das Risiko von Sicherheitsvorfällen und Datenverlust zu verringern.
5 Best Practices für die Umsetzung einer entwicklerorientierten DAST-Strategie
Bei der Umsetzung einer entwicklerorientierten DAST-Strategie werden Sicherheitstests in den Softwareentwicklungslebenszyklus integriert. Damit das effektiv gelingt, sollten Unternehmen einige Best Practices befolgen:
DAST in den Entwicklungsprozess integrieren: DAST sollte in den gesamten Entwicklungsprozess integriert werden, damit Entwickler ihren Code direkt nach der Erstellung auf Sicherheitslücken testen können. Dazu müssen automatisierte DAST-Tools eingesetzt werden, die sich in die Entwicklungsumgebung integrieren lassen.
Schwachstellen priorisieren: Sobald Schwachstellen erkannt werden, sollten sie anhand ihres Schweregrads und ihrer potenziellen Auswirkungen priorisiert werden. So ist sichergestellt, dass die kritischsten Schwachstellen zuerst behoben werden.
Entwickler in Best Practices für Sicherheit schulen: Entwickler sollten in Best Practices für Sicherheit geschult werden, etwa in sicheren Programmiertechniken, damit sie sichereren Code schreiben. So lassen sich Schwachstellen von vornherein vermeiden.
Einen Prozess zur Behebung von Schwachstellen einrichten: Für die Behebung von Schwachstellen, die durch entwicklerorientiertes DAST erkannt werden, sollte ein Prozess eingerichtet werden. Dazu gehören die Überprüfung, ob Schwachstellen behoben wurden, und erneute Tests der Anwendung, um sicherzustellen, dass die Korrekturen wirksam sind.
Fortschritte überwachen und nachverfolgen: Die Fortschritte sollten im Zeitverlauf überwacht und nachverfolgt werden, um sicherzustellen, dass die entwicklerorientierte DAST-Strategie wirksam ist. Dazu können Kennzahlen wie die Anzahl erkannter Schwachstellen, die Dauer ihrer Behebung und die allgemeine Sicherheitslage der Anwendung herangezogen werden.
Mit diesen Best Practices können Unternehmen eine wirksame und effiziente entwicklerorientierte DAST-Strategie umsetzen. Dieser Ansatz kann die allgemeine Sicherheitslage der Anwendung verbessern, das Risiko von Sicherheitsvorfällen und Datenverlust verringern und Unternehmen dabei helfen, Compliance-Anforderungen zu erfüllen.
SAST und DAST modernisieren
Sicherheitstests von Software sind unerlässlich, um sicherzustellen, dass Anwendungen sicher und vor Cyberangriffen geschützt sind. Entwicklerorientiertes DAST ist ein Ansatz für dynamische Tests, bei dem Sicherheitstests in den Softwareentwicklungsprozess integriert werden. Durch die Automatisierung von Sicherheitstests und ihre Einbindung in die Continuous-Integration- und Delivery-Pipeline (CI/CD) erhalten Entwickler mit entwicklerorientiertem DAST schnell Feedback zu potenziellen Sicherheitsproblemen. Dadurch können sie Schwachstellen in Echtzeit beheben, die Auswirkungen von Sicherheitsproblemen minimieren und das Risiko verringern, dass Schwachstellen unentdeckt bleiben.
