Gorodenkoff - stock.adobe.com

Wichtige Testmethoden für die Sicherheit von Anwendungen

Die Geschwindigkeit der Anwendungsentwicklung hat sich beschleunigt. Daher müssen Sicherheitstests damit Schritt halten, bevor Programme produktiv eingesetzt werden.

Viele Unternehmen stellen mehrmals täglich Code über automatisierte CI/CD-Pipelines (Continuous Integration/Continuous Delivery) bereit, wodurch herkömmliche Sicherheitstests am Ende des Zyklus sowohl unpraktisch als auch ineffektiv werden. Was benötigt wird, ist eine Shift-Left-Strategie, die Sicherheit in den gesamten Entwicklungslebenszyklus integriert.

Anwendungssicherheitstests haben sich zu einem umfassenden Ökosystem spezialisierter Tools entwickelt, die jeweils darauf ausgelegt sind, Schwachstellen an optimalen Punkten im Prozess zu erkennen. Lassen Sie uns die wesentlichen Testkategorien betrachten, die die Grundlage für effektive DevSecOps-Programme bilden und Unternehmen dabei helfen, erfolgreich Sicherheit in die Entwicklung zu integrieren, ohne dabei an Geschwindigkeit und Agilität einzubüßen.

SAST: Schwachstellen an der Entstehungsstelle aufspüren

Statische Anwendungssicherheitstests (SAST, Static Application Security Testing) bilden die Grundlage moderner Anwendungssicherheitstests. Oft auch als White-Box-Tests bezeichnet, analysieren sie Quellcode, Bytecode und Binärdateien, ohne die Anwendung auszuführen. SAST-Tools untersuchen den Code von innen heraus und identifizieren potenzielle Sicherheitslücken bereits in den frühesten Entwicklungsstadien.

Die größte Stärke von SAST liegt in seiner Fähigkeit, die genauen Stellen zu lokalisieren, an denen Schwachstellen bestehen, und Entwicklern Dateinamen, Zeilennummern und detaillierte Anweisungen zur Behebung der Schwachstellen zu liefern. Diese Präzision macht SAST bei der Codeüberprüfung unersetzlich, da es einem Team ermöglicht, Sicherheitslücken zu beheben, wenn deren Behebung noch mit geringsten Kosten verbunden ist. Moderne SAST-Tools lassen sich nahtlos in Entwicklungsumgebungen und CI/CD-Pipelines integrieren, scannen Code-Commits automatisch und blockieren Builds, die kritische Schwachstellen enthalten.

SAST hat jedoch seine Grenzen. Es kann nur Schwachstellen erkennen, die im Code der Anwendung selbst vorhanden sind, und übersieht Probleme, die sich aus der Konfiguration einer Umgebung, der Integration von Drittanbietern oder dem Laufzeitverhalten ergeben können. SAST-Tools neigen außerdem dazu, Fehlalarme zu generieren, insbesondere bei der Analyse komplexer Codepfade oder dynamischer Codegenerierung, sodass Sicherheitsteams die Regeln feinabstimmen und die Ergebnisse validieren müssen.

SAST ist am effektivsten, wenn es frühzeitig im Entwicklungszyklus implementiert wird, idealerweise in die integrierten Entwicklungsumgebungen der Entwickler integriert wird, um Echtzeit-Feedback zu erhalten, und in Build-Pipelines für eine umfassende Abdeckung vorgeschrieben ist.

SCA: Sicherung der Lieferkette

Die Analyse der Zusammensetzung der Software (SCA, Software Composition Analysis) erweitert Sicherheitstests über proprietären Code hinaus und untersucht die Open-Source- und Drittanbieter-Komponenten, die in den meisten modernen Anwendungen verwendet werden.

Während SAST sich auf den von Entwicklern geschriebenen Code konzentriert, analysiert SCA den von Entwicklern verwendeten Code. Dies ist ein entscheidender Unterschied, da Open-Source-Komponenten 70 bis 90 Prozent der meisten Anwendungscodebasen ausmachen.

SCA-Tools erstellen eine umfassende Bestandsaufnahme aller Abhängigkeiten, Bibliotheken und Frameworks innerhalb einer Anwendung. Anschließend vergleichen sie diese Softwarestückliste mit Schwachstellendatenbanken, wie etwa der europäischen Datenbank für Sicherheitslücken. Sie identifizieren bekannte CVEs in Abhängigkeiten, kennzeichnen Komponenten mit restriktiven Lizenzen und erkennen veraltete Bibliotheken, für die keine Sicherheitspatches verfügbar sind. Neuere Tools lassen sich direkt in Entwicklungsworkflows integrieren, scannen Paketmanager, Container-Images und Infrastructure-as-Code-Vorlagen (IaC) und bieten gleichzeitig umsetzbare Hinweise zur Behebung von Schwachstellen.

SCA-Tools können jedoch zu Reibungsverlusten für Entwicklungsteams führen. Sie neigen dazu, besonders verrauscht zu sein und generieren Hunderte oder Tausende von Ergebnissen für Anwendungen mit umfangreichen Abhängigkeitsbäumen. Nicht alle identifizierten Schwachstellen stellen ein tatsächliches Risiko dar. Ein kritischer Fehler in der Verwaltungsschnittstelle einer Protokollierungsbibliothek kann irrelevant sein, wenn diese Funktion in der Anwendung des Entwicklers nicht verwendet wird oder nicht zugänglich ist. Dies führt zu einem schwierigen Priorisierungsproblem, bei dem Sicherheitsteams zwischen theoretischen und praktischen Bedrohungen unterscheiden müssen.

Die Behebung kann sich ebenfalls als komplex erweisen. Die Aktualisierung von Abhängigkeiten kann zu schwerwiegenden Änderungen oder Inkompatibilitäten führen. Korrekturen können auch zu einer Kettenreaktion führen, die Aktualisierungen über mehrere miteinander verbundene Komponenten hinweg erforderlich macht. Im Gegensatz zu SAST-Ergebnissen, die auf bestimmte Codezeilen hinweisen, erfordern SCA-Schwachstellen häufig architektonische Entscheidungen über das Abhängigkeitsmanagement und Upgrade-Strategien.

Der Bereich entwickelt sich rasch über das einfache Scannen nach Schwachstellen hinaus hin zu einer umfassenden Sicherheit der Lieferkette. Moderne Ansätze umfassen die Rückverfolgung der Herkunft von Software, die Erkennung bösartiger Pakete, die Überwachung auf Typosquatting-Angriffe und die Implementierung von Richtlinienkontrollen für die Genehmigung von Abhängigkeiten. Diese Fortschritte befassen sich nicht nur mit bekannten Schwachstellen, sondern auch mit den umfassenderen Risiken von Kompromittierungen der Softwarelieferkette, die in den jüngsten hochkarätigen Angriffen zunehmend an Bedeutung gewonnen haben.

DAST: Testen von Anwendungen im Betrieb

Dynamische Anwendungssicherheitstests (DAST, Dynamic Application Security Testing) bewerten Anwendungen von außen nach innen und simulieren dabei, wie ein Angreifer mit einer laufenden Anwendung interagieren würde. DAST-Tools, die oft auch als Black-Box-Tests bezeichnet werden, durchsuchen und untersuchen Webanwendungen während der Laufzeit und identifizieren Schwachstellen, die nur dann auftreten, wenn der Code in seiner vorgesehenen Umgebung ausgeführt wird.

DAST funktioniert, indem es Webanwendungen systematisch untersucht, als wäre es ein automatisierter Penetrationstester. Es folgt Links, übermittelt Formulare und versucht verschiedene Angriffs-Payloads gegen Eingabefelder, Parameter und Endpunkte. Diese Tools eignen sich hervorragend zum Aufspüren von Laufzeit-Schwachstellen wie Authentifizierungsumgehungen, Fehlern in der Sitzungsverwaltung, Serverfehlkonfigurationen und Injektionsangriffen, die davon abhängen, wie die Anwendung Benutzereingaben in ihrer tatsächlichen Einsatzumgebung verarbeitet.

Die größte Stärke von DAST liegt in seiner Fähigkeit, Schwachstellen zu finden, die durch statische Analysen nicht erkannt werden können. Dazu gehören Probleme, die sich aus der Konfiguration einer Umgebung, den Servereinstellungen, Integrationen von Drittanbietern und komplexen Laufzeitverhalten ergeben. DAST bietet eine realistische Bewertung der Sicherheitslage aus der Perspektive eines Angreifers und testet Anwendungen genau so, wie sie in der produktiven Umgebung aufgerufen würden. Moderne DAST-Tools können sich bei Anwendungen authentifizieren, den Sitzungsstatus aufrechterhalten und komplexe Single-Page-Anwendungen mit JavaScript-lastigen Schnittstellen verarbeiten.

DAST erweist sich als besonders wertvoll, wenn es in Staging-Umgebungen integriert wird, die die Produktionskonfigurationen genau widerspiegeln, und idealerweise als Teil der Validierungsprozesse vor der Bereitstellung ausgeführt wird. Einige Unternehmen implementieren DAST auch in Produktionsumgebungen während Wartungsfenstern, um Konfigurationsabweichungen und bereitstellungspezifische Schwachstellen zu erkennen, die nur in Live-Systemen auftreten.

API-Sicherheitstests: Erweiterung von DAST

Da Anwendungen zunehmend API-first-Architekturen und Microservices-Designs verwenden, reichen herkömmliche webbasierte DAST-Tools oft nicht aus, um REST-, GraphQL- und SOAP-APIs zu testen, denen herkömmliche Webschnittstellen fehlen. API-Sicherheitstests erweitern die DAST-Prinzipien speziell für diese programmatischen Schnittstellen und verwenden API-Spezifikationen wie OpenAPI/Swagger und GraphQL-Schemas sowie Verkehrsanalysen, um API-Endpunkte systematisch zu verstehen und zu testen.

API-orientierte Testtools eignen sich hervorragend zum Aufspüren von Autorisierungsfehlern, Parametermanipulationen, Injektionsangriffen auf API-Endpunkte und Schwachstellen in der Geschäftslogik, die für API-Workflows spezifisch sind. Sie können komplexe Authentifizierungsmechanismen wie OAuth-Flows testen, Ratenbegrenzungs- und Eingabevalidierungskontrollen validieren und die Offenlegung sensibler Daten in API-Antworten identifizieren. Im Gegensatz zum herkömmlichen DAST-Crawling können API-Tests mit speziell gestalteten Payloads direkt auf bestimmte Endpunkte abzielen und Randfälle testen, die durch herkömmliche Webnavigation möglicherweise nicht entdeckt werden können.

API-Tests erfordern mehr Vorabkonfigurationen als ein herkömmlicher DAST-Test. Die Tools benötigen API-Dokumentationen oder Traffic-Beispiele, um die verfügbaren Endpunkte und erwarteten Parameter zu verstehen. Diese Abhängigkeit von Spezifikationen bedeutet, dass schlecht dokumentierte APIs möglicherweise nur unvollständig abgedeckt werden. Die Wirksamkeit der Tests hängt stark von der Genauigkeit und Vollständigkeit der verfügbaren API-Schemas ab.

IAST: Das Beste aus beiden Welten

Interaktive Anwendungssicherheitstests (IAST, Interactive Application Security Testing) kombinieren die Stärken von SAST und DAST, indem sie Sicherheitssensoren direkt in laufende Anwendungen einbetten. Im Gegensatz zu den externen Tests von DAST oder der statischen Analyse von SAST überwacht IAST sicherheitsrelevante Ereignisse in Echtzeit, während die Anwendung ausgeführt wird.

IAST-Tools arbeiten mit schlanken Agenten oder Bibliotheken, die das Anwendungsverhalten während Funktionstests, Qualitätssicherungsprozessen oder sogar im produktiven Datenverkehr von innen beobachten. Diese Sensoren verfolgen den Datenfluss von den Quellen (Benutzereingaben) zu den Senken (Datenbanken, Dateisysteme) und erkennen, wenn nicht vertrauenswürdige Daten ohne ordnungsgemäße Validierung oder Bereinigung zu sensiblen Vorgängen gelangen. Dieser Ansatz reduziert Fehlalarme drastisch, da IAST-Tools nur die Schwachstellen entlang der ausgeführten Codepfade melden.

Der entscheidende Vorteil von IAST ist seine Genauigkeit. Es liefert die präzisen Code-Standortdetails von SAST zusammen mit dem Laufzeitkontext von DAST und eliminiert so viele Fehlalarme, die andere Testmethoden mit sich bringen. IAST kann komplexe Schwachstellen erkennen, die mehrere Anwendungsschichten betreffen, und liefert umfangreiche Kontextinformationen über die Ausnutzbarkeit.

IAST erfordert jedoch eine Instrumentierung der Anwendung, was zu einem Leistungsaufwand und einer komplexen Bereitstellung führen kann. Außerdem ist es auf eine umfassende Testabdeckung angewiesen, um anfällige Codepfade auszulösen. Das bedeutet, dass ungetestete Funktionen nicht analysiert werden, wodurch die Wirksamkeit von IAST direkt von der Qualität der Funktionstestprozesse abhängt.

Container-Sicherheitsscan: Sicherung der Bereitstellungspipeline

Container-Sicherheitsscans beheben Schwachstellen in Docker-Images, Konfigurationen und Laufzeitumgebungen, die herkömmliche Anwendungstesttools übersehen. Container-Scan-Tools überprüfen Basis-OS-Images auf CVEs, untersuchen Container-Konfigurationen auf Fehlkonfigurationen und validieren Sicherheitseinstellungen wie angemessene Benutzerrechte und Ressourcenbeschränkungen.

Container-Scanner lassen sich in CI/CD-Pipelines integrieren. Sie blockieren anfällige Images vor der Bereitstellung und überwachen laufende Container auf Abweichungen. Sie eignen sich hervorragend zum Erkennen von Schwachstellen, die von Basis-Images übernommen wurden, von Containern mit übermäßigen Berechtigungen, von offengelegten Geheimnissen und von Fehlkonfigurationen, die Container-Escape-Angriffe ermöglichen könnten.

Das Scannen von Containern kann jedoch bei der Analyse großer Image-Repositorys problematisch sein. Die Behebung erfordert oft die Koordination von Basis-Image-Updates über mehrere Teams hinweg. Die Schichtstruktur von Containern macht die Zuordnung von Schwachstellen komplex, während die Laufzeitüberwachung ein Gleichgewicht zwischen Sicherheitstransparenz und Auswirkungen auf die Leistung finden muss. Containersicherheit funktioniert am besten, wenn sie über den gesamten Lebenszyklus hinweg implementiert wird, vom Scannen während der Erstellung bis zur Durchsetzung von Laufzeitrichtlinien in Orchestrierungsplattformen.

IaC-Sicherheit: Verhindern von Fehlkonfigurationen in der Cloud

IaC-Sicherheitsscan-Tools analysieren Terraform, AWS CloudFormation, Kubernetes YAML und andere Infrastrukturvorlagen auf Sicherheitsfehlkonfigurationen, bevor diese in produktive Umgebungen gelangen. Da Unternehmen ihre Cloud-Infrastruktur zunehmend über Code definieren, sind diese Tools unverzichtbar geworden, um Fehlkonfigurationen zu verhindern, die die meisten Cloud-Sicherheitsverletzungen verursachen.

IaC-Scanner untersuchen Vorlagendateien auf gefährliche Einstellungen, wie beispielsweise zu freizügige Zugriffskontrollen, unverschlüsselte Speicher, exponierte Datenbanken und unsichere Netzwerkkonfigurationen. Sie lassen sich in Entwicklungsworkflows integrieren, um Probleme während der Codeüberprüfung zu erkennen und Bereitstellungen zu blockieren, die gegen Sicherheitsrichtlinien verstoßen, sodass Fehlkonfigurationen nicht in Live-Umgebungen gelangen können.

Diese Tools eignen sich hervorragend zum Aufspüren typischer Cloud-Sicherheitslücken, wie öffentlich zugängliche S3-Buckets, überprivilegierte IAM-Rollen, unverschlüsselte Datenbanken und fehlende Sicherheitsgruppen. Moderne Scanner bieten Policy-as-Code-Funktionen, mit denen Unternehmen ihre Sicherheitsanforderungen kodifizieren und die Compliance automatisch in allen Infrastrukturbereitstellungen durchsetzen können.

Die Wirksamkeit von IaC-Scans hängt in hohem Maße von einer umfassenden Abdeckung durch Vorlagen und genauen Richtliniendefinitionen ab. Tools können mit komplexer bedingter Logik oder dynamischer Ressourcenerstellung zu kämpfen haben, und die Aufrechterhaltung aktueller Richtlinien in sich schnell entwickelnden Cloud-Diensten erfordert ständige Aufmerksamkeit. IaC-Sicherheit erweist sich als besonders wertvoll, wenn sie frühzeitig in die Workflows der Infrastrukturentwicklung integriert wird, idealerweise mit einer automatisierten Durchsetzung von Richtlinien, die verhindert, dass riskante Konfigurationen in die Produktion gelangen.

Anwendungssicherheit erfordert einen mehrgleisigen Ansatz

Kein einzelnes Tool für Anwendungssicherheitstests kann alle Schwachstellen erkennen. Eine wirksame Anwendungssicherheit erfordert einen mehrschichtigen Ansatz, der mehrere Testmethoden kombiniert: SAST für die frühzeitige Codeanalyse, DAST für die Laufzeitvalidierung, SCA für Abhängigkeitsrisiken und spezielle Tools für Container und Infrastruktur.

Der Schlüssel zum Erfolg liegt in der strategischen Integration. Integrieren Sie diese Tools in die Entwicklungsabläufe, wo sie mit geringem Aufwand einen maximalen Mehrwert bieten. Durch die Implementierung von Sicherheitstests während des gesamten Entwicklungszyklus und nicht erst am Ende können Unternehmen ihre Entwicklungsgeschwindigkeit beibehalten und gleichzeitig wirklich sichere Anwendungen erstellen.

Erfahren Sie mehr über Anwendungs- und Plattformsicherheit