Sicherheitslücken verstehen
Die Verwaltung von Sicherheitslücken ist nicht nur schwierig, weil Schwachstellen schwer zu entdecken sein können, sondern auch, weil es so viele verschiedene Arten von Sicherheitslücken gibt. Zum Glück gibt es Tools und Techniken, die sich mit den verschiedenen Arten von Schwachstellen befassen, die in jeder Ebene Ihres Technologie-Stacks lauern können.
Was ist überhaupt eine Sicherheitslücke?
Eine Sicherheitslücke ist ein Fehler oder eine Schwachstelle in einer IT-Ressource, die von Angreifern ausgenutzt werden könnte.
Wir werden weiter unten näher darauf eingehen, dass solche Fehler oder Schwachstellen verschiedene Formen annehmen können. Eine Sicherheitslücke könnte ein Kodierungsfehler im Quellcode einer Anwendung sein, der für einen Buffer Overflow-Angriff genutzt werden kann. Es kann sich um ein Versehen der Entwickler handeln, die vergessen haben, Eingaben innerhalb einer Anwendung ordnungsgemäß zu validieren, wodurch Injektionsangriffe ermöglicht werden. Es könnte sich um eine Fehlkonfiguration innerhalb einer Access Control Policy oder einer Netzwerkkonfiguration handeln, die externen Akteuren Zugriff auf sensible Ressourcen gewährt.
Sicherheitslücke vs. Exploit vs. Bedrohung vs. Breach
Manchmal werden die Begriffe “Sicherheitslücke“, “Exploit“, “Bedrohung” und “Breach“ zusammen oder auch synonym verwendet. Doch obwohl diese Begriffe eng miteinander verwandt sind, beziehen sie sich jeweils auf unterschiedliche Aspekte innerhalb der Kette an Ereignissen, die zu einem Sicherheitsvorfall werden können:
- Eine Sicherheitslücke (“Security Vulnerability”) ist eine Schwachstelle, die potenziell für einen Angriff ausgenutzt werden kann.
- Ein Exploit ist die Methode, mit der sich ein Angreifer eine solche Schwachstelle zu Nutze macht. Das könnte zum Beispiel das Einschleusen bösartigen Codes sein.
- Eine Bedrohung („Threat“) liegt dann vor, wenn gewisse Bedingungen gegeben sind, damit ein solcher Exploit auch funktioniert. Etwa kann es sein, dass nur dann eine Bedrohung besteht, wenn die Software mit der Schwachstelle auf einem bestimmten Betriebssystem läuft oder wenn Angreifer auch Zugang zu einer gewissen Schnittstelle haben.
- Ein Breach (im Deutschen machmal „Sicherheitsverstoß“) ist dann ein aktiver Angriff. Ein solcher Breach findet dann statt, wenn Bedrohungsakteure einen Exploit einer Sicherheitslücke erfolgreich durchführen können.
Da Sicherheitslücken die Grundlage für die oben beschriebene Abfolge von Exploits, Threats und Breaches bilden, ist das Aufspüren von Schwachstellen die beste Möglichkeit, um Sicherheitsrisiken im Keim zu ersticken. Wenn Sie die Schwachstelle beseitigen, beseitigen Sie auch die Exploits, Bedrohungen und potenziellen Sicherheitsverstöße, die sich aus der Schwachstelle ergeben können.
Die wichtigsten Formen von Sicherheitslücken
Es gibt zwar eine Vielzahl von Sicherheitslücken, die in einer IT-Umgebung auftreten können, aber die meisten Schwachstellen lassen sich in eine der folgenden vier Kategorien einordnen:
- Malicious Code: Code, der von bösartigen Akteuren in die Codebasis eingebracht wird, wie z.B. Malware, kann dazu eingesetzt werden, unbefugten Zugriff auf Systeme zu erhalten oder die Kontrolle über Anwendungen zu übernehmen.
- Fehlkonfigurationen: Konfigurationsfehler, wie z.B. eine IAM-Richtlinie (IAM – Identity and Access Management) für die Cloud, die öffentlichen Zugriff auf sensible Daten ermöglicht, können zu Sicherheitsverletzungen führen.
- Programmierfehler: Fehler bei der Programmierung oder Nachlässigkeiten können zu Exploits führen. Ein Beispiel wäre das Versäumnis, eine Eingabevalidierung zu starten, um Eingaben in Anwendungen zu vermeiden, die darauf abzielen, unbefugten Zugriff zu erlangen.
- Fehlende Verschlüsselung: Daten, die nicht ordnungsgemäß verschlüsselt werden, sei es in einer Datenbank oder einem Speicher oder aber bei der Datenübertragung über ein Netzwerk, sind anfällig für Angriffe
Wie sich Sicherheitslücken in Anwendungen erkennen lassen
Da es viele Arten von Sicherheitsschwachstellen gibt, braucht es einen differenzierten Ansatz, um sie zu erkennen. Es gibt verschiedene Techniken, die bei der Aufdeckung von Sicherheitsrisiken helfen.
SAST: Static Application Security Testing
Statische Anwendungssicherheitstests (Static Application Security Tests, SAST) gehört zu den Sicherheitstests, die den Quellcode und (in einigen Fällen) den Binärcode auf Schwachstellen untersuchen. In der Regel wird bei der SAST nach “Signaturen” für Schwachstellen gesucht, z.B. nach Abhängigkeiten, die als unsicher bekannt sind.
DAST: Dynamic Application Security Testing
Dynamische Anwendungssicherheitstests (Dynamic Application Security Analysis, DAST) identifizieren Schwachstellen, indem sie automatische Angriffe auf Anwendungen innerhalb von Testumgebungen starten. Erfolgreiche Angriffsversuche zeigen so Schwachstellen innerhalb der Anwendung auf.
Penetrationstests
Bei Penetrationstests versuchen Tester manuell, Schwachstellen zu identifizieren und auszunutzen. Penetrationstests unterscheiden sich von DAST insofern, als bei Penetrationstests Sicherheitsexperten aktiv nach Schwachstellen suchen, während DAST auf der automatischen Emulation von Angriffen beruht.
Image-Scanner
Image-Scanner wie JFrog Xray erkennen Schwachstellen in Software, nachdem diese kompiliert oder als Paket bereitgestellt wurde. Image-Scanner sind daher hilfreich, um verwundbare Abhängigkeiten oder Konfigurationen innerhalb eines Anwendungspakets zu identifizieren, die zu Angriffen einladen könnten. Ein Image-Scanner kann zum Beispiel ein Container-Image überprüfen, um festzustellen, ob eine der Abhängigkeiten des Images Sicherheitslücken enthält.
Konfigurations-Audits
Tools zur Auditierung von Konfigurationseinstellungen werden in der Regel verwendet, um die Konfiguration der Infrastruktur zu überprüfen, auf der Anwendungen gehostet werden, und nicht die Anwendungen selbst (obwohl in einigen Fällen Konfigurationsaudits an Konfigurationsdateien durchgeführt werden können, die Anwendungseinstellungen definieren).
Durch ein Konfigurationsaudit einer Cloud-Umgebung könnten zum Beispiel unsichere IAM-Regeln oder Netzwerkkonfigurationen aufgedeckt werden. Alternativ könnte ein Konfigurationsauditor eine Kubernetes-Umgebung scannen, um Fehlkonfigurationen in Kubernetes-Sicherheitskontexten, Netzwerkrichtlinien oder andere Einstellungen zu erkennen, die den Sicherheitsstatus einer Umgebung schwächen.
Sie möchten mehr über bestimmte Sicherheitslücken erfahren?
Log4j Vulnerability (also knows ad Log4Shell)
Spring4Shell Vulnerability (Also known as SpringShell)
Zero-Day Schwachstellen
Was sind CVEs?