Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Zum Abschnitt springen
Es gibt viele Möglichkeiten und Techniken, um Schwachstellen in Ihrer Software zu erkennen. Eine der besten Möglichkeiten ist das Static Analysis Security Testing (SAST). So können Sie SAST beim Testen der Softwaresicherheit einsetzen.
Zum Abschnitt springen
Zum Abschnitt springen
Es gibt verschiedene Techniken, um Schwachstellen in Software und Systemen zu identifizieren. Intelligente Organisationen behalten sie in ihrer „Sicherheitstoolbox“ und verwenden eine Kombination von Testtools, darunter:
Die Motivation zur Verbesserung der Sicherheit durch automatisierte Tools besteht darin, im Software Development Life Cycle (SDLC) die Identifizierung und Behebung von Schwachstellen so früh wie möglich nach links zu verschieben. Korrekturen und Korrekturen werden komplizierter, wenn die Anwendung kurz vor der Veröffentlichung steht. Abbildung 1 zeigt, wie sich die Kosten für die Behebung von Sicherheitslücken im Verlauf des SDLC dramatisch erhöhen.
Weitere Informationen zur Wirtschaftlichkeit der Software-Sicherheit finden Sie unter Der Geschäftswert sicherer Software weißes Papier. Dieser Beitrag konzentriert sich auf die Verwendung von Sicherheitstests für statische Analysen als Teil der Sicherheitspraxis eines Unternehmens.
Wie der Name schon sagt, bedeutet statisches Testen, dass es statisch angewendet wird. Mit anderen Worten: Die Analyse wird für Quellcode, Binärdateien und/oder Konfigurationsdateien durchgeführt. Statische Tools nutzen ihr Verständnis der Semantik der Quelle, um Fehler und Schwachstellen abzuleiten.
Diese „Fehlerdetektoren“ werden als Checker oder Regeln bezeichnet. Wenn gegen eine Regel verstoßen wird, wird eine Warnung ausgegeben, die Informationen darüber enthält, wo im Code der Verstoß stattgefunden hat, und in der Regel Trace-Informationen, um die Grundursache aufzuspüren.
Dynamische Tests gelten für laufende Anwendungen. Diese Tools erkennen Probleme bei der Ausführung von Anwendungen und führen Tests durch, indem sie kleine Codeteile namens Instrumentierung hinzufügen, um die Codeabdeckung zu bestimmen und die Frage zu beantworten: Habe ich genug Tests durchgeführt?
Fehler werden während der Ausführung der Anwendung gemeldet und stellen normalerweise Kontextinformationen bereit, damit Entwickler die erkannten Schwachstellen finden und beheben können.
Zu den Hauptunterschieden zwischen statischen und dynamischen Sicherheitstesttools gehören die folgenden.
Dynamische Tools wie DAST-Tools können nur auf laufende Anwendungen angewendet werden und kommen daher später in die Entwicklung. Mit modernen CI/CD-Pipelines sind laufende Anwendungen jedoch früher und häufiger verfügbar als zuvor, was DAST-Tools nützlicher macht.
Dynamische Tools hingegen können Test-Frameworks integrieren, um die Testfallgenerierung, Stubbing und Mocking zu automatisieren, die Instrumentierung zu nutzen und spezielle Laufzeitbibliotheken zu verwenden, um Schwachstellen zu erkennen, während die Anwendung ausgeführt wird. Sie umfassen auch Funktionen zur Erfassung und Berichterstattung dieser Ergebnisse. In der Regel sind Trace-Informationen enthalten, was eine schnelle Behebung ermöglicht. Da diese Fehler tatsächlich in einer laufenden Anwendung auftreten, gibt es in der Regel keine Fehlalarme.
DAST-Tools hingegen erkennen Schwachstellen bei der Ausführung von Code. Es besteht ein hohes Maß an Vertrauen in diese Ergebnisse. Darüber hinaus führen Laufzeitbedingungen, wie z. B. kompliziertes Multithread-Verhalten, zu neuen Arten von Fehlern und Schwachstellen, die SAST-Tools übersehen.
SAST-Tools müssen falsch-positive Ergebnisse mit potenziell fehlenden echten Schwachstellen, sogenannten falsch-negativen Ergebnissen, abwägen, um den besten ROI für die Sicherung des Quellcodes zu erzielen. Bei der SAST-Tool-Analyse sind zwar immer Fehlalarme möglich, aber der Vorteil liegt in der frühzeitigen Erkennung von Schwachstellen, die bei späteren Tests möglicherweise übersehen werden.
Sowohl SAST- als auch DAST-Tools können echte Fehler übersehen. Um Fehler zu reduzieren, empfiehlt es sich jedoch, beide Tools gemeinsam zu verwenden.
SAST-Werkzeuge Sie benötigen keine laufende Anwendung und können daher früh im Entwicklungslebenszyklus verwendet werden, wenn die Korrekturkosten niedrig sind. Auf der einfachsten Ebene analysiert SAST den Quellcode und vergleicht ihn mit einer Reihe von Regeln. SAST-Tools sind normalerweise mit der Identifizierung von Schwachstellen verbunden und informieren Entwickler frühzeitig über schlechte Codierungsmuster, die zu Exploits, Verstößen gegen sichere Codierungsrichtlinien oder mangelnder Konformität mit technischen Standards führen und zu instabilen oder unzuverlässigen Funktionen führen.
Es gibt zwei Hauptanalysetypen, mit denen Sicherheitsprobleme identifiziert werden.
Bei der Flussanalyse analysieren die Tools den Quellcode, um den zugrunde liegenden Kontrollfluss und Datenfluss des Codes zu verstehen.
Das Ergebnis ist eine Zwischendarstellung oder ein Modell der Anwendung. Die Tools führen Regeln oder Prüfer für dieses Modell aus, um Codierungsfehler zu identifizieren, die zu Sicherheitslücken führen. In einer C- oder C ++ - Anwendung kann eine Regel beispielsweise Zeichenfolgenkopien identifizieren und dann das Modell durchlaufen, um festzustellen, ob der Quellpuffer jemals größer als der Zielpuffer sein kann. Wenn dies der Fall ist, kann dies zu einer Sicherheitsanfälligkeit durch Pufferüberlauf führen.
Das Vermeiden bestimmter Konstrukte in Code, die sicherheitskritisch sind, ist die Grundlage für moderne Software-Engineering-Standards wie AUTOSAR C ++ 14, MISRA C 2023 und Joint Strike Fighter (JSF). Diese Standards verhindern die Möglichkeit, unzuverlässigen Code falsch zu interpretieren, zu missverstehen oder falsch zu implementieren.
Die Musteranalyse hilft Entwicklern, eine sicherere Teilmenge der Entwicklungssprache im Kontext der Sicherheit zu verwenden, und verbietet die Verwendung von Codekonstrukten, mit denen Schwachstellen überhaupt erst auftreten können. Einige Regeln können Fehler durch Überprüfen der Syntax identifizieren, z. B. eine Rechtschreibprüfung in einem Textverarbeitungsprogramm. Einige moderne Werkzeuge können subtile Muster erkennen, die mit einer schlechten Codierungskonstruktion verbunden sind.
Jede Testmethode hat Stärken. Viele Unternehmen konzentrieren sich zu sehr auf DAST- und Penetrationstests. Die Verwendung von SAST bietet jedoch mehrere Vorteile gegenüber anderen Testtechniken.
Die Menge des getesteten Codes ist eine wichtige Messgröße für die Software-Sicherheit. Sicherheitslücken können in jedem Abschnitt der Codebasis vorhanden sein, und nicht getestete Teile können eine Anwendung Angriffen aussetzen.
SAST-Tools, insbesondere solche, die Musteranalyseregeln verwenden, können eine viel höhere Codeabdeckung bieten als dynamische Techniken oder manuelle Prozesse. Sie haben Zugriff auf den Anwendungsquellcode und die Anwendungseingaben, einschließlich versteckter Eingaben, die nicht in der Benutzeroberfläche verfügbar sind.
SAST-Tools fördern die effiziente Behebung von Sicherheitslücken. Durch Sicherheitstests für statische Analysen wird die genaue Codezeile, die den Fehler verursacht, leicht identifiziert. Durch die Integration in die Entwickler-IDE können Fehler behoben werden, die von SAST-Tools gefunden wurden.
Entwickler erhalten sofortiges Feedback zu ihrem Code, wenn sie SAST-Tools von der IDE verwenden. Die Daten stärken und schulen sie in sicheren Codierungspraktiken.
Entwickler nutzen statische Analysen früh im Entwicklungslebenszyklus, auch für einzelne Dateien direkt aus ihrer IDE. Das frühzeitige Auffinden von Fehlern im SDLC reduziert die Kosten für die Behebung erheblich. Es verhindert Fehler von vornherein, sodass Entwickler sie später nicht suchen und beheben müssen.
SAST ist eine umfassende Testmethode, die einige anfängliche Anstrengungen und Motivation erfordert, um sie erfolgreich anzuwenden.
Während Teams können SAST-Tools verwenden Zu Beginn des SDLC entscheiden sich einige Organisationen dafür, die Analyse bis zur Testphase zu verschieben. Auch wenn die Analyse einer vollständigeren Anwendung eine interprozedurale Datenflussanalyse ermöglicht, kann ein „Linkswechsel“ mit SAST und die direkte Analyse des Codes aus der IDE Schwachstellen wie Fehler bei der Eingabevalidierung identifizieren. Außerdem können Entwickler einfache Korrekturen vornehmen, bevor sie Code für Builds einreichen. Dies trägt dazu bei, aus Sicherheitsgründen späte Änderungen im Zyklus zu vermeiden.
Die SAST-Analyse wird missverstanden. Viele Teams halten es aufgrund der gründlichen Analyse des gesamten Projektquellcodes für zeitaufwändig. Dies kann Unternehmen zu der Annahme veranlassen, dass SAST nicht mit Methoden zur schnellen Entwicklung kompatibel ist, was unbegründet ist. In der IDE des Entwicklers sind nahezu sofortige Ergebnisse von Sicherheitstests für statische Analysen verfügbar, die sofortiges Feedback geben und die Vermeidung von Sicherheitslücken sicherstellen. Moderne SAST-Tools führen eine inkrementelle Analyse durch, um nur die Ergebnisse des Codes anzuzeigen, der zwischen zwei verschiedenen Builds geändert wurde.
Herkömmliche Sicherheitstesttools für die statische Analyse enthalten häufig viele „informative“ Ergebnisse und Probleme mit geringem Schweregrad im Zusammenhang mit den richtigen Codierungsstandards. Moderne Tools, wie die von Parasoft angebotenen, ermöglichen es Benutzern, die zu verwendenden Regeln/Prüfer auszuwählen und die Ergebnisse nach der Schwere des Fehlers zu filtern, wobei diejenigen ausgeblendet werden, die keine Untersuchung rechtfertigen.
Viele Sicherheitsstandards von OWASP, CWE, CERT und dergleichen verfügen über Risikomodelle, die dabei helfen, die wichtigsten Schwachstellen zu identifizieren. Ihr SAST-Tool sollte diese Informationen nutzen, damit Sie sich auf das Wesentliche konzentrieren können. Benutzer können Ergebnisse stärker auf der Grundlage anderer Kontextinformationen wie Metadaten zum Projekt, dem Alter des Codes und dem für den Code verantwortlichen Entwickler oder Team filtern. Tools wie Parasoft nutzen diese Informationen mit künstlicher Intelligenz (KI) und maschinellem Lernen (ML), um die kritischsten Probleme weiter zu ermitteln.
Erfolgreiche Bereitstellungen sind häufig auf Entwickler ausgerichtet. Sie bieten die Tools und Anleitungen, die Entwickler benötigen, um Sicherheit in die Software zu integrieren. Dies ist wichtig in agilen und DevOps / DevSecOps-Umgebungen, in denen eine schnelle Rückmeldung für die Aufrechterhaltung der Geschwindigkeit von entscheidender Bedeutung ist. IDE-Integrationen ermöglichen Sicherheitstests direkt aus der Arbeitsumgebung des Entwicklers - auf Dateiebene, Projektebene oder einfach zum Auswerten des geänderten Codes.
Bei der Analyse von Software auf Sicherheitsprobleme passt eine Größe nicht für alle Organisationen. Es ist wichtig, dass die Regeln / Prüfer die spezifischen Probleme ansprechen, die für diese spezifische Anwendung kritisch sind. Unternehmen, die gerade erst mit dem Testen auf Sicherheit beginnen, möchten die Regeln möglicherweise auf die häufigsten Sicherheitsprobleme wie Cross-Site-Scripting und SQL-Injection beschränken. Andere Organisationen haben spezielle Sicherheitsanforderungen, die auf Vorschriften wie PCI DSS basieren. Suchen Sie nach Lösungen, die eine kontrollierte Regel- / Prüferkonfiguration ermöglichen, die Ihren spezifischen Anforderungen entspricht, und keine generische Konfiguration.
Bei Software-Sicherheitstools ist das Ganze besser als die Summe seiner Teile. Dies gilt für das Testen der Anwendungssicherheit, da die verschiedenen Tools in unterschiedlichen Bereichen Stärken und Schwächen haben, die durch die Kombination gemildert werden.
Die Kombination von SAST und DAST ist aufgrund des grundlegenden Unterschieds in der Technologie, die bei statischen Werkzeugen und dynamischen Werkzeugen verwendet wird, eine natürliche Ergänzung. Hier sind einige der Vorteile der Integration beider in Ihre Sicherheitstests.
Die Integration von Tools kann im Allgemeinen eine Herausforderung sein. Tools verschiedener Anbieter funktionieren möglicherweise nicht gut zusammen und die Berichte der einzelnen Tools können widersprüchlich sein und unterschiedliche Formate aufweisen. Dies führt zu folgenden Herausforderungen.
Die Integration Ihrer Anwendungssicherheits-Toolbox bietet einen hervorragenden ROI, daher sollte diese Liste Sie nicht von der Mühe entmutigen. Hier sind einige Best Practices, die die Integration erleichtern:
Zusätzlich zu den Modi SAST und DAST, es gibt andere Arten von Anwendungssicherheitstests.
Es ist wichtig zu beachten, dass es sich hierbei um Testtechniken für die Anwendungssicherheit handelt, die in ein Ökosystem von Sicherheitstechniken passen. Beispielsweise verwenden Teams häufig Tools zur Orchestrierung der Anwendungssicherheit, um die Informationen aus all diesen Techniken zu organisieren, zu analysieren und darüber zu berichten.
Technologien für künstliche Intelligenz (KI) und maschinelles Lernen (ML) verbessern die statischen Analyselösungen von Parasoft, um Hotspots und Schnittpunkte zwischen allen gefundenen Verstößen zu identifizieren. Dies ermöglicht Teams, ihre Bemühungen auf den Teil der Codebasis zu konzentrieren, der die Hauptursache für viele andere Probleme ist. Darüber hinaus überwacht ML das Verhalten Ihrer Entwicklungsteams und lernt daraus, um zu unterscheiden, was wichtig ist und was nicht.
Das Training Ihres KI-Modells basierend auf dem historischen Verhalten des Entwicklungsteams bietet eine mehrdimensionale Analyse der Ergebnisse, während ML Daten gruppiert, um korrelierte, verwandte oder ähnliche Verstöße zu identifizieren.
Noch besser ist die Kombination der beiden Technologien. Die Kombination lernt, welche falsch-positiven Ergebnisse ignoriert und welche richtig-positiven Ergebnisse hervorgehoben werden sollen. Es schrumpft einen Berg an Informationen auf wenige, höchst wertvolle Diamanten.
Beispielsweise kann eine statische Analyse Tausende von Verstößen in einer typischen Codebasis aufdecken. Auch wenn Sie möglicherweise Hunderte von Fehlern identifizieren können, die behoben werden müssen, werden Sie nicht in der Lage sein, alles in der verfügbaren Zeit zu beheben. Wenn KI und ML Hotspots von Verstößen finden, können Sie mehrere Fehler gleichzeitig beheben, indem Sie den einzelnen Codeabschnitt identifizieren, der sie alle verursacht.
Bauen Sie Sicherheit in Ihre Anwendung ein. Es ist viel effektiver und effizienter als der Versuch, eine Anwendung zu sichern, indem die Sicherheit am Ende des SDLC auf eine fertige Anwendung gelegt wird. So wie Sie die Qualität einer Anwendung nicht testen können, gilt dies auch für die Sicherheit. SAST ist der Schlüssel zur Früherkennung und verhindert Sicherheitslücken, indem von Anfang an sicherer Code geschrieben wird.
Mit SAST-Tools können Unternehmen die Softwaresicherheit bereits in den frühen Entwicklungsphasen nutzen und ihren Softwareentwicklern die Tools und Anleitungen zur Verfügung stellen, die sie zum Erstellen sicherer Software benötigen.
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.