LIMESODA Blog

Sicherheit für Web-Anwendungen

Vor kurzem war eine Vielzahl an Web-Anwendungen von einem Sicherheitsfehler in OpenSSL („Heartbleed“) betroffen. Nachdem mittlerweile viele Webhosting-Provider und Webseitenbetreiber die OpenSSL Installationen aktualisiert haben, sowie Zertifikate getauscht und ihre Benutzer um Passwortwechsel aufgerufen haben, bleibt die Frage: Wie sicher sind Web-Anwendungen?

Bestandteile einer Web-Anwendung

Eine dynamische Web-Anwendung besteht aus mehreren Teilen:
Auf einem physischen oder virtuellen Server laufen – je nach Hosting-Variante – eine oder mehrere Websites. Diese werden von einem Web-Server, der die Anfragen aus dem Internet entgegen nimmt, verarbeitet. Um eine Webseite auszuliefern, sind meist Anfragen an den Datenbankserver notwendig, außerdem wird dazu der Quellcode der Web-Anwendung (z.B. eine Skriptsprache wie PHP, ausgeführt). Ist die Webseite ausgeliefert, können auf dem Gerät des Benutzers client-seitig, z.B. über JavaScript, noch weitere Aktionen ausgeführt werden. Je nach Größe und Konfiguration der Web-Anwendung kommen noch weitere Komponenten zur Verarbeitung der Anfragen hinzu: Schnittstellen, Proxy-Server, Caching- und Performance Module etc.

All diese Bestandteile bedienen sich unterschiedlichen Komponenten (Frameworks, Erweiterungen,…) um die gewünschten Anfragen entsprechend abzuarbeiten. Es ist also notwendig, nicht nur die Web-Anwendung selbst, sondern auch die Gesamtheit dieses Systems zu betrachten, um eine Web-Anwendung sicher zu gestalten.

Die größten Risiken für Web-Anwendungen

Diese Risiken für Web-Anwendungen werden regelmäßig vom Open Web Application Security Project (OWASP) herausgegeben. OWASP ist eine Community mit dem Ziel, Unternehmen und Organisationen bei Entwicklung, Kauf und Wartung zu unterstützen. Zuletzt wurden die Risiken 2013 ermittelt und veröffentlicht.

1. Injection

Durch das Einschleusen von Code oder Kommandos kann ein Angreifer die Eingabe manipulieren, und auf diese Weise unerlaubte Befehle in der Web-Anwendung oder dem zugrunde liegenden System ausführen oder, auf nicht für ihn bestimmte, Daten zugreifen.

2. Fehler in Authentisierung und Session-Management

Unzureichende Mechanismen, die die Authentizität eines Benutzers und seiner zugehörigen Sitzung feststellen sollen, ermöglichen es Angreifern, Passwörter, Schlüssel oder die gesamte Sitzung eines Benutzers zu übernehmen und unter dessen Identität Aktionen auszuführen.

3. Cross-Site Scripting (XSS)

XSS bezeichnet das entgegennehmen und ausliefern von nicht validierten Eingaben an den Browser. Ein Angreifer kann auf diese Weise Schadcode im Browser des Benutzers ausführen.

4. Unsichere direkte Objektreferenzen

Durch mangelnde Überprüfung von Objektreferenzen ist es einem Angreifer möglich, unautorisiert auf nicht für ihn bestimmte Daten Zugriff zu erlangen.

5. Sicherheitsrelevante Fehlkonfiguration

Verschiedene Bestandteile, auf denen eine Web-Anwendung aufbaut (Module, Frameworks, Anwendungen, Erweiterungen), sind meist nicht mit einer sicheren Grundkonfiguration ausgestattet. Diese Bestandteile müssen, um dauerhaft eine sichere Nutzung zu gewährleisten, entsprechend konfiguriert und regelmäßig aktualisiert werden.

6. Verlust der Vertraulichkeit sensibler Daten

Sensible Daten sind während der Verarbeitung oder bei dauerhafter Speicherung nicht ausreichend geschützt (z.B. durch Verschlüsselung). Angreifer können die Daten somit leicht stehlen oder verändern.

7. Fehlerhafte Autorisierung auf Anwendungsebene

Viele Web-Anwendungen überprüfen die Rechte eines Benutzers, bevor sie ihm spezielle Funktionen zur Verfügung stellen. Ebenso wichtig ist es, auch serverseitig bei der Ausführung einer Aktion, diese Rechte nochmals zu überprüfen.

8. Cross-Site Request Forgery (CSRF/XSRF)

Mit der Identität des Benutzers werden – durch manipulierte Webseiten und Links – unbeabsichtigt und unbemerkt Aktionen auf anderen Webseiten ausgeführt. Die Identität eines Benutzers wird somit ausgenutzt, um mit dessen Rechten zusätzliche Anfragen auszuführen.

9. Benutzen von Komponenten mit bekannten Schwachstellen

Programme, Module und andere Komponenten laufen – meist aus dem Grund der einfachen Einrichtung – mit vollen Rechten auf einem Server. Wird eine Schwachstelle einer Komponente ausgenutzt, können auf diesem Weg viele weitere Angriffe über andere Komponenten ermöglicht werden.

10. Ungeprüfte Um- und Weiterleitungen

Webseiten leiten ihre Benutzer oft auf andere interne oder externe Webseiten um. Ist keine oder eine unzureichende Überprüfung der Weiterleitungen vorhanden, können Angreifer den Benutzer auf Phishing-Seiten oder Seiten mit Schadcode umleiten.

Wie kann ich die Sicherheit meiner Web-Anwendung gewährleisten?

Schon während der Entwicklung („Programmierung“) achten wir darauf, die Einfallstore für die verschiedenen Angriffe zu minimieren. Abgesehen von diesen Maßnahmen, empfehlen wir auch folgende Punkte:

Aktuell halten

Passwörter & Benutzeraccounts

Geben Sie nicht zu viel preis!

Verwenden Sie SSL

Verschlüsseln Sie die Datenübertragung zwischen den Besuchern Ihrer Internetseite und Ihrem Server mit SSL.

Grundkonfiguration

Erweiterungen

Vorsicht ist geboten: Jede Erweiterung bringt potentiell zusätzliche Schwachstellen/Fehler (nicht nur aus sicherheitstechnischer Sicht) mit sich. Nicht jede frei verfügbare, kostenlose Extension ist auch von einem guten Programmierer entwickelt worden (obwohl es umgekehrt unglaublich tolle, kostenfreie Erweiterungen von sehr guten Programmieren gibt!).

Auf dem Server

Überwachen & loggen

Mit Monitoring und Logging lassen sich einige Angriffe ggf. frühzeitig erkennen. Die Logfiles liefern weitere Informationen, um Maßnahmen ergreifen zu können.

Trennen Sie sich von Altem

Löschen Sie…

Backup

Für den Fall der Fälle: Erstellen Sie regelmäßige Backups ihrer Web-Anwendung (Dateien, Verzeichnisse und Datenbanken).

Aufwendig (und teuer)

Und jetzt?

Viele der oben genannten Maßnahmen führen wir im Rahmen der Entwicklung unserer Web-Projekte standardmäßig bzw. in Rücksprache mit dem Kunden durch.
Einige Maßnahmen bedürfen allerdings zusätzlichem Konfigurationsaufwand oder der Unterstützung durch den Hosting-Provider.

Fragen Sie mich!

Die mobile Version verlassen