Holen Sie sich die UMFANGREICHSTE Abdeckung für die Einhaltung von MISRA C! Erfahren Sie mehr >>

Fügen Sie Ihrer Sicherheitstest-Toolbox eine statische Analyse hinzu

Von Arthur Hicken

26. August 2020

6  min lesen

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.

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.

Balkendiagramm für Sicherheitstests zur statischen Analyse
Abbildung 1: Der Anstieg der Kosten für die Behebung von Sicherheitslücken im Verlauf des SDLC.

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.

Statische Analyse Sicherheitstests

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.

  • Durchflussanalyse
  • Musteranalyse

Durchflussanalyse

Bei der Flussanalyse analysieren die Tools den Quellcode, um den zugrunde liegenden Kontrollfluss und Datenfluss des Codes zu verstehen.

Statische Analyse Sicherheitstests - Flussanalyse
Abbildung 2: Sicherheitstests für statische Analysen - Flussanalyse

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.

Musteranalyse

Das Vermeiden bestimmter Konstrukte in Code, die sicherheitskritisch sind, ist die Grundlage für moderne Software-Engineering-Standards wie AUTOSAR C ++ 14, MISRA C 2012 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.

Vorteile von SAST

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.

Code-Abdeckung

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.

Ursachenanalyse

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.

Verbesserung der Fähigkeiten

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.

Betriebseffizienz

Entwickler verwenden die statische Analyse zu Beginn des 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 in erster Linie Fehler, sodass Entwickler sie später nicht finden und beheben müssen.

So holen Sie das Beste aus SAST heraus

SAST ist eine umfassende Testmethode, die einige anfängliche Anstrengungen und Motivation erfordert, um sie erfolgreich anzuwenden.

Stellen Sie SAST so früh wie möglich bereit

Während Teams SAST-Tools zu Beginn des SDLC verwenden können, verzögern einige Organisationen die Analyse bis zur Testphase. Obwohl die Analyse einer vollständigeren Anwendung eine prozedurale Datenflussanalyse ermöglicht, kann das „Verschieben nach links“ mit SAST und das Analysieren von Code direkt aus der IDE Schwachstellen wie Fehler bei der Eingabevalidierung identifizieren. Außerdem können Entwickler einfache Korrekturen vornehmen, bevor sie Code für Builds senden. Dies hilft, Änderungen des späten Zyklus aus Sicherheitsgründen zu vermeiden.

Verwenden Sie SAST mit agilen und CI / CD-Pipelines

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.

Umgang mit verrauschten Ergebnissen

Herkömmliche Sicherheitstest-Tools für statische Analysen enthalten häufig viele „informative“ Ergebnisse und Probleme mit geringem Schweregrad in Bezug auf geeignete Codierungsstandards. Moderne Tools, wie die von Parasoft, 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, mit deren Hilfe die wichtigsten Sicherheitslücken identifiziert werden können. Ihr SAST-Tool sollte diese Informationen verwenden, damit Sie sich auf das konzentrieren können, was am wichtigsten ist. Benutzer können Ergebnisse eher anhand anderer Kontextinformationen wie Metadaten zum Projekt, Alter des Codes und des für den Code verantwortlichen Entwicklers oder Teams filtern. Tools wie Parasoft verwenden diese Informationen mit künstlicher Intelligenz (KI) und maschinellem Lernen (ML), um die kritischsten Probleme genauer zu bestimmen.

Entwickler im Fokus

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.

Verwenden Sie die Smart Rule-Konfiguration

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.

Nutzen Sie KI und ML, um die wichtigsten Verstöße zu identifizieren

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.

Prävention ist besser als Erkennung

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.

Den Wert von SAST . freisetzen

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Von Arthur 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.