OWASP05 - Security Misconfiguration
Einführung
Den 5. Platz der von OWASP benannten kritischsten Sicherheitsrisikos von Webanwendungen belegt die „Security Misconfiguration". Die Security Misconfiguration beschreibt die Fehlkonfiguration von Anwendungen, die im Application-Stack einer Web-Anwendung liegen, das kann z.B. eine Datenbank oder der Webserver sein. Vor allem beim nicht deaktiviertem oder neu konfigurierten Default-Account ist diese Schwachstelle sehr einfach ausnutzbar. Dieses Risiko ist über die letzten Jahre präsenter geworden, ein Grund dafür ist der vermehrte Wechsel in stark konfigurierbare Anwendungen.
Sicherheitslücken, die von diesem Sicherheitsrisiko umfasst werden, sind:
- Fehlende Absicherung von des Application-Stacks und die fehlende oder fehlerhafte Konfiguration von Rechten auf Cloudservices
- Aktivierte/ installierte Features, die nicht verwendet werden bzw. nicht benötigt werden
- Default Accounts, die noch aktiviert sind oder nicht neu konfiguriert wurden
- Fehlermeldungen, die zu viel über das System preisgeben
- Neuste Sicherheitsfeatures werden nicht aktiviert oder konfiguriert
- Sicherheitseinstellungen des Servers, Frameworks u.Ä. sind nicht korrekt konfiguriert
- Die Security-Header und Richtlinien des Servers sind nicht ausreichend stark konfiguriert oder fehlen gänzlich
- Die Anwendung ist nicht auf dem neusten Stand oder verwundbar
Gegenmaßnahmen
- Eine einfach wiederholbare Sicherheits-Konfigurationsroutine, die wenn möglich sogar automatisiert werden sollte.
- Entwicklungs-, Test- und Produktionssysteme/Server sollten die gleichen Sicherheitseinstellungen besitzen, aber unterschiedliche Log-In Daten verwenden
- Das System mit dem Verzicht auf der Installation von unnötigen Features und Frameworks möglichst schlank halten
- Die Instandhaltung der Security (Überprüfung und Aktualisierung der Sicherheitskonfiguration gemäß der Sicherheitsbenachrichtigungen) mit in den Update-/ Patch-Prozess nehmen.
- Überprüfung der Rechte auf Cloudspeicher
- Unterteilung der Anwendung mittels Segmentation oder die Unterteilung in Container
- Verwendung von Sicherheitsrichtlinien bei der Kommunikation mit Nutzern
- Automatisierte Tests für die Überprüfung der Sicherheitsmaßnahmen
Beispiele für einen Angriff
Szenario 1: Der Angreifer erhält durch einen fehlkonfigurierten HTTPS-Header die Information, welcher Webserver verwendet wird und schaut nach den Log-In-Daten für den Default-Account, falls dieser vorhanden ist kann der Angreifer möglicherweise das ganze System kompromittieren.
Szenario 2: Der Anwendungsserver wird mit Beispielanwendungen geliefert, die nicht vom Produktionsserver entfernt wurden. Diese Beispielanwendungen weisen bekannte Sicherheitslücken auf, die Angreifer verwenden, um den Server zu kompromittieren. Wenn eine dieser Anwendungen die Admin-Konsole ist und die Standardkonten nicht geändert wurden, meldet sich der Angreifer mit Standardpasswörtern an und übernimmt.
Szenario 3: Die Verzeichnisauflistung ist auf dem Server nicht deaktiviert. Ein Angreifer stellt fest, dass er Verzeichnisse einfach auflisten kann. Der Angreifer findet und lädt die kompilierten Java-Klassen herunter, die er dekompiliert und zurückentwickelt, um den Code anzuzeigen. Der Angreifer findet dann eine schwerwiegende Zugriffskontrolllücke in der Anwendung.
Szenario 4: Die Konfiguration des Anwendungsservers erlaubt detaillierte Fehlermeldungen, z.B. Stack-Traces, die an die Benutzer zurückgegeben werden. Dadurch werden möglicherweise sensible Informationen oder zugrunde liegende Fehler wie Komponentenversionen, die bekanntermaßen anfällig sind, offengelegt.
Szenario 5: Ein Cloud-Dienstanbieter verfügt über standardmäßige Freigabeberechtigungen, die von anderen CSP-Benutzern für das Internet geöffnet werden. Dies ermöglicht den Zugriff auf sensible Daten, die im Cloud-Speicher gespeichert sind.
Begriffserklärungen
Stack-Trace: Eine Aufrufhierarchie der einzelnen Prozesse oder Funktionen, die hilft die Ursache für auftretende Fehler zu finden.
Beispiel:
Exception in thread "main" java.lang.IllegalStateException: A book has a null property
at com.example.myproject.Author.getBookIds(Author.java:38)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
Caused by: java.lang.NullPointerException
at com.example.myproject.Book.getId(Book.java:22)
at com.example.myproject.Author.getBookIds(Author.java:36)
... 1 more
Security-Header: Teile des HTTPS-Headers, der wiederum ein Teil der HTTSP-Response ist. Die Security-Header sorgen dafür, dass einzelne Sicherheitsfeatures aktiviert werden (Cross-Site-Scripting, Einbettung der Seite).
Content Security Policy (CSP): Ein Security-Header, der das Laden von Ressourcen wie z.B. JavaScripts beschränkt.
Application-Stack: Die Menge der Anwendungen einer (Web-)Applikation. Im Falle einer Web-Applikation könnten ein PHP-Interpreter, eine Datenbank und ein Web-Server zum Application-Stack gehören.