Sicherheit Fehlkonfiguration
Der Begriff "Sicherheitsfehlkonfiguration" ist eine Art Oberbegriff für allgemeine Schwachstellen, die nicht durch fehlerhaften Code, sondern durch die Konfigurationseinstellungen einer Anwendung verursacht werden. Es ist ein weitreichendes Thema und hängt stark von Faktoren wie Ihrem Technologie-Stack ab.
Oft ist die Behebung dieser Probleme etwas scheinbar Einfaches, wie die Änderung einer Konfigurationsdatei oder sogar einer einzigen Codezeile, aber die Auswirkungen und Folgen dieser Schwachstellen können schwerwiegend sein.
Werfen wir einen Blick auf einige der folgenden Kategorien.
Kategorien
Webserver
Eine klassische Fehlkonfiguration auf Webservern ist die Aktivierung des Directory Listing.
Die Aktivierung des Directory Listing hat zwar oft wenig bis keine direkten Auswirkungen, macht es einem Angreifer aber leicht, andere Fehler zu entdecken, die ebenfalls existieren könnten. Dabei kann es sich um Seiten handeln, die absichtlich ausgeblendet wurden, um Sicherungsdateien und andere ähnliche Dinge.
Es ist erwähnenswert, dass all diese Dinge auch von Natur aus schlechte Praktiken sind und als Sicherheit durch Unklarheit gelten.
Die Verzeichnisauflistung ist einfach zu deaktivieren und erhöht die Verteidigung in der Tiefe, indem sie es einem Angreifer erschwert, den Host aufzulisten, um potenzielle Angriffsvektoren gegen ihn zu finden.
Rahmenwerke
Debug-Modus
Die meisten Frameworks bieten einen "Debug"-Modus für Entwickler. In diesem Modus werden u. a. normalerweise Stacktrace-Details angezeigt, wenn eine unbehandelte Ausnahme auftritt. Einige Frameworks zeigen neben dem Stacktrace sogar Codeschnipsel an. Dies kann bei der Entwicklung sehr hilfreich sein, kann aber auch Angreifern viele Informationen liefern, auf die sie eigentlich keinen Zugriff haben sollten.
Überwachung der Endpunkte
Viele Frameworks verfügen auch über eine Reihe von Endpunkten, die für die Überwachung der Anwendung aktiviert werden können, sei es in einer Produktions- oder einer Test-/Entwicklungsumgebung.
Dazu können gehören:
- Metriken (Prometheus)
- Protokolle
- Informationen zur Umwelt
- Pfad/Url-Zuordnungen
Auch wenn diese Informationen in der Regel nicht sensibel sind, können sie doch Details enthalten, die potenziellen Angreifern helfen, Ihre Anwendung besser zu verstehen. Natürlich können Ihre Umgebung oder Protokolle tatsächlich sensible Informationen enthalten. Daher ist es wichtig, darauf zu achten, was sichtbar sein und genutzt werden könnte, wenn neugierige Augen darauf stoßen.
Der Unterschied zwischen Produktions- und Nicht-Produktionsumgebungen
Häufig wird der Fehler begangen, die Richtlinien wie die Deaktivierung von Verzeichnisauflistung, Debug-Modus und Debug-Endpunkten in Entwicklungs-/Testumgebungen nicht zu befolgen, sondern dies nur in Produktionsumgebungen zu tun. Der Grund dafür ist, dass diese nicht produktiven Systeme zum Testen gedacht sind und es wichtig ist, die von diesen Funktionen bereitgestellten Informationen zu erhalten.
Diese Mentalität ist jedoch ein Irrglaube. Angreifer sind nach wie vor in der Lage, Informationen von nicht produktiven Systemen auszuspähen und offenzulegen und dann die im Testsystem gesammelten Informationen zu nutzen, um Ihr Produktionssystem anzugreifen. Es ist auch nicht unüblich, dass Unternehmen Kopien ihrer Produktionsdatenbank in Testsystemen verwenden, was das Risiko noch weiter erhöht.
XXE
Eine Art von Sicherheitsfehlkonfiguration, die sehr schwerwiegend ist, sind XML External Entities (XXE).
Dies tritt auf, wenn Sie aus nicht vertrauenswürdigen Quellen mit aktivierter Entitätsauflösung parsen, was in der Vergangenheit der Fall war. XXE kann unter anderem zu willkürlichem Lesen von Dateien und Server-seitiger Request Forgery führen.
Im folgenden Beispiel finden Sie weitere Einzelheiten und ein einfaches Beispiel für dieses Thema.