OWASP06 - Vulnerable and Outdated Components
Einleitung - Welche Fehler machen ein System verwundbar?
Fast alle Anwendungen verwenden in irgendeiner Form third-party Komponenten. Dies ist oftmals auch sinnvoll, um Zeit und Arbeit einzusparen. Durch die Benutzung dieser externen Komponenten können aber auch Probleme entstehen. Da nicht immer die neusten Versionen verwendet werden, können Sicherheitsschwachstellen weiterhin existieren, die von Angreifern genutzt werden können. Betrachtet man Statistiken, so wird man feststellen, dass sehr oft Open-Source-Software mit bekannten Schwachstellen genutzt wird. Es gibt drei Hauptgründe, die dazu führen, dass ein System verwundbar wird:
- Nicht zu wissen, ob die Versionen der Komponenten aktuell sind (Client- und Serverseitig)
- Veraltete oder nicht mehr unterstützte Software verwenden
- Fehlende regelmäßige Tests auf Schwachstellen
Im Folgenden wird darauf eingegangen, wie Attacken mit Hilfe solcher Komponenten funktionieren und welche Maßnahmen getroffen werden können, um Schwachstellen zu beseitigen.
Wie funktionieren die Attacken?
Damit Angriffe ausgeführt werden können, sind Schwachstellen in der Software nötig. Die Entstehung von derartigen Schwachstellen kann verschiedene Ursachen haben, zum einen können sie versehentlich(fehleranfällige Programmierung) entstehen, zum anderen kann auch vorsätzliches Handeln(Einbau einer Backdoor) dafür sorgen, dass es Schwachstellen gibt. Da die meisten Anwendungen Komponenten von Dritten einbeziehen und diese Komponenten oftmals auch fehleranfällig sind, gibt es einige Beispiele, bei welchen die vorhandenen Schwachstellen ausgenutzt wurden.
Beispiele aus der Vergangenheit:
-
Apache Struts 2 ist ein Framework für Java-Anwendungen, bei welchem eine Remote-Code-Execution-Schwachstelle festgestellt wurde, diese Schwachstelle konnten Angreifer ausnutzen, um beliebige Befehle oder Code auf dem Zielcomputer beziehungsweise dem Zielprozess ausführen. Die Schwachstelle wurde als sie entdeckt wurde direkt gepatched, aber Systeme, die veraltete Versionen verwenden, sind weiterhin betroffen.
-
Heartbleed bezeichnet einen Bug in der SSL/TLS Library OpenSSL. Das ursprüngliche TLS Heartbeat Feature wurde eigentlich entwickelt, um zu prüfen, ob noch eine Verbindung zum Zielsystem besteht. Dies geschieht, indem der Client eine TLS Verbindung aufbaut und einen Heartbeat Request mit 5000 Byte übermittelt. Der Server prüft, ob der Client dazu berechtigt ist diesen Heartbeat anzufordern und schickt in dem Fall die 5000 Byte Daten zurück. Durch einen Programmierfehler ist es allerdings möglich beim Heartbeat Request das Längenfeld auf 5000 Byte zu setzen, aber nur ein Byte zu schicken. Da der Server nicht prüft, ob er tatsächlich 5000 Byte erhalten und gespeichert hat, schickt er 5000 Byte Daten zurück, wobei auf Grund der fehlenden gesendeten Daten auf andere Daten zugegriffen werden kann. Durch diesen schwerwiegenden Programmierfehler können Private Keys, User Accounts und Passwörter ermittelt werden, welche dann wiederum weiter genutzt werden können. Die folgende Grafik veranschaulicht die Funktionsweise nochmal genauer.
Wie kann man sich gegen OWASP A06 schützen?
Um der Verwendung veralteter Komponenten vorzubeugen ist es in erster Linie wichtig, sich bewusst zu sein, welche Sicherheitslücken die verwendeten Komponenten haben, denn nur dann können sie auch aktualisiert/behoben werden. Hierzu kann ein Patch-Management-Prozess eingerichtet werden. Er sollte automatisiert sein, um zuverlässig dauerhaften Schutz zu gewährleisten. Hierbei sollte auf einige Stolperfallen geachtet werden, so muss z.B. der Prozess selbst jederzeit auf dem aktuellen Stand sein und fehlerfrei arbeiten sowie nach jeder Aktualisierung geprüft werden, ob automatische Updates Inkompatibilitäten und dadurch weitere Probleme verursachen. Um die Administratoren und Entwickler an dieser Stelle zu unterstützen, existieren verschiedene Tools für viele Anwendungsfälle und Sprachen. Neben den kontinuierlichen Updates aller Komponenten empfiehlt OWASP das Durchlaufen folgender Schritte durch den Prozess, um bestmögliche Erkennungen zu gewährleisten:
- Monitoring darüber, welche Komponenten in welcher Version verwendet werden
- Entfernen nicht benötigter Komponenten, um die Zahl der zu pflegenden Komponenten niedrig und übersichtlich zu halten
- Beziehen aller Komponenten aus vertrauenswürdigen Quellen
- Virtuelle-Patches für nicht mehr unterstützte Komponenten bereitstellen, um diese zu monitoren und ggf. Angriffe zu detektieren/zu unterbinden
Zusammenfassung
OWASP A06 kann schnell zu einem nicht zu unterschätzenden Problem werden, das jedes Entwicklerteam treffen und wie die Beispiele zeigen zu schwerwiegenden Konsequenzen führen kann. Jedoch ist dies auch eine Problemklasse, der man sich sehr gut bewusst sein und gegen sie vorgehen kann, um unnötige Risiken zu vermeiden.