5 Schritte für effektives Vulnerability Management
Softwareschwachstellen sind Fehler in einer Software, die von Angreifern ausgenutzt werden können, um die Kontrolle über eine Anwendung zu übernehmen, Daten zu stehlen, den Dienst für Benutzer zu stören oder anderweitig Schaden anzurichten. Aufgrund der Komplexität von Anwendungen und der Umgebungen, in denen sie ausgeführt werden, ist es praktisch unmöglich, das Vorhandensein von Sicherheitslücken in Software zu verhindern. Die beste Verteidigung gegen Schwachstellen ist daher der Einsatz von Werkzeugen, mit denen sich Schwachstellen erkennen und beheben lassen, sobald sie entdeckt werden.
Es gibt viele Arten von Software Schwachstellen, wie zum Beispiel Programmierfehler, unsichere Abhängigkeiten oder Komponenten von Drittanbietern oder Konfigurationsfehler. Da Software-Schwachstellen in verschiedenen Varianten auftreten können, gibt es nicht die eine simple Lösung, um sie zu beheben. Dieser Artikel zeigt, dass Unternehmen stattdessen einen gut konzipierten, vielschichtigen Ansatz für Schwachstellenmanagement benötigen.
Die wichtigsten Arten von Software-Schwachstellen
Der erste Schritt des Schwachstellenmanagements besteht darin, zu verstehen, woher eine Schwachstelle rührt und wie sie konkret aussieht. Die häufigsten Arten von Schwachstellen sind:
- Programmierfehler: Probleme in der Art und Weise, wie Entwickler ihren Quellcode schreiben, können Angriffe begünstigen. So kann beispielsweise eine unzureichende Datenvalidierung es Angreifern ermöglichen, Schadcode in eine Anwendung einzuschleusen, um Zugriff auf sensible Daten zu erhalten oder die Kontrolle über die Anwendung zu gewinnen.
- Verwundbare Komponenten: In eine Anwendung integrierte Komponenten von Drittanbietern, z. B. Open-Source-Bibliotheken oder -Module, können Schwachstellen enthalten, die Angriffe ermöglichen.
- Konfigurationsfehler: Fehler in der Konfiguration von Anwendungen oder ihrer Host-Umgebung können zu Angriffen führen. Beispielsweise können zu großzügige Zugriffsrechte es Benutzern ermöglichen, auf Daten in einer Anwendung zuzugreifen, die sie nicht sehen sollten.
Je nach Art der Schwachstelle und der betroffenen Anwendung oder Daten kann das von Software-Schwachstellen ausgehende Risiko variieren.
Eine Schwachstelle etwa, die remote ausgenutzt werden kann (im Gegensatz zu einem physischen Zugriff auf eine lokale Umgebung), wird in der Regel als ernstes Risiko eingestuft.
Eine Schwachstelle, die nur unter bestimmten Bedingungen ausgenutzt werden kann, stellt ein geringeres Risiko dar als eine Schwachstelle, die in jeder beliebigen Umgebung ausgenutzt werden kann.
Und das Risiko einer Schwachstelle, die eine Denial-of-Service-Attacke ermöglicht, ist viel größer, wenn kritische Systeme bedroht werden (z. B. ein medizinisches IoT-Gerät), als wenn es sich um eine unkritische Softwareanwendung handelt.
5 Schritte, wie Sie Schwachstellen richtig managen
Um sich vor Software-Sicherheitslücken zu schützen, ist ein schrittweises Vorgehen gefragt, mit dem Sie Schwachstellen auf allen Ebenen Ihres Software-Stacks finden, bewerten und beheben können. Im Idealfall wird dieser Prozess durch Tools automatisiert, die Schwachstellen sowohl vor als auch nach dem Einsatz der Software in der Produktion finden, bewerten und beheben.
Schritt 1: Identifizieren von Softwarekomponenten
Scannen Sie Ihre Software mit Hilfe von Software Composition Analysis Tools, um festzustellen, welche Komponenten sie enthält. Ein umfassender Scan ist deshalb wichtig, weil Ihre Anwendungen möglicherweise Abhängigkeiten enthalten, wie z. B. Open-Source-Module, die nicht dokumentiert sind und die Sie sonst vielleicht nicht entdecken würden.
Um möglichst viele potenzielle Risiken zu erkennen, sollten Sie sowohl den Quellcode der Anwendung (sofern verfügbar) als auch die Binärdateien der Applikation, wie Container-Images oder ausführbare Dateien, scannen.
Außerdem sollten Sie Scans in mehreren Phasen des Lebenszyklus der Anwendungsentwicklung durchführen: Scannen Sie zunächst den Quellcode. Als Nächstes scannen Sie die Binärdateien der Anwendung, nachdem Sie sie kompiliert haben, aber bevor Sie sie bereitstellen. Und schließlich sollten Sie Anwendungen in der Produktion scannen, um eine dritte Sicherheitsebene gegen potenzielle Risiken zu schaffen. CI/CD-Software-Plattformen können Ihnen dabei helfen, automatische Scans in jeder Phase des Softwarebereitstellungsprozesses zu ermöglichen.
Schritt 2: Zuordnung von Komponenten zu Schwachstellen
Nachdem Sie die Softwarekomponenten identifiziert haben, scannen Sie Schwachstellendatenbanken, um festzustellen, welche Komponenten bekannte Schwachstellen aufweisen und ob diese Schwachstellen die spezifische Version der von Ihnen verwendeten Softwarekomponente betreffen.
Sie können diesen Prozess erheblich vereinfachen, indem Sie einen Schwachstellenscanner wie JFrog Xray verwenden, der tiefe, iterative Scans durchführt, um Schwachstellen auf allen Ebenen einer Anwendung und ihrer Abhängigkeiten zu finden.
Schwachstellenscan mit JFrog
Schritt 3: Durchführen statischer Anwendungssicherheitstests
Mit statischen Anwendungssicherheitstests (Static application security testing, kurz SAST) können Sie Schwachstellen im Quellcode aufspüren, den Sie selbst entwickelt haben (also Ihren First-Party-Quellcode). Indem Sie den Quellcode Ihres Unternehmens scannen, können Sie potenzielle Schwachstellen identifizieren, die Ihre Entwickler versehentlich in eine Anwendung eingebaut haben.
Schritt 4: Durchführen dynamischer Anwendungssicherheitstests
Während durch das Scannen von Quellcode und Binärdateien nach externen Komponenten viele Schwachstellen aufgedeckt werden können, bleiben bestimmte Risiken – insbesondere solche, die von eigenem, proprietären Code herrühren, der nicht in Schwachstellen-Datenbanken erfasst wird – mit diesen Ansätzen wahrscheinlich unentdeckt. Viele Schwachstellen-Scanner konzentrieren sich auf eine Software Composition Analysis (SCA) und erkennen so nur Schwachstellen, die bereits in öffentlich zugänglichem Quellcode oder in Anwendungsabhängigkeiten identifiziert und gemeldet wurden.
Um andere Arten von Risiken zu identifizieren, sollte deshalb auch Dynamic Application Security Testing (DAST, ) eingesetzt werden. DAST-Tools führen Tests durch, die Sicherheitslücken oder Schwachstellen aufdecken sollen, indem sie mit laufenden Anwendungen interagieren. Beispielsweise kann ein DAST-Tool bösartige Befehle in eine Anwendung injizieren, um zu prüfen, ob die Anwendung diese blockiert.
Schritt 5: Scannen der Umgebungskonfigurationen
Wie bereits erwähnt, liegen einige Schwachstellen nicht in der Anwendung selbst, sondern in der Art und Weise, wie die Anwendung (oder die Umgebung, in der sie läuft) konfiguriert ist. Sie können diese Schwachstellen mit Hilfe von Tools zur Konfigurationsprüfung aufspüren, die Anwendungskonfigurationen automatisch scannen und Sie auf unsichere Einstellungen aufmerksam machen.
Eine solche Konfigurationsprüfung könnte zum Beispiel eine Firewall-Konfiguration markieren, die jedem Internetnutzer Zugriff auf eine Anwendung ermöglicht, die nur für ein privates Netzwerk zugänglich sein sollte.
Erfahren Sie mehr über die Zero-Day-Schwachstellen
Was ist eine Zero-Day-Lücke?
Log4shell Zero-Day Vulnerability – bekannt als ” Log4j Vulnerability”
SpringShell Zero-Day Vulnerability