Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

SAST vs DAST: Wie man sie zusammen und nicht getrennt verwendet

SAST vs DAST: Wie man sie zusammen und nicht getrennt verwendet Lesezeit: 6 Minuten
Beim Vergleich von SAST mit DAST sagen Entwickler oft, dass sie sich gegenseitig ergänzen, empfehlen dann aber nur, beide zu verwenden, was nicht unbedingt komplementär ist, sondern nur zwei verschiedene Dinge tut. Aber du kann Kombinieren Sie SAST und DAST für AppSec auf komplementäre Weise und maximieren Sie den Wert von SAST für Ihr Unternehmen, indem Sie DAST nutzen.

Das Potenzial für echte Synergien zwischen SAST und DAST ergibt sich aus Ihren SAST- und DAST-Tools, die sich gegenseitig auf eine Weise unterstützen, die wirklich zum Kern der Secure-by-Design-Anwendungssicherheitsmethodik beiträgt. Es ist also nicht wirklich SAST gegen DAST, sondern DAST-informiertes SAST. Wie funktioniert das?

Beginnen wir mit den Grundlagen dieser beiden Methoden zum Testen der Anwendungssicherheit.

Was ist SAST?

SAST ist Statische Anwendungssicherheitstestsdh eine Anwendung analysieren, ohne sie auszuführen. Es gibt verschiedene Möglichkeiten, dies zu tun, von der Überprüfung durch den Menschen über die Metrikanalyse über die Musteranalyse bis hin zur Datenflussanalyse. Dies wird als White-Box-Test angesehen. Am häufigsten befassen sich SAST-Benutzer mit der Datenflussanalyse, da sie vor Abschluss der Anwendung nach Sicherheitslücken wie fehlerhaften Daten suchen können.

In den frühen Tagen der statischen Analyse wurde viel Wert darauf gelegt, nicht nur Fehler zu finden, sondern auch verdächtige oder riskante Codekonstrukte zu finden (siehe Meyer's Effektives C ++) sowie die Durchsetzung von Software-Engineering-Standards. In der Sicherheitswelt bedeutet SAST hauptsächlich Flussanalyse. Im Wesentlichen wird SAST verwendet, um Schwachstellen zu finden, ähnlich wie bei DAST, jedoch früher im SDLC.

Vorteile von SAST

Frühere Tests sind besser, weil es kostet viel wenigerDer Hauptvorteil von SAST besteht also darin, dass dies früher erfolgen kann - lange bevor die gesamte Anwendung oder das gesamte System bereit ist. Mit SAST verfügen Sie über umfassende interne Kenntnisse des Codes, sodass Sie genau wissen, welcher Code mit einem Problem verbunden ist.

Nachteile von SAST

Auf der anderen Seite sind Ihre Tests mit SAST nicht gegen ein reales System gerichtet, und Tools müssen Daten synthetisieren, um die Abdeckung einer Funktion oder eines Datenpfads zu verbessern. Aus diesem Grund besteht bei SAST-Tools das Risiko, dass a zurückgegeben wird falsch positiver Berichtwas bedeutet, dass sie kann Sagen Sie, dass ein Code eine Sicherheitslücke aufweist, wenn er tatsächlich sicher ist. Darüber hinaus sind SAST-Tools normalerweise spezifisch für eine bestimmte Sprache. Dies macht die Erstellung und Wartung für Unternehmen teuer (in erster Linie ein Problem für Tool-Anbieter) und bedeutet, dass Sie Tools für jede in Ihren Anwendungen verwendete Sprache benötigen.

Was ist DAST?

DAST ist Dynamische Anwendungssicherheitstests. Dies bedeutet, dass eine funktionierende Anwendung (oder ein funktionierendes Gerät) normalerweise über ihre Eingänge und Schnittstellen getestet wird. Oft handelt es sich dabei um Black-Box-Tests in dem Sinne, dass Sie die Anwendung verwenden, ohne sich eingehend mit ihren Interna (Quellcode) zu befassen.

Vorteile von DAST

Der größte Vorteil von DAST ist, dass es sich offensichtlich um realistische Tests handelt, bei denen die gesamte Anwendung und / oder das gesamte System von Ende zu Ende berücksichtigt werden. Zweitens hängen DAST-Tests nicht von umfassenden Code-Kenntnissen ab, und die Tools erfordern keine spezifische Unterstützung für jede Sprache.

Nachteile von DAST

Der große Nachteil von DAST ist andererseits, dass es keine tiefen Kenntnisse Ihres Codes beinhaltet. Wenn Sie also ein Problem finden, kann es einige Zeit und Mühe dauern, um genau einzugrenzen, welcher zugrunde liegende Code das Problem verursacht.

Darüber hinaus ist DAST eine „Test“ -Technologie, dh sie erfolgt nach dem Entwurf und der Codierung. Es ist also eine sehr gute Möglichkeit, um zu überprüfen, ob eine Anwendung sicher ist. Wenn dies jedoch die primäre Methode zum Sichern der Software ist, versuchen Sie wirklich, die Sicherheit Ihrer Anwendung zu testen, was eine Sisyphus-Aufgabe ist. Sie können die Sicherheit einer Anwendung nicht mehr testen als die Qualität einer Anwendung - deshalb mögen neue Vorschriften DSGVO Die bevorstehenden FDA-Richtlinien basieren auf der Security-by-Design-Methode.

Ergänzen Sie DAST mit SAST

Jetzt, da Sie den Unterschied zwischen DAST und SAST und einige ihrer Vor- und Nachteile kennen, ist es Zeit zu sehen, wie Sie sie zusammenarbeiten lassen können. Aber warum sollten Sie das überhaupt tun wollen?

Mit einer starken SAST-Strategie, die Früherkennungsprüfer für Schwachstellen wie CWE sowie sichere Codierungsstandards wie CERT Dies ist der vollständigste Weg, um eine Anwendung zu sichern und zu verhindern, dass immer wieder dieselben Sicherheitsprobleme auftreten. Um DAST zu ergänzen, können wir SAST mit dem verbinden, was DAST tut, und unsere SAST-Aktivitäten mit Informationen aus DAST informieren.

Um besser zu verstehen, wie es funktioniert, stelle ich mir Software gerne wie eine Montagelinie vor und beginne am Ende der Linie mit einem dreistufigen Verbesserungsprozess für die Sicherheit. Phase 3 ist besser als nichts, aber bei weitem nicht so gut wie Phase 1.

Sicherheitstests vor der Veröffentlichung (Phase 1)

Die erste Phase der Anwendungssicherheit ist DAST. Aus Gründen der Anwendungssicherheit nehmen wir die endgültige Anwendung, erstellen sie vor der Veröffentlichung und versuchen, auf jede erdenkliche Weise in sie einzudringen - das ist DAST. Wenn wir etwas finden, bewerten wir, wie böse es ist, und beheben es, wenn wir können, und geben es frei, wenn wir müssen. Es gibt ein großes Thema an sich um dieses Problem (Veröffentlichung von Software mit bekannten Schwachstellen und Schwachstellen), aber ich werde das für einen weiteren Tag belassen.

Da diese Tests am Ende stattfinden, gibt es immer Zeitdruck und zusätzliche Schwierigkeiten beim Auffinden und Beheben des zugrunde liegenden Problems. Es ist jedoch definitiv besser, diese Tests durchzuführen, als sie überhaupt nicht durchzuführen. Es ist also ein guter Anfang.

Früherkennung - Verlagerung der Sicherheit nach links (Phase 2)

In der zweiten Phase auf dem Weg zur Verbesserung der Anwendungssicherheit wird SAST hinzugefügt, um das Problem des späten Zyklus anzugehen. Wie können wir mit Sicherheitstests beginnen, bevor die Anwendung bereit ist? SAST ist unsere offensichtliche Antwort. SAST-Checker können ausgeführt werden, sobald wir Code haben. Datenflussprüfer in SAST können normalerweise direkt mit den Problemen korreliert werden, die DAST findet. Daher ist es einfach zu wissen, wonach zu suchen ist und was es bedeutet, wenn SAST eine Schwachstelle findet.

Dies ist ein guter nächster Schritt, da wir nicht nur mehr Zeit für die Korrektur haben, sondern auch das Testen näher an der Quelle liegt, sodass die Zeit, die benötigt wird, um herauszufinden, was schief gelaufen ist, viel kürzer ist. Unser SAST nimmt jetzt die Arbeit unseres DAST und macht es früher.

Prävention - Der Kurve einen Schritt voraus (Phase 3)

Der Datenfluss führt eigentlich nur zu mehr Testsicherheit. Wie gelangen wir also zur nächsten Ebene und kombinieren SAST mit DAST, um sich gegenseitig zu ergänzen? In der dritten Phase erkennen wir tatsächlich den Wert der gemeinsamen Verwendung beider Tools.

Um an SAST vs DAST vorbei in eine vollständig komplementäre Situation zu gelangen, können wir das nehmen Ergebnisse von DAST bis informieren unser SAST, passt unsere statischen Regelkonfigurationen an und teilt uns mit, nach welchen Sicherheitslücken wir suchen müssen. Wenn Sie DAST auf diese Weise verwenden, kann SAST uns alles mitteilen, was wir brauchen, um herauszufinden, woher die Sicherheitslücken stammen, wie wir sie mindern können und wie wir so codieren können, dass sie nicht auftreten.

Wie funktioniert das? Zunächst müssen wir eine Ursachenanalyse mit den Ergebnissen von DAST durchführen. Bei der SQL-Injection müssen wir beispielsweise sicherstellen, dass die Daten beim Eingang bereinigt werden, damit wir uns nicht darauf verlassen müssen, Daten über unzählige Pfade zu verfolgen, um festzustellen, ob sie der Bereinigung entgehen können. Wir müssen uns auch SAST-Standards wie die in ansehen CERT Damit können wir sowohl Konstrukte vermeiden, die möglicherweise funktionieren, aber nicht sicher sind, als auch gute Verhaltensweisen erzwingen, die unsere Anwendung härten, auch wenn sie bei normaler (unsicherer) Programmierung möglicherweise nicht erforderlich sind. Die richtigen SAST-Regeln verhindern die Probleme, die bei DAST auftreten, und wir lernen immer wieder von DAST, wie wir unseren SAST konfigurieren und optimieren.

Profitieren Sie von einem ausfallsicheren Ansatz

Wenn Sie SAST und DAST zusammen verwenden, erhalten Sie das, was ich gerne als ausfallsichere Mentalität betrachte. So zum Beispiel vorher ohne Secure-by-Design DSGVOWir haben alle Benutzerdaten ohne Verschlüsselung gespeichert und anschließend darüber diskutiert, welche bestimmten Daten einen zusätzlichen Schutz verdienen, z. B. Passwörter oder Sozialversicherungsnummern. In einer ausfallsicheren, ausfallsicheren Umgebung verfolgen wir den umgekehrten Ansatz, verschlüsseln alles und diskutieren dann, was sicher ist, nicht zu verschlüsseln. Auf diese Weise ist das Standardverhalten sicher oder "ausfallsicher", und Sie maximieren erfolgreich SAST und DAST.

Also sei vorsichtig! SAST-Prüfer, die DAST-ähnliche Tests durchführen, sind diejenigen, die das Interesse von Benutzern und Analysten wecken. Der größere Wert liegt jedoch bei den langweiligen, auf Standards basierenden Prüfern, die ein ordnungsgemäßes sicheres Verhalten erzwingen. Diese Prüfer führen Sie von späten Tests über die Früherkennung bis hin zu tatsächlichen Standards für die vorbeugende Codierung, die Ihre Anwendung härten. SAST kann Ergänzen Sie DAST, indem Sie eine frühzeitige Schadensbegrenzung bereitstellen und DAST in erster Linie zur Überprüfung der Sicherheit der Anwendung verwenden, anstatt zu versuchen, die Anwendung zu beschädigen.

Bauen Sie von Anfang an Sicherheit in Ihre Anwendung ein

Geschrieben von

Artur Hicken

Arthur ist seit über 25 Jahren bei Parasoft im Bereich Software-Sicherheit und Testautomatisierung tätig. Er hilft bei der Erforschung neuer Methoden und Techniken (einschließlich 5 Patente) und hilft Kunden dabei, ihre Software-Praktiken zu verbessern.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.